1、查看磁盤空間情況:
既然是定時備份,就要選擇一個空間充足的磁盤空間,避免出現(xiàn)因空間不足導(dǎo)致備份失敗,數(shù)據(jù)丟失的惡果!
存儲到當(dāng)前磁盤這是最簡單,卻是最不推薦的;服務(wù)器有多塊硬盤,最好是把備份存放到另一塊硬盤上;有條件就選擇更好更安全的存儲介質(zhì);
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 50G 46G 1.6G 97% /
tmpfs 1.9G 92K 1.9G 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/mapper/VolGroup-lv_home 534G 3.6G 503G 1% /home
2、創(chuàng)建備份目錄:
上面我們使用命令看出/home下空間比較充足,所以可以考慮在/home保存?zhèn)浞菸募?/p>
cd /home
mkdir backup
cd backup
3、創(chuàng)建備份Shell腳本:
注意把以下命令中的DatabaseName換為實際的數(shù)據(jù)庫名稱;
當(dāng)然,你也可以使用其實的命名規(guī)則!
vi bkDatabaseName.sh
在bkDatabaseName.sh里編輯一下內(nèi)容
備份指定的數(shù)據(jù)庫
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql
對備份進(jìn)行壓縮:
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz
將/home/backup目錄下所有10天前帶"DatabaseName_"的文件刪除
#!/bin/sh
find /usr/local/backups -mtime +10 -name "*DatabaseName_*" -exec rm -rf {} \;
注意:
把 username 替換為實際的用戶名;
把 password 替換為實際的密碼;
把 DatabaseName 替換為實際的數(shù)據(jù)庫名;
4、添加可執(zhí)行權(quán)限:
chmod u+x bkDatabaseName.sh
添加可執(zhí)行權(quán)限之后先執(zhí)行一下,看看腳本有沒有錯誤,能不能正常使用;
./bkDatabaseName.sh
執(zhí)行完后可以到備份的目錄下去看看備份的文件是否已經(jīng)備份成功
5、添加計劃任務(wù)
檢測或安裝 crontab,
確認(rèn)crontab是否安裝:
執(zhí)行 crontab 命令如果報 command not found,就表明沒有安裝
# crontab
-bash: crontab: command not found
如時沒有安裝 crontab,需要先安裝它,具體步驟請參考:
CentOS下使用yum命令安裝計劃任務(wù)程序crontab
使用rpm命令從CentOS系統(tǒng)盤安裝計劃任務(wù)程序crontab
6、添加計劃任務(wù)
執(zhí)行命令:
crontab -e
使用vi編輯器一樣對計劃進(jìn)行編輯
*/1 * * * * /home/backup/bkDatabaseName.sh
意思是每一分鐘執(zhí)行一次shell腳本“/home/backup/bkDatabaseName.sh”。
7、測試任務(wù)是否執(zhí)行
如果任務(wù)執(zhí)行失敗了,可以通過以下命令查看任務(wù)日志:
tail -f /var/log/cron
輸出內(nèi)容如下:
Sep 30 14:01:01 bogon run-parts(/etc/cron.hourly)[2503]: starting 0anacron
Sep 30 14:01:01 bogon run-parts(/etc/cron.hourly)[2512]: finished 0anacron
Sep 30 15:01:01 bogon CROND[3092]: (root) CMD (run-parts /etc/cron.hourly)
Sep 30 15:01:01 bogon run-parts(/etc/cron.hourly)[3092]: starting 0anacron
Sep 30 15:01:02 bogon run-parts(/etc/cron.hourly)[3101]: finished 0anacron
Sep 30 15:50:44 bogon crontab[3598]: (root) BEGIN EDIT (root)
Sep 30 16:01:01 bogon CROND[3705]: (root) CMD (run-parts /etc/cron.hourly)
Sep 30 16:01:01 bogon run-parts(/etc/cron.hourly)[3705]: starting 0anacron
Sep 30 16:01:01 bogon run-parts(/etc/cron.hourly)[3714]: finished 0anacron
Sep 30 16:15:29 bogon crontab[3598]: (root) END EDIT (root)
注意
- 以上操作完成后根據(jù)不同的提示,有時候會出現(xiàn)備份的數(shù)據(jù)庫文件備份下來了,但是里面的內(nèi)容卻是空的,怎么回事呢,這時候就需要去查看自動任務(wù)執(zhí)行的日志文件了
- 路徑為: /var/spool/mail 下的 root 文件
里面出現(xiàn)這樣一句話 /home/backup/databaseName.sh: line 2: mysqldump: command not found
這是什么意思呢?一些同學(xué)一臉懵逼,別著急,接下來一一解決
有時候安裝好MySQL程序的時候,直接輸入命令mysql或mysqldump會發(fā)現(xiàn)提示命令不存在,這是由于系統(tǒng)默認(rèn)會查找/usr/bin下的命令,如果這個命令不在這個目錄下,當(dāng)然會找不到命令
解決方法:
首先得知道m(xù)ysql命令或mysqldump命令的完整路徑,可以使用find命令查找
find / -name mysql -print
會得到mysql的路徑是:/usr/local/mysql/bin/mysql,然后映射一個鏈接到/usr/bin目錄下,相當(dāng)于建立一個鏈接文件
ln -s /usr/local/mysql/bin/mysql /usr/bin
這樣基本就OK啦。
是不是很簡單,哈哈