Percona Xtradb - 长时间停机后无法启动节点

时间:2016-12-15 01:50:45

标签: mysql percona galera

我们有一个Percona Xtradb-v2集群,设置有3个节点。

当我们关闭节点2和3时,一切正常并且同步,只留下节点1.节点停留了一周,在此期间数据库的大小增长了100GB。

当我们尝试重新启动节点2和3时,在不到一分钟的时间内,在初始SST期间启动失败。我已经尝试完全删除/ var / lib / mysql并重新启动但它具有相同的效果。

错误日志似乎显示初始SST存在问题,可能是由于初始启动时需要传输的数据量。我们有足够的磁盘空间,文件权限是正确的。 xtrabackup软件包已安装并可用(无论如何都可以使用)。

日志显示“没有这样的文件或目录”

Joiner Logs显示: Dec 15 01:21:51 xm1adb05 mysqld: #011Group state: 67e7e56d-8e95-11e6-a9d2-ce8abe8f95bb:5766440 Dec 15 01:21:51 xm1adb05 mysqld: #011Local state: 00000000-0000-0000-0000-000000000000:-1 Dec 15 01:21:51 xm1adb05 mysqld: 2016-12-15 01:21:51 13029 [Note] WSREP: New cluster view: global state: 67e7e56d-8e95-11e6-a9d2-ce8abe8f95bb:5766440, view# 54: Primary, number of nodes: 2, my index: 1, protocol version 3 Dec 15 01:21:51 xm1adb05 mysqld: 2016-12-15 01:21:51 13029 [Warning] WSREP: Gap in state sequence. Need state transfer. Dec 15 01:21:51 xm1adb05 mysqld: 2016-12-15 01:21:51 13029 [Note] WSREP: Running: 'wsrep_sst_xtrabackup-v2 --role 'joiner' --address '10.23.40.115' --datadir '/var/lib/mysql/' --defaults-file '/etc/my.cnf' --defaults-group-suffix '' --parent '13029' '' ' Dec 15 01:21:51 xm1adb05 mysqld: WSREP_SST: [INFO] Logging all stderr of SST/Innobackupex to syslog (20161215 01:21:51.575) Dec 15 01:21:51 xm1adb05 -wsrep-sst-joiner: Streaming with xbstream Dec 15 01:21:51 xm1adb05 -wsrep-sst-joiner: Using socat as streamer ... Dec 15 01:21:51 xm1adb05 mysqld: 2016-12-15 01:21:51 13029 [Warning] WSREP: Failed to prepare for incremental state transfer: Local state UUID (00000000-0000-0000-0000-000000000000) does not match group state UUID (67e7e56d-8e95-11e6-a9d2-ce8abe8f95bb): 1 (Operation not permitted) Dec 15 01:21:51 xm1adb05 mysqld: #011 at galera/src/replicator_str.cpp:prepare_for_IST():507. IST will be unavailable. ... Dec 15 01:21:51 xm1adb05 mysqld: 2016-12-15 01:21:51 13029 [Note] WSREP: Member 1.0 (xm1adb05) requested state transfer from '*any*'. Selected 0.0 (xm1adb04)(SYNCED) as donor. Dec 15 01:21:51 xm1adb05 mysqld: 2016-12-15 01:21:51 13029 [Note] WSREP: Shifting PRIMARY -> JOINER (TO: 5766440) Dec 15 01:21:51 xm1adb05 mysqld: 2016-12-15 01:21:51 13029 [Note] WSREP: Requesting state transfer: success, donor: 0 Dec 15 01:21:51 xm1adb05 mysql-systemd: State transfer in progress, setting sleep higher ... Dec 15 01:22:02 xm1adb05 -wsrep-sst-joiner: xtrabackup_checkpoints missing, failed innobackupex/SST on donor Dec 15 01:22:02 xm1adb05 -wsrep-sst-joiner: Cleanup after exit with status:2 Dec 15 01:22:02 xm1adb05 mysqld: 2016-12-15 01:22:02 13029 [ERROR] WSREP: Process completed with error: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '10.23.40.115' --datadir '/var/lib/mysql/' --defaults-file '/etc/my.cnf' --defaults-group-suffix '' --parent '13029' '' : 2 (No such file or directory) Dec 15 01:22:02 xm1adb05 mysqld: 2016-12-15 01:22:02 13029 [ERROR] WSREP: Failed to read uuid:seqno from joiner script. Dec 15 01:22:02 xm1adb05 mysqld: 2016-12-15 01:22:02 13029 [ERROR] WSREP: SST script aborted with error 2 (No such file or directory) Dec 15 01:22:02 xm1adb05 mysqld: 2016-12-15 01:22:02 13029 [ERROR] WSREP: SST failed: 2 (No such file or directory) Dec 15 01:22:02 xm1adb05 mysqld: 2016-12-15 01:22:02 13029 [ERROR] Aborting

捐助者日志显示: Dec 15 01:22:02 xm1adb04 mysqld: 2016-12-15 01:22:02 6531 [ERROR] WSREP: Failed to read from: wsrep_sst_xtrabackup-v2 --role 'donor' --address '10.23.40.115:4444/xtrabackup_sst//1' --socket '/var/lib/mysql/mysql.sock' --datadir '/var/lib/mysql/' --defaults-file '/etc/my.cnf' --defaults-group-suffix '' '' --gtid '67e7e56d-8e95-11e6-a9d2-ce8abe8f95bb:5766440' Dec 15 01:22:02 xm1adb04 mysqld: 2016-12-15 01:22:02 6531 [ERROR] WSREP: Process completed with error: wsrep_sst_xtrabackup-v2 --role 'donor' --address '10.23.40.115:4444/xtrabackup_sst//1' --socket '/var/lib/mysql/mysql.sock' --datadir '/var/lib/mysql/' --defaults-file '/etc/my.cnf' --defaults-group-suffix '' '' --gtid '67e7e56d-8e95-11e6-a9d2-ce8abe8f95bb:5766440': 22 (Invalid argument) Dec 15 01:22:03 xm1adb04 mysqld: 2016-12-15 01:22:03 6531 [ERROR] WSREP: Command did not run: wsrep_sst_xtrabackup-v2 --role 'donor' --address '10.23.40.115:4444/xtrabackup_sst//1' --socket '/var/lib/mysql/mysql.sock' --datadir '/var/lib/mysql/' --defaults-file '/etc/my.cnf' --defaults-group-suffix '' '' --gtid '67e7e56d-8e95-11e6-a9d2-ce8abe8f95bb:5766440'

类似的操作在另一个(小得多)数据库上成功启动了辅助节点,因此看起来大小可能是问题。

任何人都可以就如何初始化和重新启动其他节点提供一些帮助吗?

4 个答案:

答案 0 :(得分:0)

  • XtraBackup在您的情况下失败了。您可以通过查看XB生成的日志文件来了解XB失败。
  • 顺便说一句,你应该检查供体节点上的XB登录。 根据简短的片段XB报告(无效参数)

答案 1 :(得分:0)

重新启动节点的解决方案是首先重新启动剩余的一个集群成员(1),然后在尝试重新启动和重新加入之前完全擦除加入者(2和3)上的/ var / lib / mysql。这会导致SST并且全部工作。

问题似乎是节点2和3在节点1上被分区,因此它不允许SST完成(我想可能最终的IST被拒绝,因此SST回滚)。重新启动节点1似乎重置分区,然后SST可以完成。

我们还有一个相当小的gcache.size没有帮助,因为数据库中有很多写入。

后来的事件显示,由于供体节点上的xtrabackup问题,SST似乎失败了。 xtrabackup进程并不像我们有重复行的my.cnf设置。修复此问题并重新启动捐赠者(以结束分区)可以让事情发挥作用。

答案 2 :(得分:0)

只需切换到rsync。

wsrep_sst_method                = rsync

节点同步后,将其停止,切换到xtrabackup并重新启动。

答案 3 :(得分:-1)

请首先备份节点1的高级节点,然后在第二个和第三个节点恢复,然后尝试重新启动第二个和第三个节点,这将解决您的问题。

因为在启动第二个节点时,你的捐赠者没有从joiner接收到最后一个LSN no,因为第二个节点datadir是空的,没有数据