随着业务对数据搜索与分析能力的要求不断提高,越来越多的团队开始将关系型数据库中的数据迁移至搜索引擎中。
本篇文章将分享如何通过AWS DMS,实现MySQL数据无缝迁移到EasySearch,并打通实时同步链路的全过程。
注意:AWS DMS原生仅支持托管的OpenSearch和Elasticsearch,不直接支持EasySearch。本文将介绍如何通过一些配置技巧,优雅地解决这个问题。
一、准备MySQL源数据库
1. 创建数据库与数据表
首先,我们需要准备好待迁移的MySQL数据库。我这里使用的是DBeaver工具,当然你也可以选择更专业的MySQL Workbench或DataGrip。
新建数据库时,选择utf8mb4
编码,库名命名为source
(后续DMS迁移任务中会用到)。
接下来创建数据表并定义字段。图形化工具可以避免手写DDL,对非DBA用户非常友好。
2. 插入测试数据
为了验证迁移效果,我们先写几条假数据。
确认数据已成功写入并提交。
二、配置AWS DMS迁移
1. 创建源端点(MySQL)
在AWS DMS中,首先需要定义源端点。MySQL作为数据源,EasySearch作为目标端。
2. 创建目标端点(EasySearch)
我的EasySearch部署在公网的Linux服务器上。配置目标端点时,有两个重点:
- 关闭认证与TLS,将传输协议改为HTTP
- 伪装为开源Elasticsearch,绕过DMS的原生认证要求
只需要调整这两个关键参数,即可完成兼容。
3. 创建复制实例
迁移任务需要一个复制实例,即DMS后台自动启动的迁移代理服务器。
4. 测试连接
实例启动后,记得测试源端(MySQL)和目标端(EasySearch)的连通性,确保网络正常。
三、创建迁移任务并启动
在控制台新建迁移任务
1. 预检查:开启MySQL Binlog
为了支持CDC(持续复制),需要提前在MySQL开启binlog,并调整格式为ROW
。
2. 创建迁移任务
在DMS中创建任务,选择持续复制模式,源库填写source
,EasySearch会自动将数据表转为索引。
注意:目标端为EasySearch时需要关闭数据验证,否则迁移任务会因兼容性问题失败。
四、验证迁移效果
1. 启动任务并查看索引
EasySearch初始化状态下只有默认索引。
启动任务后,DMS自动创建了一个新索引newtable
,映射MySQL的数据表。
打开索引,可以看到MySQL数据已转换为EasySearch的文档格式。
2. 模拟实时数据同步
因为是CDC持续复制模式,我继续向MySQL插入新数据,模拟上游系统的实时写入。
EasySearch这边几乎实时就收到了新数据,验证了迁移链路的连贯性。
五、总结
本次实战中,借助AWS DMS,我们实现了从MySQL到EasySearch的实时数据同步,具备以下优势:
- 无需改造业务系统,兼容现有MySQL数据结构
- 支持CDC,保证数据的实时同步与一致性
- EasySearch原生接入,数据即迁即用
虽然AWS DMS默认并不支持EasySearch,但通过合理配置与兼容策略,我们依然实现了两者的高效打通。
如果你的业务需要将MySQL数据实时同步到EasySearch,这套方案值得一试。