我的烏拉拉練功坊

請來參觀移植到 Google Firebase 的成績 https://oolala.xyz/ken73chen/

2014年7月4日

mysqldump 回存筆記

大多數人備份 mysql,都是用 mysqldump,出了問題,再用 mysqldump 備份出來的東西存回去,雖然有很多更好的方法,不過畢竟大家的資料庫都不是太大,而且通常也沒有重要到無法暫停資料庫個幾個小時。


如果你的資料庫可以暫停,那麼把 mysqldump 回存時,如果有 slave,建議先停掉 slave,然後把回存的備份,同時在 master 和 slave 回存,偶爾做一做,可以保證 slave 和 master 是同步的。

等到有一天,master 壞光光,得用 slave 上線時,你就會知道這件事情有多重要了。

接下來,在 master 回存時,可以暫時先把 log-bin 關掉,方法很簡單:

db2# ( echo "SET SESSION SQL_LOG_BIN=0;" ; cat db3_backup.2.sql ) | mysql -S /tmp/mysql.sock -pXXXXXX -A

這樣 master 就不會產生 log-bin 了。

然後 master 回存完畢,請將 master 的 mysql 先停掉,再重新啟動,這樣 master 會產生一個新的 log-bin,例如:

-rw-rw----   1 mysql  mysql         106 Jul  4 12:10 mysql-bin.000025

這樣的好處是,你就可以在 slave 用:

mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000025', MASTER_LOG_POS=106;


讓 slave 從新開始的 log-bin 重新開始同步。