如果要保證數據的完整性, 最好的做法就是停服, 不在向數據庫中寫入數據了, 全備然後在新的DB上恢復。 但是這樣的話大量的數據可能會消耗幾個小時的時間來備份和恢復數據, 停止幾個小時的時間會讓人覺得崩潰! 所以比較好的方案是提前做一個全備, 並且新開始一個二進制日志, 然後在遷移的時候把二進制日志轉移過去, 在全備的基礎上做增量。
遷移第一步: 先將DB做全備, 並轉移大部分數據
很幸運的是 mysqldump 提供了這樣的功能!
mysqldump -F --lock-tables -u root -p db > /tmp/mysql_full_bak.sql
-F 參數的目的是啟用一個新的二進制日志文件, 這樣的話在第二步的時候就可以對全備之後的二進制日志進行增量恢復了
--lock-tables 這個很重要, 在備份的過程中鎖表, 保證數據的完整性
-u 用戶名 - p 要輸入密碼 db 要備份的數據庫
備份完了之後就會開啟一個新的二進制日志
遷移第二部: 將增量的數據轉移到新機房
mysqlbinlog ./mysql-bin.000016 > mysql -u root -p db