一.自增id
如果在数据库内使用到了自增的字段,最好在/etc/my.cnf中添加auto_increment_increment、auto_increment_offset两个参数,防止发生事务冲突(MGR其实本身就有防止自增量事务冲突的能力,运用了GROUP_REPLICATION_AUTO_INCREMENT_INCREMENT这个参数,但如果不去手动设置,自增量的间隔会非常奇怪)。
show variables like '%increment%'
默认间隔为7,auto_increment_offset和server_id相同;当组复制正常停止时,自动修改的的值会被还原为原始值。自动设置自增值避免了人工为组成员设置自增值时,不小心设置了相同的自增值导致写操作被回滚的风险。默认值7是在组复制最大成员数量(9个成员)基础上的一个均衡值。
注意:只有当系统变量auto_increment_increment和auto_increment_offset保持默认值时,才会按照上述规则对自增值执行自动修改与恢复操作。否则,组复制不会自动修改。从MySQL 8.0开始,当组复制处于单主模式时(只有一个主要节点可提供写操作),组复制也不会自动修改自增。
从官网查到的文档上,建议最好为:
auto_increment_increment=n(组内成员数)
auto_increment_offset=server_id(这里的server_id最好为1,2,3这样的自增量,且每台都不同)
我们单主模式就直接都改成1了:
set @@global.auto_increment_increment = 1;
set @@auto_increment_increment = 1;
set @@global.auto_increment_offset = 1;
set @@auto_increment_offset = 1;
自增ID 重新增长:
ALTER TABLE 表名 AUTO_INCREMENT=1;
切换多主模式参考https://www.cnblogs.com/nothingonyou/p/12145348.html
网友评论