如何在生產環境下實現每天自動備份mysql資料庫
www.syncnavigator.cn
SyncNavigator 做資料同步時所支援的資料庫型別:
支援sqlserver 2000-2014所有版本,全相容,和MYsql 4.x 、MYsql 5.x 、MYsql 6.x版本。
來源資料庫和目標資料庫可以版本不同,比如:來源資料庫是sqlserver 2012 目標資料庫是mysql 5.5 ,都是可以的, SyncNavigator 支援跨資料庫版本,無縫傳輸資料。
只需要能連線上資料庫, SyncNavigator 可以安裝在第三方電腦上,來源資料庫和目標資料庫電腦上可以不用安裝程式。
設定好資料庫連線地址,點選測試連線,能臉上來源資料庫和目標資料庫, SyncNavigator 就能進行高效資料傳輸服務
1、描述
我相信很多朋友在工作都都會有這種需求,老闆或領導讓你每天都要備份mysql資料庫,你該如何實現呢,是每天到一定的時間在伺服器上敲一遍mysql的備份命令,還是想寫個指令碼,定時定點的自動備份呢?我相信大家都想讓它自動備份,接下來我通"shell指令碼+定時任務"的方式來實現自動備份mysql資料庫。
2、環境
備份路徑:/data/mysqlbak/
備份指令碼:/data/mysqlbak/mysqlbak.sh
備份時間:每天23:59備份
備份要求:比如備份的資料只保留1周
3、mysqlbak.sh指令碼
#!/bin/bash #資料庫IP dbserver='127.0.0.1' #資料庫使用者名稱 dbuser='root' #資料密碼 dbpasswd='********' #資料庫,如有多個庫用空格分開 dbname='back01' #備份時間 backtime=`date +%Y%m%d` #備份輸出日誌路徑 logpath='/data/mysqlbak/' echo "################## ${backtime} #############################" echo "開始備份" #日誌記錄頭部 echo "" >> ${logpath}/mysqlback.log echo "-------------------------------------------------" >> ${logpath}/mysqlback.log echo "備份時間為${backtime},備份資料庫表 ${dbname} 開始" >> ${logpath}/mysqlback.log #正式備份資料庫 for table in $dbname; do source=`mysqldump -h ${dbserver} -u ${dbuser} -p${dbpasswd} ${table} > ${logpath}/${backtime}.sql` 2>> ${logpath}/mysqlback.log; #備份成功以下操作 if [ "$?" == 0 ];then cd $datapath #為節約硬碟空間,將資料庫壓縮 tar zcf ${table}${backtime}.tar.gz ${backtime}.sql > /dev/null #刪除原始檔案,只留壓縮後文件 rm -f ${datapath}/${backtime}.sql #刪除七天前備份,也就是隻儲存7天內的備份 find $datapath -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1 echo "資料庫表 ${dbname} 備份成功!!" >> ${logpath}/mysqlback.log else #備份失敗則進行以下操作 echo "資料庫表 ${dbname} 備份失敗!!" >> ${logpath}/mysqlback.log fi done echo "完成備份" echo "################## ${backtime} #############################"
指令碼寫好了,你要記得為指令碼加上執行許可權:
#chmod +x /data/mysqlbak/mysqlbak.sh
4、配置定時任務執行指令碼
#crontab -e
59 23 * * * /data/mysqlbak/mysqlbak.sh
引數說明:
格式為 :分 時 日 月 周 命令
59 23 * * * :每天23:59分自動執行指令碼
M: 分鐘(0-59)。每分鐘用*或者 */1表示
H:小時(0-23)。(0表示0點)
D:天(1-31)。
m: 月(1-12)。
d: 一星期內的天(0~6,0為星期天)。
提示:最好你先執行一下指令碼能不能跑通,然後在寫到crontab中,等執行完了,進入/data/mysqlbak/目錄檢視一下有沒有備份檔案,如果有,則表示指令碼執行成功,記得不要搞錯了備份的使用者和密碼。