关于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にすべきと指摘している