Percona XtraDB Cluster 节点恢复

One*_*roi 2 xtradb percona percona-xtradb-cluster

我一直在审查 XtraDB 集群,并使用 4 个实例在 Openstack 上创建了一个 PoC 环境,在我的弹性测试期间失败了。

根据 pxc 文档:http ://www.percona.com/doc/percona-xtradb-cluster/howtos/virt_sandbox.html ,其中涵盖了 3 个节点安装,我选择了第 4 个。

  1. 初始设置完成数据加载测试通过,所有节点同步更新,使用 1.6GB 测试 sql 文件加载数据库。
  2. 节点的故障和恢复开始,此测试需要停止节点上的 mysql 服务,创建并随后删除数据库以测试幸存的节点复制,并启动关闭的节点以重新同步。
    1. 这适用于节点 4,3,2。
    2. 根据 pxc 文档,Node1 本质上是一个控制器,不会重新加入集群。

所以我的问题如下:

  1. 如果幸存的节点已将数据写入其中,如何使控制器节点恢复服务
  2. 使用4个节点作为参考,有没有办法消除node1中的这个单点故障?(如果一个幸存的节点在控制器(节点 1)关闭/不同步的情况下重新启动,该节点也将失败)。

小智 6

根据您在节点一上的症状,您正在使用

wsrep_cluster_address=gcomm:// 

在您的配置文件中,这意味着该节点将启动一个新集群。您可以通过 wsrep_cluster_size 变量在 node1 上为 1,在其他节点上为 3 来确认这一点。如果要将 node1 加入现有集群,则应指定

wsrep_cluster_address=gcomm://(这里是运行节点的ip)

在这种情况下,node1 将重新加入集群。

一些额外的想法:

  • 由于PXC(Percona Xtradb Cluster)中的quorum机制,不建议在4个节点上运行。推荐使用奇数个节点,这样在网络分裂的情况下,分裂集群的一部分将能够拥有多数。

  • 您可以在 [mysqld_safe] 部分使用 wsrep_urls 代替 wsrep_cluster_address。

免责声明:我为 Percona 工作。