linux的crontab定時服務備份mysql資料

沉默王二發表於2015-11-03
版權宣告:歡迎轉載,請註明沉默王二原創。 https://blog.csdn.net/qing_gee/article/details/49506313

利用Linux的crontab定時服務備份mysql資料。

一、庫檔案備份

庫檔案備份,我建議一週一次(當然,我的專案規模一般,然後至於怎麼一週一次,稍候我們再聊了)

#!/bin/bash
date_now=`date +%Y_%m_%d_%H%M%S`
mysqldump -uroot -plixiaoli --flush-logs --master-data=2 maweiqing>/home/backup/${date_now}.sql &&
zip -r /home/backup/${date_now}.zip /home/backup/${date_now}.sql
rm -f /home/backup/${date_now}.sql
  1. 獲取當前日期,作為庫檔案備份的檔名
  2. mysqldump命令對資料庫maweiqing備份到20151030.sql中
  3. zip命令對檔案壓個縮。
  4. rm命令刪除sql檔案

二、二進位制日誌備份

二進位制檔案備份,我建議早晚各一次了。


#!/bin/bash
date_now=`date +%Y_%m_%_d_%H%M%S`
filename=mysql-bin
filesuffix_max=0
filesuffix_lastbutone=0
mysqlpath=/var/lib/mysql/
backuppath=/home/backup/mysqlbinarylog/
mysqladmin -uroot -plixiaoli flush-logs &&
for fname in `ls $mysqlpath`
do
filesuffix=${fname##*.}
isnum=`expr match ${filesuffix} `[0-9][0-9]*$``

if [ $isnum ] && [ $isnum -ne 0 ] && [ $filesuffix -gt $filesuffix_max ]
   then
       filesuffix_lastbutone=$filesuffix_max
       filesuffix_max=$filesuffix
fi
done &&
filefullname=${filename}.${filesuffix_lastbutone}
cp $mysqlpath$filefullname $backuppath &&
zip ${backuppath}${date_now}${filefullname}.zip $backuppath$filefullname &&
echo "done"


1. 注意,二進位制日誌備份,需要mysql開啟二進位制日誌。
2. 其檔案路徑是在/var/lib/mysql/路徑下面。
3. mysqladmin 命令進行二進位制日誌備份。

說到這,我覺得我要提醒你點什麼,以免你照做後出現錯誤來找我(如果你要來找我,我覺得挺樂意的)。

  • 上面兩個檔案列出的路徑,你一定要檢查是否存在,如果不存在,就mkdir一下。
  • zip命令如果在伺服器上沒有安裝的話,我稍候也會告訴你怎麼做的。
  • mysql日誌檔案的事情,我的另一篇文章會說明的,請參見
  • 至於在Linux上怎麼編輯檔案,我想你可以問問“vim”大人。
  • 還有什麼忘記說的?對了,你在看這篇文章之前最好看看mysql配置

這兩個檔案是搞好了,接下來要做什麼?“元芳,你怎麼看?”“大人,你覺得呢?”

三、測試備份

首先,要想讓兩個檔案執行,肯定是要賦予他們靈魂的,不然,怎麼搞。

[root@iZ23gsv94suZ soft]# chmod 700 flushlog_and_copy.sh 
[root@iZ23gsv94suZ soft]# chmod 700 backuplixiaoli.sh 

庫檔案備份

[ot@iZ23gsv94suZ soft]# sh backuptiangong.sh 
mysqldump: [Warning] Using a password on the command line interface can be insecure.
  adding: home/backup/2015_10_30_105545.sql (deflated 77%)

[root@iZ23gsv94suZ backup]# ll
total 28
-rw-r--r-- 1 root root 23948 Oct 30 10:55 2015_10_30_105545.zip

二進位制日誌備份

[root@iZsuZ soft]# sh flushlog_and_copy.sh 
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
expr: syntax error
  adding: home/backup/mysqlbinarylog/mysql-bin.000002 (deflated 36%)
done

[root@iZ23gZ soft]# cd /home/backup/mysqlbinarylog/
[root@iZ23 mysqlbinarylog]# ll
total 8
-rw-r--r-- 1 root root 343 Oct 30 10:59 2015_10_30_105901mysql-bin.000002.zip
-rw-r----- 1 root root 167 Oct 30 10:59 mysql-bin.000002

四、加入crontab定時服務

到這呢,你可能需要先看看Linux:時間同步,瞭解一下Linux的自動化服務!

①、先看看crontab服務

[root@iZ23gsv94suZ mysqlbinarylog]# crontab -l
-bash: crontab: command not found

②、安裝crontab

[root@iZ23gsv94suZ mysqlbinarylog]# yum install -y vixie-cron
Loaded plugins: security
Setting up Install Process
Resolving Dependencies
Installed:
  cronie.x86_64 0:1.4.4-15.el6                                                                                                                                                                                                  

Dependency Installed:
  cronie-anacron.x86_64 0:1.4.4-15.el6                                            crontabs.noarch 0:1.10-33.el6                                            exim.x86_64 0:4.72-7.el6                                           

Complete!

③、設定crontab開機啟動

參照Linux:時間同步.

④、將mysql備份檔案加入crontab

crontab -e
30 12,17,23 * * 1-5 sh /home/soft/flushlog_and_copy.sh
40 23 * * 6 sh /home/soft/backuplixiaoli.sh
  1. 週一到週五12點半、17點半、23點半進行二進位制檔案備份
  2. 週六23點40分進行庫檔案備份。

然後,我們crontab -l檢視一下,是否已經命令加入到自動化任務中!


相關文章


感謝您閱讀【沉默王二的部落格】,如果王二的部落格給您帶來一絲幫助或感動,我(也就是王二)將不甚榮幸。
如果您碰巧喜歡,可以留言或者私信我,這將是我鼓搗更多優秀文章的最強動力。


相關文章