admin 发表于 2024-3-12 10:52:13

【GreatSQL茶话会13】大家都是如何做多表离线数据迁移的?

GreatSQL 茶话会第十三期来啦!!!

本期话题
在多表(>1000张)的情况下,大家平时都是怎么离线处理数据迁移的呢?快来分享一下吧!
在本帖下参与互动回复,即可获得对应的活动奖励,更有机会获取社区定制双肩背包一个!快来参与讨论吧~

活动奖励

[*]参与讨论者(回复内容 20 字以上):社区金币 100 个;
[*]精华回复(回复内容 100 字以上):社区金币 300 个;
[*]回复的内容获得点赞数前两名(点赞数需不小于 5):社区双肩背包一个。

活动时间
点赞数量统计截止时间:2024.4.1 24:00





admin 发表于 2024-4-2 09:49:52


感谢大家的参与,本次茶话会已结束,根据点赞数量及回帖内容质量统计公布获奖名单:

点赞最多奖:社区双肩背包一个
获奖用户名:海之韵;

精华回帖奖:社区金币 300 个;
获奖用户名:铎铎是只猫,chongzh,王歡,vvvvvv,renduy;

海之韵 发表于 2024-3-14 22:55:04

将一个拥有超过1000张表的大型MySQL数据库中的数据迁移到另一个数据库中。由于数据量庞大,选择了使用Canal作为数据同步工具来进行离线迁移。
以下是在实施项目过程中的一些经验分享:
1.明确迁移目标:在开始之前,首先明确了需要迁移的表和字段,以及源数据库和目标数据库的连接信息。这有助于更好地配置Canal,并确保数据迁移的准确性。
2. 安装和配置Canal:在目标服务器上安装了Canal,并根据源数据库的配置和需求修改了Canal的配置文件。确保了配置文件中包括数据库连接信息、订阅的表、同步模式等参数。
3. 分阶段启动Canal:由于源数据库中有1000多张表,决定分阶段进行数据迁移。首先,选取了最重要的几张表进行迁移,确保了Canal的稳定运行。随后,逐渐增加了更多表的迁移。
4. 处理同步任务:Canal在接收到binlog数据后,会解析为对应的事件,将这些事件发送到客户端。客户端根据需要对事件进行处理,例如进行数据转换、清洗等操作。
5. 写入目标数据库:处理完事件后,客户端将数据写入目标数据库。使用了Canal的多线程并行写入功能,以提高数据迁移的效率。
6. 监控和优化:在整个数据迁移过程中,持续监控Canal的运行情况,确保其正常运行。如果遇到性能瓶颈,对Canal的配置进行优化,例如调整线程数、批量大小等参数。

铎铎是只猫 发表于 2024-3-15 08:03:37

对于MySQL在多表情况下的数据迁移,可以考虑以下几个方案:
1.使用ETL工具:ETL工具可以帮助将数据从一个数据库中提取出来,经过转换和清洗后再加载到另一个数据库中。
2.使用备份和恢复:对MySQL进行备份,然后将备份文件迁移到目标服务器,再进行恢复操作。备份和恢复可以使用MySQL官方工具mysqldump和mysql命令行工具,也可以使用第三方工具如Percona Xtrabackup等。
3.使用数据同步工具:数据同步工具可以将多个MySQL数据库之间的数据进行同步。
需要根据具体情况选择合适的方案进行数据迁移。同时,在进行数据迁移前,需要对数据进行备份,以防止数据丢失。

chongzh 发表于 2024-3-15 10:24:03

逻辑迁移:
mysqldump、mydumper 多表一起导出导入

物理迁移:
MySQL(5.6.6及以上) & innodb_file_per_table开启 用传输表空间,建表后直接拷贝idb

王歡 发表于 2024-3-15 12:25:56

使用Airbyte进行大量(例如超过1000张表)离线数据迁移过程:
1.评估和规划:
1.1.确定源数据的位置、结构和大小。
1.2.规划 Airbyte 集成器的规模和资源分配。
2.配置Airbyte
2.1.配置Airbyte源连接;
2.2.配置Airbyte目标连接;
2.3.定义同步连接:
       创建一个新的同步连接(也称为“连接”或“同步流”),选择源连接和目标连接,然后可以选择全部或特定的表进行迁移。
2.4批处理同步;
2.5启动同步任务;
2.6验证与调整:
      迁移完成后,对迁移后的数据进行抽样验证,确保数据的完整性和准确性。根据验证结果进行必要的调整和补充迁移。

备注:
使用Airbyte进行大量表的离线数据迁移时,关键是要合理规划和分批处理,密切关注系统资源占用和同步状态,并做好数据验证和错误处理预案。

问题:
    表数量庞大:Airbyte可能会因为一次性同步太多表而导致性能下降或资源不足。此时需合理分批同步,甚至通过编程API自动化批量创建同步任务。
    表结构复杂:确保所有表结构在迁移前已被适配到目标源,包括数据类型映射、分区策略等。
    数据一致性:在迁移过程中,尤其是大表,关注增量数据的捕获,确保迁移过程中数据的一致性。
    资源限制:注意检查Airbyte服务器、网络和集群的资源使用情况,适时扩容以应对大规模数据迁移带来的压力。

vvvvvv 发表于 2024-3-21 09:33:10

1. mydumper loader
2. 可以搭建备库
3. 用相关的cdc工具

做好迁移测试,还有迁移后的性能测试
选方案
方法很多,不一定非得用多么高大上多么牛逼的技术,能满足自己的需求的就好了
剩下的就是开干了

Good luck~

renduy 发表于 2024-4-1 14:21:58

数据量不是很大情况下基本都是以下步骤:

1.导出数据:使用mysqldump命令将源数据库中的多个表数据导出到一个文件中。
2.创建目标数据库:在目标数据库中创建与源数据库相同的表结构,以便将数据导入到目标数据库中。
3.导入数据:使用mysql命令将导出的数据文件导入到目标数据库中。
4.验证数据:在目标数据库中验证导入的数据是否正确。

需要注意的是,在进行数据迁移时,要确保源数据库和目标数据库的表结构保持一致,以避免数据导入错误。另外,对于大量数据的迁移,可以考虑使用压缩和分割数据文件,以便更高效地进行数据迁移操作。
页: [1]
查看完整版本: 【GreatSQL茶话会13】大家都是如何做多表离线数据迁移的?