我有1台服务器配置了galera,4台服务器配置了mariadb,1台服务器配置了have。
但是,当我想在任何服务器上进行更新时,我会得到错误“死锁: wsrep中止的事务”或"wsrep_max_ws_rows越出“(有时)。
服务器功能强大,内存为32 of,CPU为24个(VmWare)。
gard.conf (ip 1.1.1.110):
GALERA_NODES="1.1.1.111:4567 1.1.1.112:4567 1.1.1.113:4567 1.1.1.114:4567"
GALERA_GROUP="mariadb_cluster"
GALERA_OPTIONS="pc.wait_prim=no"
LOG_FILE="/var/log/garbd.log"cluster.cnf (4服务器mariadb 1.1.1.111至1.1.1.114):
[mysqld]
query_cache_size=0
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_type=0
bind-address=0.0.0.0
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
join_buffer_size = 1M
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="mariadb_cluster"
wsrep_cluster_address="gcomm://1.1.1.111,1.1.1.112,1.1.1.113,1.1.1.114"
wsrep_sst_method=rsync
wsrep_node_address="1.1.1.111"
wsrep_node_name="mysqlcl0X"
wsrep_max_ws_rows=2048
wsrep_max_ws_size=8G
wsrep_provider_options = "gcs.fc_limit = 2048; gcs.fc_factor = 0.99; gcs.fc_master_slave = yes"更新时的错误直接发生在每台服务器的客户端上,所以错误不是case,我只是把配置放在以防万一。
haproxy.cfg:
listen galera
bind *:3306
mode tcp
timeout client 60000ms
timeout server 60000ms
balance leastconn
server 1.1.1.111 1.1.1.111:3306 check
server 1.1.1.112 1.1.1.112:3306 check
server 1.1.1.113 1.1.1.113:3306 check
server 1.1.1.114 1.1.1.114:3306 check我在配置中遗漏了什么?
已经非常感谢你了!
发布于 2020-12-29 00:30:19
https://mariadb.com/kb/en/galera-cluster-system-variables/#wsrep_最大值_ws_行
也许=0至少能解决一部分问题。
如果问题确实是事务中的“太多”行,那么让我们讨论一下事务,并寻找更有效的方法。
发布于 2020-12-29 14:26:31
我已经用这个选项解决了这个问题:
wsrep-retry-autocommit = 100我不认为这是正确的做法,它需要一段时间来运行,但它是有效的。
继续失败..。
1213 Deadlock: wsrep aborted transaction https://serverfault.com/questions/1047841
复制相似问题