mysql pxc节点连通性_pxc接点挂掉同步问题

给楼上的几位朋友的一点点心得

#   场景:5个宕机的节点宕掉那一瞬间的数据分别为ABCDE 这5个顺序的版本 A是最老的版本 E是最新的版本   第一个节点是根节点

#   实验:启动第一个节点(数据版本为A的节点)

#  It may not be safe to bootstrap the cluster from this node. It was not the last one to leave the cluster and may not contain all the updates. To force cluster bootstrap with this node, edit the grastate.dat file manually and set safe_to_bootstrap to 1

#  大概意思是说:从这个节点启动可能不安全,因为它不是最后一个离开集群环境的,可能不包含最新的更新.若要强制使用这个节点启动集群,请修改grastate.bat文件,将safe_to_boostrap设置为1

#  启动第二个节点(我加入的那个节点还没启动呢,我不着急启动)  无法与集群建立连接

#PS:五个节点的集群环境均为PXC,第二三四五个节点的加入的节点都是第一个几点

#  启动第N个节点(非开始节点) 与第二个同样

#现状:所有的节点都宕机了,根节点不是最新节点无法启动,其他节点因为根节点未启动而不能启动,该怎么处理呢?

#   猜想:尝试上面所述的删除grastate.dat文件再重第一个节点开始启动

#  rm -rf /var/lib/docker/volumes/mysql1-v/_data/grastate.dat

#  rm -rf /var/lib/docker/volumes/mysql2-v/_data/grastate.dat

#  rm -rf /var/lib/docker/volumes/mysql3-v/_data/grastate.dat

#  rm -rf /var/lib/docker/volumes/mysql4-v/_data/grastate.dat

#  rm -rf /var/lib/docker/volumes/mysql5-v/_data/grastate.dat

#  启动第一个节点我们发现启动成功了,但是数据只保留了这个节点宕机时的数据

#  启动第二个节点数据被同步成了第一个节点的数据

#  启动第N个节点数据被同步成了第一个节点的数据

#结论:当所有节点都宕机时,如果最后一个宕机的不是根节点,那么直接删除grastate.dat文件并重启容器的话,数据会丢失,如果最后一个宕机的是根节点,那么数据应该没问题

#目标:无论最后一个离开集群的节点是否是根节点,我们都希望能够保存最新版的数据并且重启集群

#方案:个人方案原理如下

确定最后一个宕机的节点并让它成为根节点重启,再运行其他普通节点

#问题:1.我们应该如何得知最后一个宕机的节点?

#这个方法应该不少 比如使用haproxy负载均衡页面中的失去连接时间来看  失去连接时间最短的即是最后离开节点的

#  2.我们应该如何指定这个节点从普通节点变为根节点?

#docker好像不支持创建容器后再追加或者修改配置 那么我们可以删除所有卷中的grastate.dat文件,重新创建并运行容器即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL PXC(Percona XtraDB Cluster)是一个基于 Galera Cluster 技术的多复制数据库集群方案,它通过使用多同步复制的方式来实现强一致性原理。 PXC 使用了以下关键技术来实现强一致性: 1. Galera Replication:PXC 使用 Galera Replication 来实现数据的同步复制。Galera Replication 是一种基于多同步的复制技术,它通过在集群中的每个节点之间同步二进制日志来确保数据的一致性。当一个节点接收到事务提交时,它会将该事务应用到本地数据库,并将其传播到其他节点,确保所有节点上的数据保持一致。 2. 一致性协议:PXC 使用了 Galera Replication 中的多一致性协议来保证数据的一致性。该协议使用了两阶段提交(2PC)的方式来确保所有节点在提交事务之前达成一致的状态。在第一阶段,一个事务的变更在本地节点上被应用,然后节点将变更发送到其他节点,并等待其他节点的确认。在第二阶段,如果所有节点都确认了该事务的变更,那么该事务就会被提交。否则,该事务将会被回滚。 3. 数据写入冲突解决:在 PXC 中,当有多个事务同时尝试修改相同的数据时,可能会出现写入冲突。为了解决这个问题PXC 使用了基于多版本并发控制(MVCC)的机制。每个事务在修改数据时会创建一个新的版本,并通过版本号来标识。如果两个事务尝试修改同一行数据,并且它们的版本号冲突,那么其中一个事务将会被回滚,以确保数据的一致性。 总结起来,MySQL PXC 实现强一致性原理的关键在于使用 Galera Replication 技术,并结合一致性协议和数据写入冲突解决机制来确保数据在集群中的所有节点上保持一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值