数据迁移方案介绍
技术选型
| 迁移方案 | 适合场景 | 实施难度 | 介绍 |
|---|---|---|---|
| 停机迁移 | 小型系统、容忍停机 | ★★ | 通常选择备份+导入 |
| 实时同步任务 | 大型生产系统 | ★★★ | 比如借助阿里云的DTS实时同步 |
| CDC增量同步 | 大型生产系统 | ★★★★ | 比如使用Canal监听MySQL的binlog |
| 双写方案 | 金融级一致性要求 | ★★★★★ | 先双写,数据补齐后再改单写,要有异步校验+补偿机制 |
同构数据迁移
- 同构数据库迁移是指在相同类型的数据库之间进行数据迁移,例如 MySQL 到 MySQL
| 数据库 | 迁移工具 | 官方地址 | 特点 |
|---|---|---|---|
| 主流数据库 | 阿里云 DTS | https://www.aliyun.com/product/dts | 云上迁移一体化,适合上/下云 |
| 主流数据库 | 华为云 DRS | https://www.huaweicloud.com/product/drs.html | 支持MySQL/MongoDB/Redis等 |
| 主流数据库 | AWS DMS | https://www.amazonaws.cn/dms | 支持MySQL/Oracle/MSSQL/PG/Mongo等 |
| MySQL | DataX | https://github.com/alibaba/DataX | 支持各种异构数据同步,表级别同步 |
| MySQL | pt-archiver | https://docs.percona.com/percona-toolkit/pt-archiver.html | 常用于数据归档 |
| MongoDB | MongoShake | https://github.com/alibaba/MongoShake | - |
| Redis | redis-shake | https://github.com/alibaba/RedisShake | 需清空目标key,任务中断需从头开始 |
| Redis | redis-port | https://github.com/CodisLabs/redis-port | - |
| zookeeper | zkcopy | https://github.com/ksprojects/zkcopy | - |
| ElasticSearch | elasticdump | https://github.com/elasticsearch-dump/elasticsearch-dump | - |
| Minio | mc | https://dl.min.io/client/mc | 常用于Minio的迁移与同步 |
| Minio | rclone | https://github.com/rclone/rclone | 支持OSS/S3/Minio/RustFS/SeaweedFS等 |
异构数据迁移
- 数据库异构迁移是指将数据从一个数据库系统(源数据库)迁移到另一个数据库系统(目标数据库),且这两个数据库系统在架构、语法、数据类型等方面存在差异的过程,例如 MySQL 到 PostgreSQL
| 数据库 | 迁移工具 | 官方地址 | 特点 |
|---|---|---|---|
| 主流数据库 | 阿里云 DTS | https://www.aliyun.com/product/dts | 云上迁移一体化,适合上/下云 |
| 主流数据库 | 华为云 DRS | https://www.huaweicloud.com/product/drs.html | 支持MySQL/MongoDB/Redis等 |
| 主流数据库 | AWS DMS | https://www.amazonaws.cn/dms | 支持MySQL/Oracle/MSSQL/PG/Mongo等 |
| MongoDB | Monstache | https://github.com/rwynn/monstache | MongoDB -> ElasticSearch |
| SQL Server | canal + kafka + maxwell | https://github.com/alibaba/canal | SQL Server -> MySQL |
检验工具
- 数据库检验工具的主要作用是确保数据库中的数据准确、完整、一致且符合预定义的业务规则或质量标准
| 数据库 | 检验工具 | 官方地址 | 特点 |
|---|---|---|---|
| MySQL | pt-table-checksum | https://docs.percona.com/percona-toolkit/ | 非常适合在主从复制环境中高效地校验数据一致性 |
| MySQL | NineData | https://www.ninedata.cloud | 全功能SaaS平台,新手友好 |
| Redis | redis-full-check | https://github.com/alibaba/RedisFullCheck | 通常用于redis数据迁移后正确性的校验 |