mysql自動備份

前言:《mysql自動備份》,在安裝完mysql,需要的就是對mysql進行自動化備份,以免項目運行過程中數據丟失造成不可挽回的後果,那麼這篇文章就來手把手的教你如何進行自動化備份,註意啊,睜大眼睛瞭,哈哈,這可是不可多得的秘密!

經常不經意間就發現文章被扣到各式各樣的網站上面,甚是可惡!
那麼人生何處不爬蟲,爬蟲請標http://blog.csdn.net/qing_gee
見賢思齊焉,見不賢而內自省也!

庫文件備份

庫文件備份,我建議一周一次(當然,我的項目規模一般,然後至於怎麼一周一次,稍候我們再聊瞭)

#!/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

獲取當前日期,作為庫文件備份的文件名 mysqldump命令對資料庫maweiqing備份到20151030.sql中 zip命令對文件壓個縮。 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 

flushlog_and_copy.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

看到瞭吧,文件備份好瞭!既然有zip文件,這說明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

不知道這樣的寫作風格是否符合你的閱讀習慣,如果你覺得還可以,那麼繼續吧!先來看看Linux的自動化服務!

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

先看看crontab有沒有列表

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

什麼?竟然沒有安裝crontab,不過也沒有什麼大不瞭的嘛,安裝下就OK!

[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:時間同步.

將下面這兩個自動化任務加入到crontab中吧!

30 12,17,23 * * 1-5 sh /home/soft/flushlog_and_copy.sh
40 23 * * 6 sh /home/soft/backuplixiaoli.sh

註意,文件的路徑啊。

稍微解釋一下,全憑我一時記憶。

周一到周五12點半、17點半、23點半進行二進制文件備份 周六23點40分進行庫文件備份。

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

最後的最後,請你一定要註意觀察,備份有沒有自動化開始,如果你有麻煩的話,請麻煩我,哈哈!

結語:我要做技術路上的清道夫,為你為我為大傢掃清我遇到的困惑!有沒有發現,我是很有理想的,哈哈!

You May Also Like