天天看點

DTS 搬站的實戰心得

傳統的資料遷移一直是比較頭疼的話題,可能需要停機做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.ccb169a7r7zrhq

2) 同步的其他配置和遷移類似,但是同步初始化完成後,可以更改同步對象

注意的是,每次更改後,需要等到新加入的對象同步初始化完成,才能進行下一次更改

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.cc2b3588wFTiPu

AWS

https://help.aliyun.com/document_detail/52904.html?spm=a2c4g.11186623.6.597.4f814a512mVENC

騰訊

需要注意的是,确認下其他雲廠商的MySQL賬号權限, 以及binlog的開放情況,如果能買到專線,速度也會更進一步。

繼續閱讀