DM从VIP同步异常

【 TiDB 使用环境】生产环境
【 TiDB 版本】 6.5.1
【复现路径】
源端是mysql主备
ip1: 10.10.10.1 当前binlog mysqld-bin.000010 60000
ip2: 10.10.10.2 当前binlog mysqld-bin.000020 80000
VIP: 10.10.10.3

DM同步连接10.10.10.3,发mysql主备发生切换 之后 ,binlog的位置发生了变化,同步就报错了
使用gtid能解决吗

https://docs.pingcap.com/zh/tidb/stable/usage-scenario-master-slave-switch

如果 DM-worker 连接的 VIP 需要指向新的 MySQL 实例,需要按以下步骤进行操作:

  1. 使用 query-status 命令获取当前 binlog replication 处理单元已复制到下游的 binlog 对应的 GTID sets (syncerBinlogGtid),记为 gtid-S
  2. 在将要切换到的 MySQL 实例上使用 SELECT @@GLOBAL.gtid_purged; 获取已经被 purged 的 binlog 对应的 GTID sets,记为 gtid-P
  3. 在将要切换到的 MySQL 实例上使用 SELECT @@GLOBAL.gtid_executed; 获取所有已经执行成功的事务对应的 GTID sets,记为 gtid-E
  4. 确保满足以下关系,否则不支持将 DM-worker 连接切换到相应的 MySQL 实例:
  • gtid-S 包含 gtid-Pgtid-P 可以为空)
  • gtid-E 包含 gtid-S
  1. 使用 pause-task 命令暂停所有运行中的数据迁移任务。
  2. 变更 VIP 以指向新的 MySQL 实例。
  3. 使用 resume-task 命令恢复之前的数据迁移任务。
    https://docs.pingcap.com/zh/tidb/stable/usage-scenario-master-slave-switch

感谢啊

感谢。。。

直接使用ipi地址呢

用的是云商的RDS

  • 在将要切换到的 MySQL 实例上使用 SELECT @@GLOBAL.gtid_purged; 获取已经被 purged 的 binlog 对应的 GTID sets,记为 gtid-P。

  • 在将要切换到的 MySQL 实例上使用 SELECT @@GLOBAL.gtid_executed; 获取所有已经执行成功的事务对应的 GTID sets,记为 gtid-E

将要切换的实例,如果不存在了,无法查询 SELECT @@GLOBAL.gtid_purged; SELECT @@GLOBAL.gtid_executed
是不是就没有办法了啊

你reset了吗,为啥查不到

用的是阿里云的RDS高可用版本,发生oom之后 ,原主实例就销毁了,重新拉起了一个实例

切换之后 ,这个binlog在新的主上不存在,跳不过去

  1. 使用 resume-task 命令恢复之前的数据迁移任务。

是我操作的不对吗, 开启gtid之后 ,应该与binlog的文件名与position没有关系了吧

出问题了你再开GTID?

一直开着的

binlog要没了中间会有缺失啊,还是重新初始化数据靠谱。

binlog没有缺失,只是主节点与备用节点上的binlog名称不一样,比如现在主节点上同步的mysql-bin.000509 这个 文件,切换 之后 ,mysql-bin.000509在现在的主节点上没有这个文件名,但是数据是同步的

你是啥都不懂吧

请指出哪里有问题