由於一台mysql資料庫伺服器上有多個資料庫,所以在考慮備份的時候也將多個庫分開進行,以便在單個庫出現問題時恢復。
一、分庫備份
1、可以乙個庫對應一條備份語句,如:
mysqldump -s /home/mysql/run/mysql.socket -uroot -p123456 --single-transaction --master-data=2 -f -b db1 |gzip > /home/mysql/bakup/db1.sql.gz
mysqldump -s /home/mysql/run/mysql.socket -uroot -p123456 --single-transaction --master-data=2 -f -b db2 |gzip > /home/mysql/bakup/db2.sql.gz
......
2、一條語句分開
for dbname in `mysql -uroot -p123456 -e "show databases;"|grep -evi database|infor|perfor"`
domysqldump -s /home/mysql/run/mysql.socket -uroot -p123456 --single-transaction --master-data=2 -f -b $dbname |gzip > /home/mysql/bakup/$dbname.sql.gz
done
二、分庫恢復
1、所有庫恢復時
gzip -d /home/mysql/bakup/*.gz
for dbname in `ls /homoe/mysql/bakup |sed 's#.sql##g'`
domysql -uroot -p123456 < /home/mysql/bakup/$dbname.sql
done
2、從備份恢復指定庫時,指定相應的備份檔案即可
gzip -d /home/mysql/bakup/db1.sql.gz
mysql -uroot -p123456 < /home/mysql/bakup/db1.sql
但是二進位制日誌是記錄所有庫的操作,所以要指定相應庫的恢復,使用mysqlbinlog的-d引數指定要恢復的資料庫,即可增量恢復指定庫
mysqlbinlog -d db1 /home/mysql/data/mysql.bin-000045 |mysql -s /home/mysql/run/mysql.socket -uroot -p123456
說明:socket檔案不是預設位置,所以所有命令需要新增-s引數,但mysql例外,已經在.bashrc中新增alias mysql='mysql -s /home/mysql/run/mysql.socket'
當然其他命令也可以新增。
mysql分庫備份 MySQL分庫備份與分表備份
mysql分庫備份與分表備份 1 分庫備份 要求 將mysql資料庫中的使用者資料庫備份,備份的資料庫檔案以時間命名 指令碼內容如下 root db01 scripts vim backup database.sh bin bash mysql user root mysql pass 123456...
mysql分庫分表備份 mysql分庫分表備份
一 單獨備份資料庫 mysqldump uroot poldboy oldboy opt oldboy.sql 最簡單的備份 1 mysql基於myisam引擎 mysqldump uroot poldboy b x f oldboy gzip opt oldboy.sql.gz 2 5.5以後預設...
Shell實現MySQL分庫備份
工作中經常會用到 進入mysql中檢視庫名 mysql uroot p root show databases 如下圖 圖1 命令列進入mysql 或者可以不進入mysql中,直接在命令列中顯示,用以下命令 mysql uroot p root e show databases 效果見下面圖2 圖2...