1 Hyson2023 2024-03-04 16:01:16 +08:00 1.用 debezium 或者 canal 之类的同步工具,但是要自己写消费端代码 2.用阿里 DTS ,CloudCanal 之类的产品 3.mysqldump |
![]() | 2 baiyekaslana OP @Hyson2023 现在使用的是 mysqldump,但是没办法热备份,一个数据库就 400 多个 G,恢复就要 4 天多,然后迁移完了之后再把这四天的数据导出 sql 再执行,这个方法有点麻烦就想找个有没有热备份的方法。之前热备份使用的是 xtrabackup ,但是现在要迁移的服务器本身就有数据库。没法使用这个做热备。您说的方法我查下看怎么弄。 |
3 ChevalierLxc 2024-03-04 18:01:26 +08:00 我想的方案是,从某个时间点先迁移数据,后面用 binlog 再恢复增量的,至于怎么去写。我不知道。看看其他大佬 |
![]() | 4 defunct9 2024-03-04 18:02:55 +08:00 400 多个 G ,回复 4 天,不可能吧 |
5 XyIsMy 2024-03-04 18:12:53 +08:00 1.数据库 A 能不能停。如果能停,把 数据库 c (主) 和 数据库 a (从) 做一个主从。业务转移完后再切断主从 2.不能停,考虑外部工具。比如 bifrost ,先做一个全量同步,同步完后开启增量同步,就可以了。业务转移完切断同步 |
![]() | 6 Jblue 2024-03-04 18:12:59 +08:00 |
7 XyIsMy 2024-03-04 18:15:48 +08:00 ![]() @XyIsMy 补个 github 链接 https://github.com/brokercap/Bifrost |
![]() | 8 cheng6563 2024-03-04 18:17:48 +08:00 先全量备份,用 xtrabackup 或者直接 mysqldump 都行,记下备份开始的时间(或 binlog 位置)。 然后用 binlog 开始跑后面的同步,这个软件或方案挺多的。 |
9 dorothyREN 2024-03-04 19:14:48 +08:00 ![]() 哪用的着备份 binlog 啥的, 直接用 tidb 的 dm 工具,实时同步,完了把程序的 dsn 一改就完事了。 我都在线迁移了好几次了 |
![]() | 10 baiyekaslana OP @defunct9 用的是 mysqldump 和 mysql 命令回复的,确实 4 天还没好,今天早上查询命令时间太长连接不到 mysql,导致恢复 sql 的后台进程断了 |
![]() | 11 baiyekaslana OP @XyIsMy 好的,我学下怎么弄 |
![]() | 12 baiyekaslana OP @cheng6563 主要是要迁移的是阿里的云数据库 RDS ,就一个数据库服务。我看的应该是用不了 xtrabackup 吧 |
![]() | 13 defunct9 2024-03-05 10:28:38 +08:00 开 ssh ,让我上去看看 |
![]() | 14 vczyh 2024-03-05 10:50:46 +08:00 我的理解,这种情况只能通过逻辑备份来恢复,比如 mysqldump ,还有一楼的 debezium 之类的迁移工具和服务。 |
![]() | 15 vczyh 2024-03-05 10:51:35 +08:00 ![]() 既然用的是阿里的 RDS ,那可以了解一下阿里的数据库迁移服务。 |
![]() | 16 baiyekaslana OP @defunct9 公司的,不敢 |
![]() | 17 baiyekaslana OP @vczyh 我看到好像是只有迁移到阿里云的,给的方案比较详细。而且迁移服务应该是花钱买的,公司大概不同意 |
![]() | 18 defunct9 2024-03-05 11:14:43 +08:00 @baiyekaslana 那只能你自己搞了 |
![]() | 19 baiyekaslana OP @defunct9 公司的东西不敢外泄,谢谢你的好意了。 |
20 Hyson2023 2024-03-05 11:23:05 +08:00 ![]() @baiyekaslana 阿里的 DTS 能做全量及增量同步,全量同步是免费的,增量需要收费,费用不贵的 |
![]() | 21 baiyekaslana OP @dorothyREN 之前忘了说是要迁移的是阿里云数据库 RDS,这个刚才大概看了下应该是要搭建 tidb 的集群,通过集群完成的实时同步功能。这个我理解的大概没法用在阿里云数据库 RDS 。不知道这个能否在别的服务器搭建 tidb 服务,远程连接到阿里云数据库。 |
![]() | 22 baiyekaslana OP @Hyson2023 好的,那我去看看 |
![]() | 23 defunct9 2024-03-05 11:26:58 +08:00 ![]() DTS 是可以的,前提你是用 ipsec 或者 vpn 打通阿里云和公司的网络,这样就可以了。这种方式搞过很多次 |
![]() | 24 goodryb 2024-03-05 12:37:57 +08:00 既然是阿里云的 RDS ,那强烈推荐使用 DTS 去做,同步的时候注意选择好库,不要搞错; 另外注意下存储空间,别打爆了 |
![]() | 25 baiyekaslana OP @goodryb 好的,现在正在试,400G 的库大概多长时间 |
![]() | 26 goodryb 2024-03-05 12:44:59 +08:00 @baiyekaslana 如果是同 VPC ,那应该很快的,半天左右,全量+增量足够了 |
27 kestrelBright 2024-03-05 16:41:15 +08:00 flink? |
![]() | 28 baiyekaslana OP @goodryb 谢谢 |
![]() | 29 LostPrayers 2024-03-05 17:07:44 +08:00 我之前迁移 40 个 G 的 mysql 数据库,是搜了几篇博客+ChatGPT |
30 nextvay 2024-03-05 17:18:23 +08:00 我们上云步骤 1.旧数据库使用代理,代理后面挂载旧数据库 2.开启 DTS 数据同步+增量同步, 3.数据差不多了,凌晨某个时间点旧数据库开启只读,不准写入,此时切换代理挂载新数据库 |
31 dorothyREN 2024-03-05 20:13:13 +08:00 @baiyekaslana 不需要搭建 tidb 集群,只需要部署 tidm 就行了,dm 工具会自动同步上游数据到下游,上下游都是你自己配置的 mysql 地址 |
32 chutianyao 2024-03-06 10:31:04 +08:00 @baiyekaslana 你们是不是用的机械硬盘,io 速度上不去导致的. 我前天恢复 17G 的数据,使用机械盘,io 速度只有 10MBps; 后来换 SSD,速度到了 200MBps+,不到 1 小时就搞完了 |
33 root71370 2024-03-06 12:50:19 +08:00 我来说一下我们的方案,第一步 mysqldump 全量数据,记录下 binlog 点位,第二步导入到新的 mysql 中,第三步通过主从根据第一步记录的 binlog 点位去消费达到增量同步,第四步关闭源实例,通知业务切换 dsn 。如果没有乱七八糟的存储过程触发器啥的,这一套还是能在生产跑的。 |
34 liu35118665 2024-03-06 16:44:15 +08:00 1 、使用单表空间文件导入 InnoDB 表 https://dev.mysql.com/doc/refman/8.0/en/innodb-table-import.html 2 、也可以配合 xtrabackup ,用 xtrabackup 备份表,之后直接拷贝表空间文件到目标位置 |
35 liu35118665 2024-03-06 16:47:22 +08:00 @liu35118665 mysql5.7 应该也可以 https://dev.mysql.com/doc/refman/5.7/en/innodb-table-import.html 拷贝文件的方式速度应该是最快的 |
![]() | 36 fionasit007 2024-03-06 17:22:31 +08:00 我现在 CloudCanal ,不过你那么大的数据量我不清楚 CloudCanal 稳定不;要是阿里云的数据库或者在阿里云服务器搭建的数据库都可以用阿里云的 DTS |
![]() | 37 baiyekaslana OP @chutianyao 公司服务器确实用的机械盘,好久的机子了。都没换过配置 |
![]() | 38 baiyekaslana OP @root71370 binlog 点位要怎么记,要迁移的数据库是不让停的,随时都有读写,binlog 不是随时换的嘛。而且记录 binlog 点位要在全量迁移的什么时候记才能和全量迁移的数据保持一致 |
![]() | 39 baiyekaslana OP @fionasit007 现在就用的 DTS,但是有个库的表结构报错了,说是可能发生死锁啥的,都不知道该怎么处理。哎 |
40 root71370 2024-03-08 13:40:49 +08:00 @baiyekaslana binlog 点位 在 mysqldump 的时候导出数据中就已经记录了,提取出来即可。把全量数据恢复到目标库之后,就可以对源库进行写入禁止操作了,期间产生的数据量通过 mysql 主从增量恢复,这个时候源库和目标库是一个同步的状态,业务直接改 dsn 重启就行了。当然要保证所有使用源库的统一切换,最安全的方案是先禁止源库的写入权限,这个时候等业务系统 dsn 统一切换到目标库之后,再把主从断开就行了。 |