Open tonyhal opened 11 hours ago
func (h MyEventHandler) OnPosSynced(re replication.EventHeader, pos mysql.Position, gtidSet mysql.GTIDSet, b bool) error { // 这里保存读取到的GTID点 // 当程序异常关闭,大批量数据没有处理完时候,已经保存了后面新的GTID点,重启最新的开始点开始了 个人理解: 没有执行的这部分数据就会丢死 log.Infof("OnPosSynced:%v %v %v\n", re.LogPos, pos.String(), gtidSet.String()) return nil }
当数据库多次大批量更新时,比如 update A 1000W 条 update B 1000W 条, 这样 ROWS数据还没有处理完, 把gtid 保存到本地文件, 程序异常, 下次启动 就会充最新的 gtid 点开始 ![Uploading 截屏2024-12-04 14.58.00.png…]()