作者:馬弓手三菜
傳統的資料遷移一直是比較頭疼的話題,可能需要停機做mysqldump,或者通過一些程式抓取寫入到目标庫,但這些程式往往缺少一個大規模的使用量,容易出現資料不一緻的情況。
另外就是異構場景,即使像Oracle這種商業資料庫有EXPDP 這些工具,但是異構場景,就沒有用武之地了。
DTS 支援的遷移類型
資料源 結構遷移 全量遷移 增量遷移
Oracle->MySQL 支援 支援 支援
Oracle->RDS For PPAS 支援 支援 支援
Oracle->DRDS 不支援 支援 支援
Oracle->ADS 支援 支援 支援
Oracle->Oracle 支援 支援 支援
MySQL ->RDS For MySQL 支援 支援 支援
MySQL ->PostgreSQL 不支援 支援 支援
SQLServer->SQLServer 支援 支援 支援
PostgreSQL->PostgreSQL 支援 支援 支援
MongoDB -> MongoDB 支援 支援 支援
Redis -> Redis 支援 支援 支援
MySQL->DRDS 不支援 支援 支援
MySQL->PetaData 不支援 支援 支援
MySQL->OceanBase 支援 支援 支援
DB2->MySQL 支援 支援 支援
我們的DTS 主要分為 預檢查、結構遷移、全量遷移、增量遷移幾個階段。
預檢查,主要是檢查連通性和賬号權限,以及其他一些情況,比如是否有拓撲沖突。
結構遷移,主要是對表結構的DDL語句的遷移。 這裡要注意下,增量遷移的過程目标執行個體最好不要用trigger,源庫的觸發器生成值,也會随binlog同步過來。
全量遷移,主要是基于SQL 查詢,通過切片算法,分段把資料全量拉取過來。
如果需要增量更改的資料,那麼就需要我們的增量遷移。 增量遷移是通過拉取源庫的日志檔案,如MySQL的binlog,sqlserver的LDF等,分析轉儲成适合目标執行個體的SQL語句,再增量并發寫入到目标執行個體。
一、 雲下機房上雲遷移
https://help.aliyun.com/document_detail/26621.html?spm=a2c4g.11186623.6.601.cc2b3588wFTiPu注意事項:
1) 權限
遷移類型 結構遷移 全量遷移 增量遷移
本地 MySQL 執行個體 select select super
select
replication slave
replication client
目标端 RDS for MySQL 執行個體 讀寫權限 讀寫權限 讀寫權限
2) 源庫的binlog格式
binlog_format = row
binlog_row_image=full
3) 映射關系
DTS 遷移不能更改遷移對象,是以配置的時候,要選好映射關系
二、 雲下機房和雲上執行個體同步
https://help.aliyun.com/document_detail/66730.html?spm=a2c4g.11186623.6.631.571d2b32sICq3v注意事項
1) 同步必須是内網,是以需要有專線、智能網關、VPN等,正确配置網絡路由
關于專線的配置可以參考這篇
https://help.aliyun.com/document_detail/58143.html?spm=a2c4g.11186623.6.616.ccb169a7r7zrhq2) 同步的其他配置和遷移類似,但是同步初始化完成後,可以更改同步對象
注意的是,每次更改後,需要等到新加入的對象同步初始化完成,才能進行下一次更改
3) 同步還支援雙向同步,極大滿足雲上測試的前提。
https://help.aliyun.com/document_detail/56776.html?spm=a2c4g.11186623.6.627.6472636abYrkHY雙向同步需要注意的是,沖突政策,預設是沖突以後會中斷
三、 其他雲廠商的遷移與同步
https://help.aliyun.com/document_detail/52555.html?spm=a2c4g.11186623.6.596.cc2b3588wFTiPuAWS
https://help.aliyun.com/document_detail/52904.html?spm=a2c4g.11186623.6.597.4f814a512mVENC騰訊
需要注意的是,确認下其他雲廠商的MySQL賬号權限, 以及binlog的開放情況,如果能買到專線,速度也會更進一步。