Mysql PXC原理和维护

 

PXC原理:
1:PXC使用端口
3306:数据库对外服务的端口,也可自定义其他端口号
4444:请求SST,SST指数据一个镜像传输,在PXC中默认使用xtrabackup,或者使用rsync、mysqldump来完成数据初始状态一致。
4567:PXC集群组成员之间进行沟通交流的一个端口号
4568:传输IST用的端口,相对于SST来说的一个增量。

Mysql复制,不管是异步还是半同步,都存在一定的延迟。
PXC最大的优势就是强一致性,无同步延迟,PXC中每一个节点都可以读写。
PXC一个节点写完后就用箱子(DatePage)推送给Group里所有的成员,就是一个写结果,类似于Oracle中数据块复制。

PXC集群每次发起一个动作,都会有一个唯一的编号Global Trx Id,
其他节点多一个动作:apply_cb
动作发起者:commit_cb.
以上这些动作都是通过4567端口交互的。
PXC集群中,如果主节点写入过大,apply_cb会跟不上,可以将wsrep_slave_threads配置成和CPU的个数相等或者1.5倍。

SST:state snapshot transfer
每个节点都有一份独立的数据。
早启动第一个节点,集群中没有其他成员,第一个节点就是老大。
在第一个节点上可以把相关账号创建,数据的基本初始化,都完成。
在第二个节点启动加入集群时候,查看参数wsrep_cluster_address=gcomm://xxxx,xxxx,xxxx
第二个节点是新成员,没有ID,第一个节点就把自己完全备份(snapshot)传送给新加入的节点(SST)。
传输SST的几种办法:xtrabackup、mysqldump、rsync.
每个节点需要安装socat、perl-IO_Socket、nc包。

PXC的维护:
假如节点3需要停机维护,加内存、换硬盘,在节点3启动后,希望能传送IST,
节点3能停机多长时间,可以传送IST,可以查看wsrep_provider_options="gcache.size=1G",
Gcache.size设置多大合适,可以计算一个小时的binlog量。

如果3个节点全部关闭,在启动时候会发生什么?
会全部传输SST,所以要先启动最后关闭的节点,才不会丢失数据。
如需传输IST,则需要滚动维护,Node1先关闭,修复完成,加回集群,然后Node2关闭,修复完成,加回集群,
原则上要保持group里最少一个成员活着,所有节点最少要有一个在线,进行滚动重启维护。
在有一个节点需要长时间停机,在启动后,可以利用主从复制,再把这个节点转化成PXC里的节点。








 

 

你可能感兴趣的:(Mysql)