我有一个MariaDB Galera集群(3个节点),我设置uid
自动增加并成为表的主键
`uid | int(11) | NO | PRI | NULL | auto_increment`.
MariaDB [hello_cluster]> select uid from table order by uid limit 10;
+-----+
| uid |
+-----+
| 3 |
| 6 |
| 9 |
| 12 |
| 15 |
| 18 |
| 21 |
| 24 |
| 27 |
| 30 |
+-----+
我尝试了以下命令,但它不起作用
alter table uid AUTO_INCREMENT=1
答案 0 :(得分:16)
这是设计使然,并在MariaDB Galera Cluster - Known Limitations中报告:
不要依赖自动增量值来连续。 Galera使用基于自动增量增量的机制来产生唯一的非冲突序列,因此在每个节点上序列将有间隙。
理性在Managing Auto Increments with Multi Masters中解释,也是观察到的自动增量与群集数量相同的原因。
MySQL具有系统变量auto_increment_increment和auto_increment_offset,用于管理自动增量序列'在多主环境中。使用这些变量,可以设置多主复制,其中每个主节点中的自动递增序列交错,并且群集中不应发生冲突。无论哪个主人获得INSERT。
即使没有集群,它也很少是好的"由于事务回滚和删除的记录,依赖自动增量列成为密集序列的想法。
答案 1 :(得分:0)
wsrep_auto_increment_control =关闭
将允许您在mysql中更改 auto_increment_increment 和 auto_increment_offset 。仅在主从环境中推荐,因为在主从环境中可能会与自动增量键偶然冲突。
希望这会对某人有所帮助。