Percona XtraDB群集节点恢复

我一直在审查XtraDB集群,并使用4个实例在Openstack上创build了一个PoC环境,这在我的弹性testing期间已经下降了。

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

  1. 初始安装完成数据加载testing通过,与所有节点更新同步使用1.6GB的testingsql文件加载数据库。
  2. Failiure和节点的恢复开始,这个testing需要在一个节点上停止mysql服务,创build并随后丢弃一个数据库来testing幸存的节点复制,并且启动被closures的节点来重新同步。
    1. 这对节点4,3,2工作正常。
    2. 每个pxc文档的Node1本质上是一个控制器,不会重新join集群。

所以我的问题如下:

  1. 如果幸存的节点已经写入数据,那么如何返回一个控制器节点来服务
  2. 使用4个节点作为参考,有没有办法在node1中消除这个单点故障? (如果一个幸存的节点重新启动,并且控制器(node1)向下/不同步,该节点也将失败)。

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

 wsrep_cluster_address = gcomm会议:// 

在你的configuration文件中,这意味着节点将启动一个新的群集。 您可以使用wsrep_cluster_sizevariables在node1上为1,在其他上为3。 如果要将node1join到已经存在的集群中,则应该指定

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

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

一些额外的想法:

  • 由于PXC(Percona Xtradb集群)中的仲裁机制,因此不build议在4个节点上运行它。 build议使用奇数个节点,所以在networking拆分的情况下,拆分簇的一部分可以占多数。

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

免责声明:我为Percona工作。

对这个问题的进一步研究似乎是一个可行的方法(让这个答案暂时不被接受,以更好的方式答复某人):

  1. 循环设置
    1. 每个pxc文档都具有从节点1同步的所有节点
    2. 停止节点2重新指向节点3,启动节点2
    3. 停止节点3重新指向节点4,启动节点3
    4. 停止node1重新指向node2,启动节点1

此设置似乎至less通过断开连接来减less任何节点的损失,并且节点同步的恢复没有问题。

如果Mysql不会启动并且原因是损坏的数据库表。

复制服务器正在做什么,并从停止服务器为客户端数据库获取良好的副本。

它从$ MYSQLHOME文件通过数据库是DB。

我们使用scp来移动好的文件,然后通过启动坏服务器的mysql来再次启动同步。