程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mycat分片中快速數據遷移

mycat分片中快速數據遷移

編輯:MySQL綜合教程

mycat分片中快速數據遷移


操作實踐背景:

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實例

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved