mariadb galera - 节点关闭时出错ERROR 1047 WSREP尚未为应用程序使用准备节点

时间:2016-11-17 11:04:58

标签: mariadb galera

我在2台CentOs 6.6服务器上安装了2个Mariadb Galera节点(mariadb-galera-10.0.27-linux-x86_64.tar.gz)。

安装完成后,我使用参数$this->_collection->setOrder(array('price', 'price_plus_shipping'),Varien_Data_Collection::SORT_ORDER_DESC); 启动node1,然后在没有此参数的情况下启动node2。 它们工作正常,数据在2个节点之间成功同步。

但是,当我关闭node1时。 Node2仍在运行,但是当我尝试访问数据库时。它显示了这个错误:

--wsrep-new-cluster

在这种情况下会发生什么? 这是我在2 NODES(只是不同的IP地址)上的配置

use testdb;
ERROR 1047 (08S01): WSREP has not yet prepared node for application use 

2 个答案:

答案 0 :(得分:6)

TWOD-NODE CLUSTERS

双节点群集中,单节点故障会导致另一个群集停止工作。

<强>场合

您的群集只包含两个节点。其中一个节点不合理地离开集群。也就是说,它不是通过init或systemd关闭,而是崩溃或遭受网络连接的损失。保留的节点变为非运行状态。在第三方(例如人工操作员或其他节点)提供某些附加信息之前,它仍然存在。

如果节点在另一个节点离开集群之后仍然可以运行,那么两个节点中的每个节点都会认为自己是主要组件。为了防止这种情况,节点变得不可操作。

<强>解决方案

您可以使用两种解决方案:

  • 您可以使用pc.boostrap wsrep Provider选项引导幸存节点以形成新的主要组件。为此,请登录数据库客户端并运行以下命令:
  

SET GLOBAL wsrep_provider_options =&#39; pc.bootstrap = YES&#39;;

这将幸存节点作为新的主要组件引导。当另一个节点恢复在线状态或重新获得与该节点的网络连接时,它将启动状态转移并赶上该节点。

  • 如果您希望节点继续运行,可以使用pc.ignore_sb wsrep Provider选项。为此,请登录数据库客户端并运行以下命令:
  

SET GLOBAL wsrep_provider_options =&#39; pc.ignore_sb = TRUE&#39;;

节点恢复处理更新,即使遇到裂脑情况,它也会继续这样做。

注意警告:在多主机设置中启用pc.ignore_sb是危险的,因为前面提到了裂脑情况的风险。但是,它确实简化了主从集群中的事情(特别是在您只使用两个节点的情况下)。

除了上面提供的解决方案,您可以完全使用 Galera Arbitrator 来避免这种情况。 Galera Arbitrator在仲裁计算中充当奇数节点。这意味着,如果您在双节点群集中的一个节点上启用Galera Arbitrator,则该节点仍然是主要组件,即使另一个节点发生故障或丢失网络连接也是如此。

http://galeracluster.com/documentation-webpages/twonode.html

答案 1 :(得分:1)

可能的原因是你的node1非常失败,或者至少node2认为它确实失败了。在这种情况下,2节点集群达到裂脑情况,其中集群的其余部分无法确定它们是否应该是主要组件。这就是不建议使用双节点集群的原因。

检查node1的日志以查看它是否正常关闭,如果是,则查看node2的日志,看看它是如何看待情况的。如果它看到node1正常关闭,它会说像

[Note] WSREP: forgetting xxxxxxx (tcp://X.X.X.X:XXXX)

等;但如果它认为其他节点丢失了,那就更像是

[Note] WSREP: (70f85e74, 'tcp://x.x.x.x:xxxx') turning message relay requesting on, nonlive peers: tcp://X.X.X.X:XXXX

等。

有关更多详细信息,请参阅http://nirbhay.in/blog/2015/02/split-brain/并记录裂脑情况的示例。

避免使用最便宜的方法是使用Galera仲裁员:http://nirbhay.in/blog/2013/11/what-is-galera-arbitrator/