云数据库 RDS-无主键表添加自增主键后导致主备节点查询数据不一致:解决方案

时间:2024-05-27 16:20:49

解决方案

为已有数据的表添加自增列时,请先创建相同表结构的新表,再在新表上添加自增列,将原表数据导入(导入数据时,请尽量保持原表无写入操作,否则会造成原表与新表数据不一致)。

按照如下步骤解决主备节点查询数据不一致问题。

  1. 在主节点上创建一个与无主键表(称之为原无主键表t1)相同的新表t2,并为新表中添加自增主键。

    示例如下:
    CREATE TABLE t2 LIKE t1;
    ALTER TABLE t2 ADD id INT AUTO_INCREMENT PRIMARY KEY;

  2. 将原无主键表的数据全部插入到新表t2中。

    示例如下:

    INSERT INTO t2(col1, col2) SELECT col1, col2 FROM t1 ORDER BY col1, col2;

    为了确保主备节点对应表中数据的顺序相同,ORDER BY子句必须包含原无主键表的所有列。

  3. 删除原无主键表t1,并将新表重命名为原无主键表名。

    示例如下:

    DROP TABLE t1;
    RENAME TABLE t2 TO t1;

support.huaweicloud.com/trouble-rds/rds_12_0131.html