每次我运行 mysqldump 或表优化时,Galera 集群似乎都会死锁。
我已经多次在 MariaDB 10.1 数据库服务器上运行了“mysqlcheck”和“mysqldump”。(该服务器与另外两台服务器一起在 Galera 集群中运行)
我注意到这两个任务在运行了一小段时间后就停止了并且没有显示任何进度。
例如,mysqldump 在创建 14,0 MB(14.760.912 字节)的转储文件后停止并且不再继续。
修复和优化表的 mysqlcheck 也挂起了。
在这两种情况下,集群都会开始出现问题,而让它恢复正常工作的唯一方法是让执行该作业的服务器离线,同时让另一台服务器离线。然后我让它们一个接一个地重新上线,集群又可以正常工作了。
我不确定是什么导致了这些问题。我没有在系统日志中发现任何错误,但在服务器关闭期间我注意到了以下情况:
1 月 10 日 20:43:46 法国 mysqld[1015]: 2016-01-10 20:43:46 140096330258176 [警告] WSREP: TO 隔离失败:3,架构:mysql,sql:OPTIMIZE TABLE proc
。检查 wsrep 连接状态并重试查询。
1 月 10 日 21:58:47 法国 mysqld[1034]: 2016-01-10 21:58:47 139691511322368 [警告] WSREP: TO 隔离失败:3,架构:smf,sql:OPTIMIZE TABLE smf_categories
。检查 wsrep 连接状态并重试查询。 1 月 10 日 21:58:47 法国 mysqld[1034]:2016-01-10 21:58:47 139691511322368 [警告] 中止与 db 的连接 24:“smf”用户:“maintenance”主机:“localhost”(未知错误)1 月 10 日 21:58:47 法国 mysqld[1034]:2016-01-10 21:58:47 139691509827328 [警告] WSREP:TO 隔离失败:3,架构:(null),sql:SELECT 1 FROM mysql.user LIMIT 1.检查 wsrep 连接状态并重试查询。
我发现问题出在 Galera。当我将服务器从集群中取出时,优化和转储作业运行得更快,并且正确完成。
答案1
Tom 在 MariaDB KB 上给我指出了正确的方向: https://mariadb.com/kb/en/mariadb/galera-cluster-fail-during-dump-or-optimize/#comment_1911
该问题似乎是由流量控制引起的。我已通过调整流量控制设置解决了该问题。
我通过添加以下 wsrep_provider_options 实现了此目的:gcs.fc_limit=500; gcs.fc_master_slave=YES; gcs.fc_factor=1.0
然而它也产生了一个新问题,现在作业可以正确完成,但之后集群仍然瘫痪。