欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

PXC高可用集群总结

时间:2023-06-25

下面这几个问题是我对MySQL高可用集群总结,希望能让大家对PXC有一些了解!

一、PXC的主节点和从节点分别代表什么意义?

PXC中的主节点和从节点跟Replication主从节点是有巨大差别的。

首先Replication集群的数据同步只能是从主节点到从节点,而且节点的身份是固定的,主节点永远是Master,从节点永远是Slave,不能互换。

但是PXC上的主节点指的是第一个启动的节点,它不仅要启动MySQL服务,还要用Galera创建PXC集群。这些工作完成之后,主节点自动降级成普通节点。其他节点启动的时候只需要启动MySQL服务,然后再加入到PXC集群即可,所以这些节点从启动到关闭,身份一直都是普通节点。

二、为什么Node1能启动,而其他的PXC节点启动就闪退呢?

这是因为Node1启动的时候要做跟多工作,上面已经提及了。所以你没等node1把PXC集群创建出来,你就飞快的启动其他PXC节点,它们找不到Node1启动的PXC集群,所以就自动闪退了。

正确的办法是启动Node1之后,等待10秒钟,然后用Navicat访问一下,能访问了,再去启动其他PXC节点

三、如果PXC集群在运行的状态下,在宿主机上直接关机,或者停止Docker服务,为什么下次启动哪个PXC节点都会闪退?

这个要从PXC集群的节点管理说起,PXC节点的数据目录是/var/lib/mysql,好在这个目录被我们映射到数据卷上了。比如你访问v1数据卷就能看到node1的数据目录。这其中有个grastate.dat的文件,它里面有个safe_to_bootstrap参数被PXC用来记载谁是最后退出PXC集群的节点。比如node1是最后关闭的节点,那么PXC就会在把safe_to_bootstrap设置成1,代表node1节点最后退出,它的数据是最新的。下次启动必须先启动node1,然后其他节点与node1同步。

如果你在PXC节点都正常运行的状态下关闭宿主机Docker服务或者电源,那么PXC来不及判断谁是最后退出的节点,所有PXC节点一瞬间就都关上了,哪个节点的safe_to_boostrap参数就都是0。解决这个故障也很好办,那就是挑node1,把该参数改成1,然后正常启动node1,再启动其他节点就行了。

四、PXC集群只有一个节点,关闭了这个节点的容器,下次还能启动起来吗?

当然是可以的,因为PXC里只有一个节点,那么这个节点一定是按照主节点启动的,所以启动它的时候,它会启动MySQL服务,还创建出PXC集群。即便关闭了容器,下次再启动还是这个步骤,不会出现启动故障。如果说PXC集群是由多个节点组成的,node1停掉了,其他节点都正常运行。这时候启动node1是会出现闪退的,node1刚启动几秒钟就挂了。这是因为node2等一些节点正在现有的PXC中运行,这时候你启动node1,再创建一个同名的PXC集群,肯定会引发冲突啊。所以node1就闪退了。

遇到这种情况,正确的处理办法是,把node1容器删除。别紧张,没让你删除v1数据卷,所以数据丢不了。然后用从节点的命令方式创建一个node1,启动参数中与某个节点同步的设置就随便选择一个现在运行的PXC节点,然后Node1就能启动了。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。