• KingbaseES V8R3集群维护案例之---pcp_node_refresh应用


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

    适用版本: KingbaseES V8R3

    一、pcp_node_refresh应用说明

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

    二、测试案例

    1、集群节点状态

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

    2、执行pcp_node_refresh刷新备库节点

    1)执行pcp_node_refresh

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

    2)查看日志信息

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

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

    3、执行pcp_node_refresh刷新主库节点

    1)执行pcp_node_refresh

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

    2)查看日志信息
    如下cluster.log所示:执行pcp_node_refresh后,对主库节点作为故障调用failover_stream.sh执行了failover切换。

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

    1. -----------------2022-09-05 13:45:42 failover beging---------------------------------------
    2. ----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].
    3. ----ping trust ip
    4. ping trust ip 192.168.1.1 success
    5. ----determine whether the faulty db is master or standby
    6. standby down, master still 192.168.1.102
    7. The sys_stat_replication view result is : []
    8. 2022-09-05 13:45:44 sync to async
    9. ALTER SYSTEM
    10. SYS_RELOAD_CONF
    11. -----------------
    12. t
    13. (1 row)
    14. -----------------2022-09-05 13:45:44 failover end---------------------------------------

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

  • 相关阅读:
    软件测试/测试开发丨Web自动化 PageObject设计模式
    多线程入门知识点及代码详解及相关面试八股文
    verilog牛客网刷题代码汇总
    第六课:NIO简介
    MXNet-图像分类(symbol版本)【附源码】
    Maven配置阿里云镜像
    计算机网络 八股
    关于360评估的全面介绍
    2023华为杯研究生数学建模竞赛CDEF题思路+模型代码
    从猿六年---C++笔试\面试的不成熟小建议来啦
  • 原文地址:https://blog.csdn.net/lyu1026/article/details/126809661