用戶需求
- 使用ES實現搜索功能
- MySql數據同步ES中
AWS Database Migration Service (AWS DMS)
-
AWS Database Migration Service (AWS DMS) 是一項雲服務,可輕松遷移關系數據庫、數據倉庫、NoSQL 數據庫及其他類型的數據存儲。您可以使用 AWS DMS 將數據遷移到 AWS 雲,在本地實例之間(通過 AWS 雲設置)進行遷移,或者在雲與本地設置的組合之間進行遷移。
-
利用 AWS DMS,可以執行一次性遷移,而且可以復制持續更改以保持源和目標同步。如果要更改數據庫引擎,可以使用 AWS Schema Conversion Tool (AWS SCT) 將數據庫架構轉移到新平台。然后,可以使用 AWS DMS 遷移數據。由於 AWS DMS 是 AWS 雲的一部分,您將獲得 AWS 服務提供的成本效益、上市速度、安全性與靈活性
1.創建子網組
- 子網組配置
- 子網組名稱
- 子網組描述
- 選擇VPC
- 添加子網
- 添加標簽
2.證書
- 數據庫開啟SSL連接時需要證書
- 導入AWS提供的證書
- 證書地址
- https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html
3.創建復制實例
-
復制實例配置
- 復制實例名稱
- 復制實例描述
- 實例類型(配置)
- DMS版本(盡量使用穩定版本,不建議使用Beta版本)
- 分配實例存儲空間
- VPC
- 是否開啟多可用區
- 是否公網訪問
- 如果選擇此選項,AWS DMS 將向您的復制實例分配公有 IP 地址,並且您將能夠連接到 Amazon VPC外部的數據庫
-
高級安全和網絡配置
- 復制子網組
- 可用區
- VPC安全組
- KMS主密鑰
-
維護
- 次要版本自動升級(建議關閉)
-
標簽
4.創建終端節點
- 終端節點類型
- 源終端節點
- 源終端節點允許 AWS DMS 從數據庫(內部部署或雲中)或其他數據源(如 Amazon S3)讀取數據
- 目標終端節點
- 目標終端節點允許 AWS DMS 將數據寫入數據庫或寫入其他數據源
- 源終端節點
- 源終端節點配置
- 終端節點標識符
- 源引擎類型
- aurora
- aurora-postgresql
- s3
- db2
- mariadb
- azuredb
- sqlserver
- mongodb
- mysql
- oracle
- postgres
- sybase
-
目標終端節點配置
- 終端節點標識符
- 源引擎類型
- aurora
- aurora-serverless
- aurora-postgresql
- docdb
- dynamodb
- kinesis
- neptune
- redshift
- s3
- elasticsearch
- kafka
- mariadb
- mysql
- oracle
- postgre
- sybase
-
提供各服務的認證信息
-
特定於終端節點配置
- 額外的連接屬性
-
KMS主密鑰
-
標簽
-
測試終端節點連接(可選)
5.數據遷移遇到的坑
-
DMS支持MySql版本
- MySQL 版本 5.5、5.6、5.7 和 8.0
- MariAdB版本10.0.24至10.0.28、10.1、10.2和10.3至10.3.13
- Amazon Aurora MySQL
-
MySql作為數據源先決條件
-
參數組修改
- binlog_format 設置成 ROW
- binlog_checksum 設置成 NONE
- 將binlog日志保留時間增加到24小時
- call mysql.rds_set_configuration('binlog retention hours', 24);
- 如果您使用Amazon RDS MySQL或Amazon RDS MariaDB只讀副本作為源,請在只讀副本上啟用備份
-
MySql連接報錯
- SSL connection error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
- 更新AWS RDS的證書,如果RDS未重啟。無論DMS終端節點是否使用SSL,均會報錯。重啟RDS后可正常連接
-
Elasticsearch
- 在 AWS DMS 版本 3.1.2 及更高版本中支持將 Amazon Elasticsearch Service 作為目標
- Migrating from a relational database table to an Amazon ES index
- AWS DMS 支持將數據遷移到 Amazon ES的標量數據類型。在從 Oracle 或 MySQL 等關系數據庫遷移到 Amazon ES 時,您可能希望重構存儲此數據的方式。
- AWS DMS 支持以下 Amazon ES 標量數據類型:
- Boolean
- Date
- Float
- Int
- String
- AWS DMS 將 Date 類型的數據轉換為 String 類型。您可以指定自定義映射來解釋這些日期
- 數據遷移任務啟動前需要提前在ES中創建與源數據庫中表名一致的索引
-
DMS
- DMS數據任務遷移后缺少字段
- DMS不會遷移不支持的數據類型至目標數據終端中
- Source data types for MySQL
- MySql中的JSON/LONGTEXT/MEDIUMTEXT數據類型將在AWS DMS中轉換成NCLOB(本機字符大對象)數據類型
- AWS DMS 不支持遷移 LOB 數據類型
- target data types for Elasticsearch
- 所以已MySql為數據源,Elasticsearch為目標終端時
- MySql中的JSON/LONGTEXT/MEDIUMTEXT數據類型將無法遷移至Elasticsearch中
- Source data types for MySQL
- 源數據終端中數據類型字段內容為空時,該字段也不會被遷移至目標終端中
- 對應Case:
- DMS不會遷移不支持的數據類型至目標數據終端中
- DMS數據遷移完成后增量數據無法同步
- Elasticsearch目標終端節點訪問角色沒有關聯對應的訪問策略
- 對應Case:
- AWS DMS 無法將任何 LOB 數據類型遷移到 Apache Kafka 終端節點
- DMS數據任務遷移后缺少字段
6.數據庫遷移任務
-
任務配置
- 任務標識符
- 復制實例
- 源數據庫終端節點
- 目標數據終端節點
- 遷移類型
- 遷移現有數據
- 遷移現有數據並復制持續變更
- 僅復制數據更改
-
任務設置
- 其他配置可以默認(沒有深究過)
- 啟用 CloudWatch 日志(方便排查問題)
-
表映像
- 遷移規則(源數據規則)
- 架構(庫)
- 表名稱(表)
- 操作(包含/排除)
- 轉換規則(目標數據規則)
- 目標架構(庫)
- 目標表(表)
- 目標欄(字段)
- 操作
- 重命名
- 刪除列
- 轉為小寫
- 轉為大寫
- 添加前綴
- 刪除前綴
- 替換前綴
- 添加后綴
- 刪除后綴
- 替換后綴
- 遷移規則(源數據規則)
-
遷移前評估
-
遷移任務啟動配置
-
高級任務設置
-
標簽
7.事件訂閱
- 可以針對數據遷移實例和遷移任務配置事件郵件(短信)通知
參考文檔:
https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html
https://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_Source.MySQL.html
https://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_Target.Elasticsearch.html
https://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_Reference.DataTypes.html