MariaDB主机到主机复制的自动增量不是顺序的

问题描述

我有两个主服务器,可以使用以下设置来控制MariaDB服务器复制:

server A with 192.168.1.100:
------------------------------
bind-address            = 0.0.0.0
server-id       = 1
log-bin         = "MysqL-bin"
binlog-do-db        = wordpress
replicate-do-db     = wordpress
relay-log="MysqL-relay-log"
auto-increment-increment = 2
auto-increment-offset = 1

和:

Server B with 192.168.1.200:
---------------------------------
bind-address            = 0.0.0.0
server-id               = 2
log-bin                 = "MysqL-bin"
binlog-do-db            = wordpress
replicate-do-db         = wordpress
relay-log="MysqL-relay-log"
auto-increment-increment = 2
auto-increment-offset = 2

复制效果很好,但是我对自动增量有问题。如您所见,它们不是顺序的。例如:

服务器A递增:1、3、5、7、9和...

服务器B的增量为:2、4、6、8和...

当我在服务器A中插入2条记录并在服务器B中插入1条记录时,会出现问题,该表的总主键如下所示: ID:1、3、4

您看到第二个数字丢失了,因为我在服务器A中插入了两个记录。但是我需要自动递增来生成序列号,因为我们将它们用作发票编号。

我知道这是MariaDB和MysqL数据库的内部机制,以避免重复的键。但我只是想知道是否有用于顺序索引复制的替代HA解决方案。

谢谢

解决方法

对于主动主-主复制,将无法执行序列。让我解释一下我是否可以

    假设我们在服务器1上插入了两行(奇数索引)并生成了 索引1和3。
  • 同一服务器已复制到服务器2。
  • 此后,一个插入触发到服务器2,服务器将找到下一个 甚至是4。

如果写入量不大,则可以使用主从设置代替主-主设置。 对于高可用性解决方案,您可以使用帮助提供自动故障转移的协调器,对于查询负载平衡,可以使用代理SQL。因此,下面将设置完整的HA和自动故障转移

2个MySQL节点

1个proxysql

1个协调器