轉自:
Mysql 自動備份腳本2 - - ITeye技術網站
http://kangh.iteye.com/blog/2309091
備份方案:
備份主機:192.168.10.11
數據庫服務器:192.168.10.22
備份內容:對mysql服務器中的xxxx和yyyy庫進行遠程備份,每天凌晨2:30執行,每個庫備份為獨立的.sql文件,然后壓縮成.tar.gz的格式,文件名中嵌入執行備份的日期和時刻。
工作准備:
1、確保備份主機與數據庫服務器之間的網絡保持連接通暢,不能有網絡鏈路故障,防火牆等阻礙。
2、mysql服務必須允許備份主機遠程訪問,且授權用戶能夠查詢xxxx和yyyy庫。
這兒可以創建一個專用的數據庫備份賬戶"kanghui" 允許備份主機192.168.10.11連接到mysql數據庫,並授權對xxxx和yyyy庫的讀取權限,使用邏輯備份工具mysqldump的時候,需要對庫設置select和lock和tables權限。
- mysql>grant select,lock tables on xxxx.*to 'kanghui'@'192.168.10.11' identified by '123456';
- mysql>grant select,lock tables on yyyy.*to 'kanghui'@'192.168.10.11' identified by '123456';
設置訪問權限后就在備份服務器上測試數據庫訪問,查詢授權等是否有效。
- [root@localhost ~]#mysqldump -u root -p123456 -h 192.168.10.22 --databases xxxx > ceshi.sql
- [root@localhost ~]#ls -lh ceshi.sql
下面是一個mysql的備份腳本,根據自己的需求修改即可。
- [root@localhost ~]#mkdir -p /opt/mysql_bak/
- [root@localhost ~]#cd /opt/mysql_bak/
- [root@localhost mysql_bak]# vim mysql_bak.sh
- #!/bin/bash
- #auto backup mysqldb
- #by authors kanghui 2016-06-12
- #這是一個簡單化到MYSQL數據庫邏輯備份腳本
- #1.定義數據庫鏈接,目標庫信息
- MY_user="root"
- MY_pass="123456"
- MY_host="192.168.10.22"
- MY_conn="-u $MY_user -p$MY_pass -h $MY_host"
- MY_db1="xxxx"
- MY_db2="yyyy"
- #2.定義備份目錄,工具,時間,文件名
- BF_dir="/opt/mysql_bak"
- BF_cmd="/usr/bin/mysqldump"
- BF_time="date +%Y%m%d-%H%M"
- name_1="$MY_db1-$BF_time"
- name_2="$MY_db2-$Bf_time"
- #3先導出為.sql腳本,然后再進行壓縮(打包后刪除源文件)
- cd $BF_dir
- $BF_cmd $MY_conn --databases $MY_db1 > $name_1.sql
- $BF_cmd $MY_conn --databases $MY_db2 > $name_2.sql
- /bin/tar zcf $name_1.tar.gz $name_1.sql --remove &> /dev/null
- /bin/tar zcf $name_2.tar.gz $name_2.sql --remove &> /dev/null
設置權限並測試:
- [root@localhost mysql_bak]#chmod +x mysql_bak.sh
- [root@localhost mysql_bak]#./mysql_bak.sh
- [root@localhost mysql_bak]#ls -lh /opt/mysql_bak/*.gz
最后把腳本加入帶計划任務即可。
- [root@localhost ~]#crontab -e
- 30 2 * * * /opt/mysql_bak/mysql_bak.sh