首页 > 其他分享 >PXC某个节点异常恢复

PXC某个节点异常恢复

时间:2023-09-20 23:06:14浏览次数:45  
标签:00 08 某个 19T09 2023 PXC MY 节点

Percona XtraDB Cluster是mysql的一种高可用架构,集群由多个节点组成,建议至少配置3个节点,其中每个节点都包含跨节点同步的相同数据集。以三节点为例,集群某个节点因硬件、网络、脑裂等原因,退出集群后,如果剩余两节点写集缓存(gcache.size)中仍然还有异常节点退出集群后执行的事务信息,则启动异常节点可以通过IST(Incremental State Transfer)方式自动恢复,如果写集缓存(gcache.size)已经不存在,则自动启动SST(State Snapshot Transfer),即从其中一个正常节点复制完整副本。
另外如果一个错误的配置更改阻止了MySQL的正常加载,Galera将删除节点的状态,并强制该节点的SST恢复 ,因此如果数据库无法正常拉起自动恢复,可尝试如下方法进行恢复。

1 创建新datadir目录

将异常节点原datadir目录备份,删除,创建新的目录并且修改目录权限,启动mysql,因新datadir目录内无任何文件,阻止了mysql正常加载,强制该节点的SST恢复。

[root@mysqlpxc3 mysql]# mv data data_backup
[root@mysqlpxc3 mysql]# mkdir -p data
[root@mysqlpxc3 mysql]# chown mysql:mysql data
[root@mysqlpxc3 mysql]# systemctl start mysql

注意一定保证此目录下为空,因为在执行systemctl start mysql命令时,会自动初始化,会检测此目录下是否存在文件,有则abort初始化进程。

2023-09-19T09:45:53.599655+08:00 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.30-22.1) initializing of server in progress as process 8085
2023-09-19T09:45:53.600192+08:00 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
2023-09-19T09:45:53.600504+08:00 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2023-09-19T09:45:53.600519+08:00 0 [ERROR] [MY-013236] [Server] The designated data directory /data/mysql/data/ is unusable. You can remove all files that the server added to it.
2023-09-19T09:45:53.600561+08:00 0 [ERROR] [MY-010119] [Server] Aborting

2 复制密钥和证书文件

故障节点启动后会因为集群节点间密钥和证书文件不一致导致加入集群失败,这是预期行为。默认情况下,系统变量pxc_encrypt_cluster_traffic设置为ON,意味着所有集群流量都使用证书进行保护,所以要求所有节点使用相同的密钥和证书文件,systemctl start mysql启动初始话过程中生成默认密钥和证书文件,并将其放在datadir数据目录下,这就造成故障节点和其他节点密钥和证书文件不一致,因此需要将故障节点的*.pem全部删除,并将某一个正常节点数据目录下的 *.pem文件全部复制到故障节点。

mysql> show variables like 'pxc_encrypt_cluster_traffic';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| pxc_encrypt_cluster_traffic | ON    |
+-----------------------------+-------+
1 row in set (0.01 sec)

[root@mysqlpxc3 data]# rm -rf *.pem

通过scp从正常节点获得密钥和证书文件。

[root@mysqlpxc1 data]# scp *.pem mysqlpxc3:/data/mysql/data/
root@mysqlpxc3's password: 
ca-key.pem                                                                                                                                                                                             100% 1672   106.7KB/s   00:00    
ca.pem                                                                                                                                                                                                 100% 1120     2.3MB/s   00:00    
client-cert.pem                                                                                                                                                                                        100% 1120     1.4MB/s   00:00    
client-key.pem                                                                                                                                                                                         100% 1680     2.8MB/s   00:00    
private_key.pem                                                                                                                                                                                        100% 1680     5.4MB/s   00:00    
public_key.pem                                                                                                                                                                                         100%  452     1.9MB/s   00:00    
server-cert.pem                                                                                                                                                                                        100% 1120     4.3MB/s   00:00    
server-key.pem

因证书不一致,错误日志中报错记录如下:

2023-09-19T09:49:12.920624+08:00 0 [Warning] [MY-000000] [Galera] last inactive check more than PT1.5S (3*evs.inactive_check_period) ago (PT3.50235S), skipping check
2023-09-19T09:49:42.431993+08:00 0 [Note] [MY-000000] [Galera] PC protocol downgrade 1 -> 0
2023-09-19T09:49:42.432025+08:00 0 [Note] [MY-000000] [Galera] Current view of cluster as seen by this node
view ((empty))
2023-09-19T09:49:42.432062+08:00 0 [ERROR] [MY-000000] [Galera] failed to open gcomm backend connection: 110: failed to reach primary view (pc.wait_prim_timeout): 110 (Connection timed out)
         at gcomm/src/pc.cpp:connect():161
2023-09-19T09:49:42.432069+08:00 0 [ERROR] [MY-000000] [Galera] gcs/src/gcs_core.cpp:gcs_core_open():219: Failed to open backend connection: -110 (Connection timed out)
2023-09-19T09:49:43.432530+08:00 0 [Note] [MY-000000] [Galera] gcomm: terminating thread
2023-09-19T09:49:43.432566+08:00 0 [Note] [MY-000000] [Galera] gcomm: joining thread
2023-09-19T09:49:43.432633+08:00 0 [ERROR] [MY-000000] [Galera] gcs/src/gcs.cpp:gcs_open():1811: Failed to open channel 'pxc-cluster' at 'gcomm://192.168.3.8,192.168.3.9,192.168.3.10': -110 (Connection timed out)
2023-09-19T09:49:43.432641+08:00 0 [ERROR] [MY-000000] [Galera] gcs connect failed: Connection timed out
2023-09-19T09:49:43.432646+08:00 0 [ERROR] [MY-000000] [WSREP] Provider/Node (gcomm://192.168.3.8,192.168.3.9,192.168.3.10) failed to establish connection with cluster (reason: 7)
2023-09-19T09:49:43.432653+08:00 0 [ERROR] [MY-010119] [Server] Aborting
2023-09-19T09:49:43.432966+08:00 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.30-22.1)  Percona XtraDB Cluster (GPL), Release rel22, Revision aff6a8b, WSREP version 26.4.3.
2023-09-19T09:49:43.433482+08:00 0 [Note] [MY-000000] [Galera] dtor state: CLOSED

3 再次启动节点

[root@mysqlpxc3 data]# systemctl start mysql

4 同步状态监控

可通过视图performance_schema.pxc_cluster_view、dstat工具监控同步状态。

mysql> select * from performance_schema.pxc_cluster_view;
+-----------+--------------------------------------+--------+-------------+---------+
| HOST_NAME | UUID                                 | STATUS | LOCAL_INDEX | SEGMENT |
+-----------+--------------------------------------+--------+-------------+---------+
| mysqlpxc3 | 40c7a6dc-5693-11ee-a076-f77a3da62fce | JOINER |           0 |       0 |
| mysqlpxc1 | 923ea791-5687-11ee-8ac1-7214e14114e8 | SYNCED |           1 |       0 |
| mysqlpxc2 | 97508243-5687-11ee-a3da-2eec6c90e809 | SYNCED |           2 |       0 |
+-----------+--------------------------------------+--------+-------------+---------+
3 rows in set (0.00 sec)

[root@mysqlpxc3 data]#dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  0   0  99   0   0   0|  61k 3391k|   0     0 |   0     0 |2009  1892 
  0   0  99   0   0   0|   0     0 | 174B  790B|   0     0 |1988  2000 
  0   0 100   0   0   0|   0     0 | 485B 3469B|   0     0 | 571   912 
  0   0 100   0   0   0|   0   216k| 290B  584B|   0     0 | 684   997 
  0   0 100   0   0   0|   0     0 | 606B 1064B|   0     0 | 642  1034 
  0   0 100   0   0   0|   0     0 | 174B  286B|   0     0 | 632  1001 
  0   0 100   0   0   0|   0     0 | 619B 1989B|   0     0 |1210  1310 
  0   0 100   0   0   0|   0     0 | 306B  822B|   0     0 | 561   898 
  0   0 100   0   0   0|   0    44k| 246B  698B|   0     0 | 902  1125 
  0   0 100   0   0   0|   0  4096B| 688B 1522B|   0     0 | 926  1177 
  0   0 100   0   0   0|   0     0 | 174B  550B|   0     0 | 573   889 
  0   0 100   0   0   0|   0     0 | 306B  694B|   0     0 | 586   949 
  0   0 100   0   0   0|   0     0 | 174B  306B|   0     0 | 585   903 
  0   0 100   0   0   0|   0    72k| 476B  856B|   0     0 | 599   964

5 集群状态检查

通过完成过后检查数据库集群状态。

mysql> show status where Variable_name in ('wsrep_cluster_size','wsrep_cluster_status','wsrep_connected','wsrep_ready') ;
+----------------------+---------+
| Variable_name        | Value   |
+----------------------+---------+
| wsrep_cluster_size   | 3       |
| wsrep_cluster_status | Primary |
| wsrep_connected      | ON      |
| wsrep_ready          | ON      |
+----------------------+---------+
4 rows in set (0.00 sec)

标签:00,08,某个,19T09,2023,PXC,MY,节点
From: https://blog.51cto.com/u_13482808/7543833

相关文章

  • Mysql中如何批量更新数据库中某个字段值中的部分内容;
    在平时的开发过程中,偶尔会遇到需要批量更新数据库中某个字段值的部分内容,比如某个字段存储的是图片的URL路径,这个路径中的域名无法访问了,需要更新为另一个ip地址。Mysql中提供了REPLACE函数:可以使用了REPLACE函数来替换原来字段中的一部分数据为新值。UPDATEcar_data_hisSETc......
  • js实现选中某个区域展示引导信息(插件库)
    在公司做项目,经常存在类似「引导」的功能,引导用户该先点哪后点哪,或者做一些首次使用的提示找到了个比较好用且轻量化的js组件intro.js ,有常规的灰色遮罩高亮特定dom提示的(hello-world),也有用户点到指定标签/位置上的提示(hints)感觉还是不错的,并且,有免费版本......
  • Hadoop集群中增加新节点
    向一个正在运行的Hadoop集群中增加几个新的Nodes1.新节点上部署java/hadoop程序,配置相应的环境变量2.新节点上增加用户,从master上拷贝id_rsa.pub并配置authorized_keys3.新节点上设置host,需要有集群中各节点的host对应4.新节点上建立相关的目录,并修改属主5.master的slaves文件......
  • 在线问诊 Python、FastAPI、Neo4j — 创建 疾病节点
    目录疾病数据创建节点根据检查结果、医生的临床经验得出疾病疾病数据disease_data.csv建议值用“”引起来。避免中间有,号造成误识别疾病"干眼""右膝髌上囊及关节腔少量积液"创建节点importloggingimportpandasaspdfromutils.neo4j_providerimportdriverloggi......
  • 在线问诊 Python、FastAPI、Neo4j — 创建 检查节点
    目录症状数据创建节点根据不同的症状,会建议做些相对应的检验、检查症状数据examine_data.csv建议值用“”引起来。避免中间有,号造成误识别检查"膝关节核磁""眼睛酸胀""视力""砂眼""辨色力""角膜""眼底"创建节点参考创建药品节点。importloggingfromutils.neo......
  • 删除链表的节点
    一、问题描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。1.此题对比原题有改动2.题目保证链表中节点的值互不相同3.该题只会输出返回的链表和结果做对比,所以若使用C或C++语言,你不需要free或delete被删除的节点# 二、......
  • dom4j操作Element节点方法
    1.获取文档的根节点ElementrootElm=document.getRootElement();2.取得某节点的单一子节点ElementmemberElm=root.element("tagName");3.取得节点的文字Stringtext=root.elementText("name");4.取得某节点下名为"member"的所有字节点并进行遍历Listnodes=rootEl......
  • Cascader级联选择器多选时获取所有选中状态的节点和半选状态的节点的数组集合
    <!--Cascader级联选择器组件--><el-cascaderv-model="query.companyList"ref="searchCompanyCascaderRef":options="permissionCompanyTree":props="companyCascaderProp"collapse-tagsclearable></el......
  • OpenStack(Train版)-部署keystone(controller节点)
    三、部署keystone(controller节点)3.1.1、简介3.1.1.1、作用1.用户管理:验证用户身份信息合法性2.认证服务:提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库。3.Keystone是Openstack用来进行身份验证(authN)及高级授权(authZ)的身份识别服务,目前支持基......
  • KingbaseES V8R6集群运维案例之---在线扩容节点通讯故障问题
    案例说明:KingbaseESV8R6集群节点之间通过ssh或securecmdd工具通讯,默认节点之间通过公钥和私钥方式认证,可以密码通讯;在执行集群节点扩容时,出现以下故障,节点之间仍需要输入密码进行连接:适用版本:KingbaseESV8R6一、问题分析1、测试节点securecmdd通讯如上所示:通过securec......