首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MariaDB 10.2 Xtrabackup。/usr//bin/wsrep_sst_xtraback-v2 WSREP_SST_OPT_PORT:未绑定变量

MariaDB 10.2 Xtrabackup。/usr//bin/wsrep_sst_xtraback-v2 WSREP_SST_OPT_PORT:未绑定变量
EN

Stack Overflow用户
提问于 2017-11-15 10:37:23
回答 1查看 1.2K关注 0票数 2

我刚刚安装了一组新的Ubuntu16.04节点,它们应该作为MariaDB 10.2主集群工作,使用XtraBackup作为SST方法。

第一个节点的命令galera_new_cluster很好,但由于以下错误,第二个节点无法加入集群:

代码语言:javascript
复制
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259808827136 [Warning] WSREP: Gap in state sequence. Need state transfer.
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259416360704 [Note] WSREP: Running: 'wsrep_sst_xtrabackup-v2 --role 'joiner' --address '10.0.0.10' --datadir '/var/lib/mysql/'   --parent '15664' --binlog '/var/log/mysql/mariadb-bin' '
Nov 15 10:59:09 mariadb10 mysqld[15664]: /usr//bin/wsrep_sst_xtrabackup-v2: line 646: WSREP_SST_OPT_PORT: unbound variable
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259416360704 [ERROR] WSREP: Failed to read 'ready <addr>' from: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '10.0.0.10' --datadir '/var/lib/mysql/'   --parent '15664' --binlog '/var/log/mysql/mariadb-bin'
Nov 15 10:59:09 mariadb10 mysqld[15664]: #011Read: '(null)'
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259416360704 [ERROR] WSREP: Process completed with error: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '10.0.0.10' --datadir '/var/lib/mysql/'   --parent '15664' --binlog '/var/log/mysql/mariadb-bin' : 1 (Operation not permitted)
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259808827136 [ERROR] WSREP: Failed to prepare for 'xtrabackup-v2' SST. Unrecoverable.

这段日志记录的主要问题是未设置的WSREP_SST_OPT_PORT。

查看/usr/bin/wsrep_sst_xtrabackup-v2的代码,它“包括”变量可以通过两种方式设置的/usr/bin/wsrep_sst_common

  1. 使用--port命令行参数。
  2. --address命令行参数中使用端口(ip: port )

因为我现在已经知道了mariadb使用什么参数来填充/usr/bin/wsrep_sst_xtrabackup-v2的命令行参数,所以我也不知道如何让它用正确的值使用--port--address

我已经在mariadb的my.cnf中使用了一些参数,但没有任何结果。我试过的事情是:

  • wsrep_sst_opt_port=4444添加参数my.cnf。这导致了一个错误,因为参数是不支持的(但是..。最好的解决方案是仅仅尝试的结果)
  • 将端口添加到wsrep_cluster_adress中的地址。这已被接受,但没有导致端口号成为--address参数的一部分。
  • 将端口添加到wsrep_node_address中的地址。这也被接受了,但也没有在--address参数中的portnumber中重新使用。

作为解决办法,我确实修改了/usr/bin/wsrep_sst_common,并添加了以下代码(从注释之后开始):

代码语言:javascript
复制
if [ -n "${WSREP_SST_OPT_ADDR_PORT:-}" ]; then
  if [ -n "${WSREP_SST_OPT_PORT:-}" ]; then
...
  else
    readonly WSREP_SST_OPT_PORT="$WSREP_SST_OPT_ADDR_PORT"
  fi
fi

# Start of the workaround
if [ -z "${WSREP_SST_OPT_PORT:-}" ]; then
  readonly WSREP_SST_OPT_PORT="4444"
fi
# End of the workaround

这至少解决了我的非启动集群,但我仍然很高兴知道如何让它工作,没有这个解决办法.

EN

回答 1

Stack Overflow用户

发布于 2017-11-15 12:39:14

您所经历的行为实际上是MariaDB 10.2.10中的一个bug,MariaDB团队已经提出了一个修复方案,很可能在不久的将来发布。

这是指向MariaDB bug跟踪器上问题的链接:

https://jira.mariadb.org/browse/MDEV-14256

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47305173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档