操作實踐背景:
travelrecord表定義為10個分片,嘗試將10個分片中的2個分片轉移到第二台MySQL上,並完成記錄, 要求最快的數據遷移做法,中斷業務時間最短
思路一利用mysqldump:
在這裡我們只針對mysql innodb engine,而且配置bin-log的數據庫進行分析。因為是將10個分片中的兩個分片進行遷移,其實就是數據庫的遷移過程,就是將10個數據庫中的兩個數據遷移到另外一台機器;中斷業務最短的做法就是:
1) 准備mycat新的配置文件備用,以便快速切換配置文件。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實例