关于MariaDB Galera Cluster中的多主复制时的wsrep_auto_increment_control的问题

首先

大家好!大家正在使用MariaDB Galera Cluster进行多主复制。

在多主节点的情况下,Galera会确保每个组成集群的节点之间没有冲突,并且似乎也会合理地处理AUTO_INCREMENT。

自动增加

如果你不知道AUTO_INCREMENT是什么,可在之前的文章中参考一下。

关于MariaDB的AUTO_INCREMENT

正如上述的文章所提到的,对于多主节点(集群)的情况,需要设置增量为集群大小,并且偏移量需要逐个递增1。

wsrep自动增量控制

这就是这个参数的出现。

wsrep-auto-increment-control – Galera Cluster 文档

我們可以看到這句話中提到了在集群中使用AUTO_INCREMENT的值,並希望它可以提供一個不錯的選擇。

Galera使用的术语中,通过调整增量和偏移量,可以连接到Primary组件的节点数量。这样可以降低两个节点使用相同增量值的可能性。

由于它是默认的ON参数,所以并没有特别需要担心的,但在单一主节点的情况下,也可以明确地将其关闭。

我来确认一下数值。

我在验证环境中实际进行了确认。以下是一个由3个节点组成的集群。

[root@mariadb1 ~]# mysql -u root -e "SHOW STATUS LIKE 'wsrep_cluster_size'" 
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

[root@mariadb1 ~]# mysql -uroot -e "SHOW VARIABLES LIKE '%auto_inc%';"
+------------------------------+-------+
| Variable_name                | Value |
+------------------------------+-------+
| auto_increment_increment     | 3     |
| auto_increment_offset        | 2     |
| wsrep_auto_increment_control | ON    |
+------------------------------+-------+

[root@mariadb2 ~]# mysql -uroot -e "SHOW VARIABLES LIKE '%auto_inc%';"
+------------------------------+-------+
| Variable_name                | Value |
+------------------------------+-------+
| auto_increment_increment     | 3     |
| auto_increment_offset        | 3     |
| wsrep_auto_increment_control | ON    |
+------------------------------+-------+

[root@mariadb3 ~]# mysql -uroot -e "SHOW VARIABLES LIKE '%auto_inc%';"
+------------------------------+-------+
| Variable_name                | Value |
+------------------------------+-------+
| auto_increment_increment     | 3     |
| auto_increment_offset        | 1     |
| wsrep_auto_increment_control | ON    |
+------------------------------+-------+

增量是指集群的大小,偏移量是准确地发生偏移!

最后

反而不是多主机的人需要注意的参数。

可以参考

    Auto increments in Galera

    MariaDBでGalera Clusterを構成する(CentOS 7使用) … 構築メモで、wsrep_auto_increment_controlはOFFにしている。マルチマスタで使うかどうかは明示していない。

    MariaDB Galera Cluster での AUTO_INCREMENT の扱いについて … IDがINTだと枯渇しちゃうから気を付けようねという記事。確かに。

    Multi-Valued INSERTs, AUTO_INCREMENT & Percona XtraDB Cluster … マルチマスタの場合、PK重複でレプリケーションが壊れてしまう例を示す。master-slave構成ではもっとも高いINCREMENTはmasterが持つべきであり、その構成の場合slaveはwsrep_auto_increment_controlをOFFにすべきと指摘している

bannerAds