关于PXC节点数量的问题:运行中的PXC节点的数量不能少于集群的一半,这里为了避免限流只启动一个PXC节点进行导入数据,之后再将数据拷贝到其他节点,那这里只启动一个PXC节点也能正常对外服务吗?
只有在意外关闭的情况下,如果超过一半节点不可访问,pxc集群就不可用。
正常关闭pxc节点会告知pxc集群,集群规模正常缩小,是没有问题的,就算随后剩下一个节点也是可以用的。
由于A、B异常关闭,剩余的节点C无法单独形成法定人数,集群将变为non primary状态。此时节点C上的mysql进程仍在运行并可以连接,但所有涉及数据的SQL查询都将报错:
mysql> select * from worker;
ERROR 1047 (08S01): WSREP has not yet prepared node for application use
此时通过systemctl start mysql将无法正常启动A、B,必须手动指定节点C为主节点,才可拉起A、B。方法如下(节点C执行):
mysql> SET GLOBAL wsrep_provider_options='pc.bootstrap=true';
注意,此方法仅在其余节点异常关闭时才可使用,否则将会产生两个不同的集群。
MariaDB [(none)]> show status like 'wsrep_cluster_status';
±---------------------±------------+
| Variable_name | Value |
±---------------------±------------+
| wsrep_cluster_status | non-Primary |
±---------------------±------------+
1 row in set (0.001 sec)
确保其它集群关闭的情况下,使节点正常
SET GLOBAL wsrep_provider_options='pc.bootstrap=true';
MariaDB [(none)]> SET GLOBAL wsrep_provider_options='pc.bootstrap=true';
Query OK, 0 rows affected (0.004 sec)
MariaDB [(none)]> show status like 'wsrep_cluster_status';
±---------------------±--------+
| Variable_name | Value |
±---------------------±--------+
| wsrep_cluster_status | Primary |
±---------------------±--------+
1 row in set (0.001 sec)
MariaDB [(none)]> exit
Bye
[oracle@204_maridb mysql]$
其它节点执行
/usr/bin/mysqld_safe --wsrep-recover
根据错误日志获取掉线时的seqno,修改参数文件 grastates.dat
vi grastates.dat
–如果此seqno 大于存活节点的wsrep_local_cached_downto值,
–直接启动mysql服务
systemctl start mysql
注意:
A 节点存活,B节点加入后,C节点加入时需要指定A作为 sst的donor
在A节点执行 show global variables like '%node_name%';
mysqld_safe --wsrep_sst_donor=nodeA
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




