推薦閱讀:MySQL 數據庫跨操作系統的最快遷移方法
mysql 備份與遷移 數據同步方法
操作實踐背景:
travelrecord表定義為10個分片,嘗試將10個分片中的2個分片轉移到第二台MySQL上,並完成記錄, 要求最快的數據遷移做法,中斷業務時間最短
思路一利用mysqldump:
在這裡我們只針對mysql innodb engine,而且配置bin-log的數據庫進行分析。因為是將10個分片中的兩個分片進行遷移,其實就是數據庫的遷移過程,就是將10個數據庫中的兩個數據遷移到另外一台機器;中斷業務最短的做法就是:
1) 准備mycat新的配置文件備用,以便快速切換配置文件。
2) 在業務地峰期間,如凌晨,使用mysqldump進行數據庫的全量備份(附帶--flush-logs);
3) 將兩個分片數據庫的全量備份第二台機器上進行全量恢復;
4) 停止mycat服務器,
5) 停止第一台機器的mycat實例(假設原來的分片在一個mysql實例)
6) 拷貝第一台機器的binlog文件到第二台機器,並使用mysql的mysqlbinlog工具進行這兩個數據庫的增量數據的恢復。
7) 啟動第一台數據實例,校驗遷移的兩個分片數據正確性(主要看記錄數)
8) 替換mycat的配置文件並啟動mycat實例
在該方案中,業務中斷的時間主要是處理mysqlbinlog的增量數據恢復。
思路二利用mysql的ms機制做級聯復制
在這裡二個片比如第一個分片db11,第二個分片db21,我在db11上面再做個級聯主從,db11-->db16,在db21上面做個級聯主從db21->db26,這樣到時候數據實時同步,中斷業務比較短的做法是:
1)准備mycat新配置文件備用,以便快速切換配置文件。
2)在業務低峰期間,比如凌晨時分,開始操作,停止mycat服務器
3)進行db11-db16主備切換,進行db21-db26主備切換
4)停止第一台機器的mycat實例
5)在主備切換過程中,舊的主db11、db21上面的binlog中如果有新的dml、ddl操作,就用mysqlbinlog解析出來,在新的主db16和db26上面重做一遍
6)使用mk-table-checksum工具檢查新主從db16->db11、db26->db21的數據一致性。
7)替換mycat的配置文件並啟動mycat實例
好了,關於MySQL分片中快速數據遷移相關知識就給大家介紹到這裡,希望對大家有所幫助,更多有關mysql數據遷移知識請登錄www.jb51.net 了解更多!