標籤:
轉自:
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庫。
這兒可以建立一個專用的Database Backup賬戶"kanghui" 允許備份主機192.168.10.11串連到mysql資料庫,並授權對xxxx和yyyy庫的讀取許可權,使用邏輯備份工具mysqldump的時候,需要對庫設定select和lock和tables許可權。
Java代碼
- 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‘;
設定存取權限後就在備份伺服器上測試資料庫訪問,查詢授權等是否有效。
Java代碼
- [root@localhost ~]#mysqldump -u root -p123456 -h 192.168.10.22 --databases xxxx > ceshi.sql
-
- [root@localhost ~]#ls -lh ceshi.sql
下面是一個mysql的備份指令碼,根據自己的需求修改即可。
Java代碼
- [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
設定許可權並測試:
Java代碼
- [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
最後把指令碼加入帶計劃任務即可。
Java代碼
- [root@localhost ~]#crontab -e
- 30 2 * * * /opt/mysql_bak/mysql_bak.sh
Mysql 自動備份指令碼