alibaba / otter

阿里巴巴分布式数据库同步系统(解决中美异地机房)
Apache License 2.0
8.02k stars 2.49k forks source link

单向同步中数据冲突处理策略问题 #1104

Open LieLieLiekey opened 1 year ago

LieLieLiekey commented 1 year ago
  1. 创建一个表 dch_test, 唯一键/主键 是 ID列

    CREATE TABLE `dch_test` (
    `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
    `value` varchar(128) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  2. 然后我在数据库 B 中插入一条数据 ,此时观察了下数据库,预期的数据库 B 中有该数据, 数据库 A没有

    INSERT INTO `dch_test` (`id`, `value`) VALUES (1, '第一次'); 
  3. 然后我又在数据库 A 中插入一条数据,观察了下,数据库 A 和 B 都变为 (1, '第二次')。

    `INSERT INTO `dch_test` (`id`, `value`) VALUES (1, '第二次'); `,

看起来好像 A 同步这条语句到 B 后发现有冲突就直接改为UPDATE了?

LieLieLiekey commented 1 year ago

我感觉数据冲突的处理策略主要有三种,1. 忽略冲突。2. 覆盖冲突的数据,用主站覆盖或最新数据覆盖。3. 停止同步并报错

otter这里的处理策略是第二种吗?任何时候都是?或者有没有相关控制的参数