案例说明:

在一次KingbaseES V8R3集群切换分析中,运维人员执行了pcp_node_refresh,导致集群发生了failover的切换。此文档对pcp_node_refresh工具做了应用说明及测试,不建议在生产环境使用此工具。

适用版本:

KingbaseES V8R3

一、pcp_node_refresh应用说明

1.  pcp_node_refresh 必须要指定节点ID(就是show pool_nodes中查出来的id),刷新这个节点的状态。动作是将数据库踢出集群,然后再加入进来。
2. pcp_node_refresh 指向主库,将主库踢出集群,这个时候会认为主库故障触发会切换 ----------- 集群failover切换。
3. pcp_node_refresh 指向备库,将备库踢出集群再加入,集群无影响。



二、测试案例

1、集群节点状态

TEST=# show pool_nodes;
node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay
---------+---------------+-------+--------+-----------+---------+------------+-------------------+-------------------
0 | 192.168.1.101 | 54321 | up | 0.500000 | primary | 0 | true | 0
1 | 192.168.1.102 | 54321 | down | 0.500000 | standby | 0 | false | 0
(2 rows) ---如上所示,备库节点状态是down,执行pcp_node_refresh刷新节点。

2、执行pcp_node_refresh刷新备库节点

1)执行pcp_node_refresh

# 执行pcp_node_refresh
[kingbase@node101 bin]$ ./pcp_node_refresh -U kingbase -h 192.168.1.101 1
Password:
pcp_node_refresh -- Command Successful # 查看节点状态
[kingbase@node101 bin]$ ./ksql -U SYSTEM -W 123456 TEST -p 9999
ksql (V008R003C002B0290)
Type "help" for help. TEST=# show pool_nodes;
node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay
---------+---------------+-------+--------+-----------+---------+------------+-------------------+-------------------
0 | 192.168.1.101 | 54321 | up | 0.500000 | primary | 0 | false | 0
1 | 192.168.1.102 | 54321 | up | 0.500000 | standby | 0 | true | 0
(2 rows) TEST=# select * from sys_stat_replication;
PID | USESYSID | USENAME | APPLICATION_NAME | CLIENT_ADDR | CLIENT_HOSTNAME | CLIENT_PORT | BACKEND_START | B
ACKEND_XMIN | STATE | SENT_LOCATION | WRITE_LOCATION | FLUSH_LOCATION | REPLAY_LOCATION | SYNC_PRIORITY | SYNC_STATE
-------+----------+---------+------------------+---------------+-----------------+-------------+-------------------------------+--
------------+-----------+---------------+----------------+----------------+-----------------+---------------+------------
28587 | 10 | SYSTEM | node101 | 192.168.1.102 | | 47629 | 2022-09-05 13:42:43.870560+08 |
| streaming | 1/E92607D0 | 1/E92607D0 | 1/E92607D0 | 1/E9260780 | 0 | async
(1 row) ---如上所示,备库节点状态恢复正常。

2)查看日志信息

如下cluster.log所示:执行pcp_node_refresh后,对备库节点作为故障节点进行了recovery的恢复。

如下recovery.log所示,执行pcp_node_refresh后,对备库节点调用sys_rewind恢复备库节点。

3、执行pcp_node_refresh刷新主库节点

1)执行pcp_node_refresh

[kingbase@node101 bin]$ ./pcp_node_refresh -U kingbase -h 192.168.1.101 0
Password:
pcp_node_refresh -- Command Successful TEST=# show pool_nodes;
node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay
---------+---------------+-------+--------+-----------+---------+------------+-------------------+-------------------
0 | 192.168.1.101 | 54321 | up | 0.500000 | standby | 0 | true | 0
1 | 192.168.1.102 | 54321 | up | 0.500000 | primary | 0 | false | 0
(2 rows) ---如上所示,主备节点发生了切换。

2)查看日志信息

如下cluster.log所示:执行pcp_node_refresh后,对主库节点作为故障调用failover_stream.sh执行了failover切换。

如下failover.log所示:执行pcp_node_refresh后,failover切换过程。

-----------------2022-09-05 13:45:42 failover beging---------------------------------------
----failover-stats is %H = hostname of the new master node [192.168.1.102], %P = old primary node id [1], %d = node id[0], %h = host name [192.168.1.101], %O = old primary host[192.168.1.102] %m = new master node id [1], %M = old master node id [1], %D = database cluster path [/home/kingbase/cluster/R3HA/db/data].
----ping trust ip
ping trust ip 192.168.1.1 success
----determine whether the faulty db is master or standby
standby down, master still 192.168.1.102
The sys_stat_replication view result is : []
2022-09-05 13:45:44 sync to async
ALTER SYSTEM
SYS_RELOAD_CONF
-----------------
t
(1 row) -----------------2022-09-05 13:45:44 failover end---------------------------------------

三、总结

pcp_node_refresh不建议在生产环境使用,对于备库节点在数据库服务和流复制状态都正常的情况下,如果用show pool_nodes显示的是‘down’状态,可以使用pcp_attach_node重新注册备库节点,使节点状态恢复正常。

KingbaseES V8R3集群维护案例之---pcp_node_refresh应用的更多相关文章

  1. KingbaseES V8R3集群维护案例之---在线添加备库管理节点

    案例说明: 在KingbaseES V8R3主备流复制的集群中 ,一般有两个节点是集群的管理节点,分为master和standby:如对于一主二备的架构,其中有两个节点是管理节点,三个数据节点:管理节 ...

  2. KingbaseES V8R6集群维护案例之---停用集群node_export进程

    案例说明: 在KingbaseES V8R6集群启动时,会启动node_exporter进程,此进程主要用于向kmonitor监控服务输出节点状态信息.在系统安全漏洞扫描中,提示出现以下安全漏洞: 对 ...

  3. KingbaseES V8R6集群维护案例之---将securecmdd通讯改为ssh案例

    案例说明: 在KingbaseES V8R6的后期版本中,为了解决有的主机之间不允许root用户ssh登录的问题,使用了securecmdd作为集群部署分发和通讯的服务,有生产环境通过漏洞扫描,在88 ...

  4. KingbaseES V8R6集群维护案例之--单实例数据迁移到集群案例

    案例说明: 生产环境是单实例,测试环境是集群,现需要将生产环境的数据迁移到集群中运行,本文档详细介绍了从单实例环境恢复数据到集群环境的操作步骤,可以作为生产环境迁移数据的参考. 适用版本: Kingb ...

  5. KingbaseES V8R6集群维护案例之--修改securecmdd工具服务端口

    案例说明: 在一些生产环境,为了系统安全,不支持ssh互信,或限制root用户使用ssh登录,KingbaseES V8R6可以使用securecmdd工具支持主机之间的通讯.securecmdd工具 ...

  6. KingbaseES V8R3集群管理维护案例之---集群迁移单实例架构

    案例说明: 在生产中,需要将KingbaseES V8R3集群转换为单实例架构,可以采用以下方式快速完成集群架构的迁移. 适用版本: KingbaseES V8R3 当前数据库版本: TEST=# s ...

  7. KingbaseES V8R3集群管理和维护案例之---failover切换wal日志变化分析

    ​ 案例说明: 本案例通过对KingbaseES V8R3集群failover切换过程进行观察,分析了主备库切换后wal日志的变化,对应用者了解KingbaseES V8R3(R6) failover ...

  8. KingbaseES V8R3集群运维案例之---主库系统down failover切换过程分析

    ​ 案例说明: KingbaseES V8R3集群failover时两个cluster都会触发,但只有一个cluster会调用脚本去执行真正的切换流程,另一个有对应的打印,但不会调用脚本,只是走相关的 ...

  9. KingbaseES V8R3集群运维案例之---用户自定义表空间管理

    ​案例说明: KingbaseES 数据库支持用户自定义表空间的创建,并建议表空间的文件存储路径配置到数据库的data目录之外.本案例复现了,当用户自定义表空间存储路径配置到data下时,出现的故障问 ...

  10. KingbaseES V8R6集群维护之--修改数据库服务端口案例

    ​ 案例说明: 对于KingbaseES数据库单实例环境,只需要修改kingbase.conf文件的'port'参数即可,但是对于KingbaseES V8R6集群中涉及到多个配置文件的修改,并且在应 ...

随机推荐

  1. .NET WebAPI 跨域问题(has been blocked by CORS policy:No Access-Control-Allow-Ogigin header is present on the requested resource)

    一.什么是跨域 1. 跨域解释 跨域指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器施加的安全限制. 同源指的是:域名,协议,端口均相同. 2. 什么情况下会导致跨域 2.1 ...

  2. TIM + DMA + ADC

    #include "public.h" #define FFT_POINT (256) static uint16_t _DmaBuffer[FFT_POINT]; static ...

  3. 详解神经网络基础部件BN层

    摘要:在深度神经网络训练的过程中,由于网络中参数变化而引起网络中间层数据分布发生变化的这一过程被称为内部协变量偏移(Internal Covariate Shift),而 BN 可以解决这个问题. 本 ...

  4. JZOJ 2022.02.10【提高组】模拟总结

    \(\text{简要题解}\) \(\text{GDOI2012}\) 的题 不得不说当年的题做起来真的很不爽 整体看起来就是数据结构+博弈论+宽搜+背包dp优化 考场上 \(T1\) 十分钟解决过了 ...

  5. 手机访问wamp及wampserver64设置开放权限后局域网无法连接

    服务器配置:在手机上WampServer电脑端网页的效果! 1.本地虚拟主机下的 Apache 目录中的bin 目录中的 config 配置文件 http.config文件使用代码编辑器. 2.将ht ...

  6. 依那西普治疗多关节型和系统型JRA的长期疗效[EULAR2007_SAT0397]

    依那西普治疗多关节型和系统型JRA的长期疗效 Giannini EH, Ilowite NT. EULAR2007. Abstract No:SAT0397. 标签: EULAR2007,EULAR文 ...

  7. CSS less转CSS

    less 转css代码格式cmd命令: lessc D:\workspace\ipad\index.less D:\workspace\ipad\index.css

  8. Vue3 自定义指令执行了两次的问题

    下面是我注册全局指令的代码,这是我注册的一个通过 hljs 解析 html -> pre code 的指令,数据是异步获取的: app.directive("parse-code&qu ...

  9. PostgreSQL 按拼音排序 - convert to GBK/EUC_CN coding

    背景 国内的应用,在文本排序上基本都是按照拼音来进行排序的. 在不同的字符集中,汉字的编码可能不一样,比如UTF8和GBK,其中GBK是按拼音的顺序进行编码的,而UTF8则不是. 所以如果你的数据库使 ...

  10. Ubuntu命令安装默认支持的Qt5版本

    1.前置依赖 sudo apt install build-essential sudo apt install cmake 2.只安装默认的Qt模块 # 安装默认SDK # Ubuntu18.04中 ...