暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

KingbaseES V8R3集群在线删除数据节点案例

原创 jack 2022-04-29
524

案例说明

KingbaseES V8R3集群一主多从的架构,一般有两个节点是集群的管理节点,所有的节点都可以为数据节点;对于非管理节点的数据节点可以在线删除;但是对于管理节点,无法在线删除,如果删除管理节点,需要重新部署集群。本案例是在一主二备的架构下,删除数据节点(非管理节点)的测试案例。

系统主机环境

  1. [kingbase@node3 bin]$ cat /etc/hosts
  2. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  3. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

  4. 192.168.7.248   node1    # 集群管理节点&数据节点
  5. 192.168.7.249   node2    # 数据节点
  6. 192.168.7.243   node3    # 集群管理节点&数据节点

复制代码

集群架构

数据库版本

  1. TEST=# select version();
  2.                                                          VERSION                                                         -------------------------------------------------------------------------------------------------------------------------
  3. Kingbase V008R003C002B0270 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit
  4. (1 row)

复制代码


一、查看集群状态信息
=注意:在删除数据节点前,保证集群状态是正常的,包括集群节点状态和主备流复制状态=

  1. # 集群节点状态
  2. [kingbase@node3 bin]$ ./ksql -U SYSTEM -W 123456 TEST -p 9999
  3. ksql (V008R003C002B0270)
  4. Type "help" for help.

  5. TEST=# show pool_nodes;
  6. node_id |   hostname    | port  | status | lb_weight |  role   | select_cnt | load_balance_node | replication_delay ---------+---------------+-------+--------+-----------+---------+------------+-------------------+-------------------
  7. 0       | 192.168.7.243 | 54321 | up     | 0.333333  | primary | 0          | false             | 0
  8. 1       | 192.168.7.248 | 54321 | up     | 0.333333  | standby | 0          | true              | 0
  9. 2       | 192.168.7.249 | 54321 | up     | 0.333333  | standby | 0          | false             | 0
  10. (3 rows)

  11. # 主备流复制状态
  12. TEST=# select * from sys_stat_replication;
  13.   PID  | USESYSID | USENAME | APPLICATION_NAME |  CLIENT_ADDR  | CLIENT_HOSTNAME | CLIENT_PORT |         BACKEND_START         | BACKEND_XMIN |  
  14. STATE   | SENT_LOCATION | WRITE_LOCATION | FLUSH_LOCATION | REPLAY_LOCATION | SYNC_PRIORITY | SYNC_STATE -------+----------+---------+------------------+---------------+-----------------+-------------+-------------------------------+--------------+--

  15. 12316 |       10 | SYSTEM  | node249          | 192.168.7.249 |                 |       39337 | 2021-03-01 12:59:29.003870+08 |              | s
  16. treaming | 0/50001E8     | 0/50001E8      | 0/50001E8      | 0/50001E8       |             3 | potential
  17. 15429 |       10 | SYSTEM  | node248          | 192.168.7.248 |                 |       35885 | 2021-03-01 12:59:38.317605+08 |              | s
  18. treaming | 0/50001E8     | 0/50001E8      | 0/50001E8      | 0/50001E8       |             2 | sync
  19. (2 rows)

复制代码


二、删除集群数据节点
1、停止数据节点上cron服务(netwrok_rewind.sh计划任务)

  1. [kingbase@node2 bin]$ cat /etc/cron.d/KINGBASECRON #*/1 * * * * kingbase . /etc/profile;/home/kingbase/cluster/R6HA/KHA/kingbase/bin/kbha -A daemon -f /home/kingbase/cluster/R6HA/KHA/kingbase/bin/../etc/repmgr.conf >> /home/kingbase/cluster/R6HA/KHA/kingbase/bin/../kbha.log 2>&1#*/1 * * * * kingbase  /home/kingbase/cluster/kha/db/bin/network_rewind.sh

复制代码


2、停止数据节点数据库服务

  1. [kingbase@node2 bin]$ ./sys_ctl stop -D ../data
  2. waiting for server to shut down.... done
  3. server stopped

复制代码

3、在主节点删除复制槽

  1. TEST=# select * from sys_replication_slots;
  2.   SLOT_NAME   | PLUGIN | SLOT_TYPE | DATOID | DATABASE | ACTIVE | ACTIVE_PID | XMIN | CATALOG_XMIN | RESTART_LSN | CONFIRMED_FLUSH_LSN
  3. --------------+--------+-----------+--------+----------+--------+------------+------+--------------+-------------+---------------------
  4. slot_node243 |        | physical  |        |          | f      |            |      |              |             |
  5. slot_node248 |        | physical  |        |          | t      |      29330 | 2076 |              | 0/70000D0   |
  6. slot_node249 |        | physical  |        |          | f      |            | 2076 |              | 0/60001B0   |
  7. (3 rows)

  8. TEST=# select SYS_DROP_REPLICATION_SLOT('slot_node249');
  9. SYS_DROP_REPLICATION_SLOT
  10. ---------------------------

  11. (1 row)
  12. TEST=# select * from sys_replication_slots;
  13.   SLOT_NAME   | PLUGIN | SLOT_TYPE | DATOID | DATABASE | ACTIVE | ACTIVE_PID | XMIN | CATALOG_XMIN | RESTART_LSN | CONFIRMED_FLUSH_LSN
  14. --------------+--------+-----------+--------+----------+--------+------------+------+--------------+-------------+---------------------
  15. slot_node243 |        | physical  |        |          | f      |            |      |              |             |
  16. slot_node248 |        | physical  |        |          | t      |      29330 | 2076 |              | 0/70000D0   |
  17. (2 rows)

复制代码

4、编辑配置文件(所有管理节点)
1) HAmodule.conf配置文件(db/etc和kingbasecluster/etc下)
=如下所示,集群所有节点的主机名和ip配置信息,需将删除节点的配置信息清除=

  1. [kingbase@node3 etc]$ cat HAmodule.conf |grep -i all#IP of all nodes in the cluster.example:KB_ALL_IP="(192.168.28.128 192.168.28.129 )"
  2. KB_ALL_IP=(192.168.7.243 192.168.7.248 192.168.7.249 )#recoord the names of all nodes.example:ALL_NODE_NAME=1 (node1 node2 node3)
  3. ALL_NODE_NAME=(node243 node248 node249)

复制代码


=如下图所示,已经将要删除节点的主机名和ip信息从配置中清除=

2)编辑kingbasecluster配置文件
=如下所示,从配置文件注释删除节点的配置信息=

  1. [kingbase@node1 etc]$ tail kingbasecluster.conf
  2. backend_hostname1='192.168.7.248'
  3. backend_port1=54321
  4. backend_weight1=1
  5. backend_data_directory1='/home/kingbase/cluster/kha/db/data'
  6. # 注释node249配置信息#backend_hostname2='192.168.7.249'#backend_port2=54321#backend_weight2=1#backend_data_directory2='/home/kingbase/cluster/kha/db/data'

复制代码


三、重启集群测试

  1. [kingbase@node3 bin]$ ./kingbase_monitor.sh restart
  2. -----------------------------------------------------------------------2021-03-01 13:26:44 KingbaseES automation beging...2021-03-01 13:26:44 stop kingbasecluster [192.168.7.243] ...
  3. remove status file  /home/kingbase/cluster/kha/run/kingbasecluster/kingbasecluster_status
  4. DEL VIP NOW AT 2021-03-01 13:26:49 ON enp0s3
  5. No VIP on my dev, nothing to do.2021-03-01 13:26:50 Done...2021-03-01 13:26:50 stop kingbasecluster [192.168.7.248] ...
  6. remove status file  /home/kingbase/cluster/kha/run/kingbasecluster/kingbasecluster_status
  7. DEL VIP NOW AT 2021-03-01 13:09:36 ON enp0s3
  8. No VIP on my dev, nothing to do.2021-03-01 13:26:55 Done...2021-03-01 13:26:55 stop kingbase [192.168.7.243] ...set /home/kingbase/cluster/kha/db/data down now...2021-03-01 13:27:01 Done...2021-03-01 13:27:02 Del kingbase VIP [192.168.7.245/24] ...
  9. DEL VIP NOW AT 2021-03-01 13:27:03 ON enp0s3execute: [/sbin/ip addr del 192.168.7.245/24 dev enp0s3]
  10. Oprate del ip cmd end.2021-03-01 13:27:03 Done...2021-03-01 13:27:03 stop kingbase [192.168.7.248] ...set /home/kingbase/cluster/kha/db/data down now...2021-03-01 13:27:06 Done...2021-03-01 13:27:07 Del kingbase VIP [192.168.7.245/24] ...
  11. DEL VIP NOW AT 2021-03-01 13:09:47 ON enp0s3
  12. No VIP on my dev, nothing to do.2021-03-01 13:27:07 Done...
  13. ......................
  14. all stop..
  15. ping trust ip 192.168.7.1 success ping times :[3], success times:[2]
  16. ping trust ip 192.168.7.1 success ping times :[3], success times:[2]
  17. start crontab kingbase position : [3]
  18. Redirecting to /bin/systemctl restart  crond.service
  19. ADD VIP NOW AT 2021-03-01 13:27:17 ON enp0s3execute: [/sbin/ip addr add 192.168.7.245/24 dev enp0s3 label enp0s3:2]execute: /home/kingbase/cluster/kha/db/bin/arping -U 192.168.7.245 -I enp0s3 -w 1
  20. ARPING 192.168.7.245 from 192.168.7.245 enp0s3
  21. Sent 1 probes (1 broadcast(s))
  22. Received 0 response(s)
  23. start crontab kingbase position : [2]
  24. Redirecting to /bin/systemctl restart  crond.service
  25. ping vip 192.168.7.245 success ping times :[3], success times:[3]
  26. ping vip 192.168.7.245 success ping times :[3], success times:[2]
  27. now,there is a synchronous standby.
  28. wait kingbase recovery 5 sec...
  29. start crontab kingbasecluster line number: [6]
  30. Redirecting to /bin/systemctl restart  crond.service
  31. start crontab kingbasecluster line number: [3]
  32. Redirecting to /bin/systemctl restart  crond.service
  33. ......................
  34. all started..
  35. ...
  36. now we check again
  37. =======================================================================
  38. |             ip |                       program|              [status]
  39. [  192.168.7.243]|             [kingbasecluster]|              [active]
  40. [  192.168.7.248]|             [kingbasecluster]|              [active]
  41. [  192.168.7.243]|                    [kingbase]|              [active]
  42. [  192.168.7.248]|                    [kingbase]|              [active]
  43. =======================================================================

复制代码


四、验证集群状态
1、查看流复制状态信息

  1. # 主备流复制状态信息
  2. [kingbase@node3 bin]$ ./ksql -U SYSTEM -W 123456 TEST
  3. ksql (V008R003C002B0270)
  4. Type "help" for help.

  5. TEST=# select * from sys_stat_replication;
  6.   PID  | USESYSID | USENAME | APPLICATION_NAME |  CLIENT_ADDR  | CLIENT_HOSTNAME | CLIENT_PORT |         BACKEND_START         | BACKEND_XMIN |  
  7. STATE   | SENT_LOCATION | WRITE_LOCATION | FLUSH_LOCATION | REPLAY_LOCATION | SYNC_PRIORITY | SYNC_STATE -------+----------+---------+------------------+---------------+-----------------+-------------+-------------------------------+--------------+--
  8. 29330 |       10 | SYSTEM  | node248          | 192.168.7.248 |                 |       39484 | 2021-03-01 13:27:19.649897+08 |              | s
  9. treaming | 0/70000D0     | 0/70000D0      | 0/70000D0      | 0/70000D0       |             2 | sync
  10. (1 row)


  11. # 复制槽信息
  12. TEST=# select * from sys_replication_slots;
  13.   SLOT_NAME   | PLUGIN | SLOT_TYPE | DATOID | DATABASE | ACTIVE | ACTIVE_PID | XMIN | CATALOG_XMIN | RESTART_LSN | CONFIRMED_FLUSH_LSN --------------+--------+-----------+--------+----------+--------+------------+------+--------------+-------------+---------------------
  14. slot_node243 |        | physical  |        |          | f      |            |      |              |             |
  15. slot_node248 |   
  16.     | physical  |        |          | t      |      29330 | 2076 |              | 0/70000D0   |
  17. (2 rows)

复制代码

2、查看集群节点状态

  1. [kingbase@node3 bin]$ ./ksql -U SYSTEM -W 123456 TEST -p 9999
  2. ksql (V008R003C002B0270)
  3. Type "help" for help.

  4. TEST=# show pool_nodes;
  5. node_id |   hostname    | port  | status | lb_weight |  role   | select_cnt | load_balance_node | replication_delay ---------+---------------+-------+--------+-----------+---------+------------+-------------------+-------------------
  6. 0       | 192.168.7.243 | 54321 | up     | 0.500000  | primary | 0          | false             | 0
  7. 1       | 192.168.7.248 | 54321 | up     | 0.500000  | standby | 0          | true              | 0
  8. (2 rows)

  9. TEST=#  select * from sys_stat_replication;
  10.   PID  | USESYSID | USENAME | APPLICATION_NAME |  CLIENT_ADDR  | CLIENT_HOSTNAME | CLIENT_PORT |         BACKEND_START         | BACKEND_XMIN |  
  11. STATE   | SENT_LOCATION | WRITE_LOCATION | FLUSH_LOCATION | REPLAY_LOCATION | SYNC_PRIORITY | SYNC_STATE -------+----------+---------+------------------+---------------+-----------------+-------------+-------------------------------+--------------+-----------+---------------+----------------+----------------+-----------------+---------------+------------
  12. 29330 |       10 | SYSTEM  | node248          | 192.168.7.248 |                 |       39484 | 2021-03-01 13:27:19.649897+08 |              | s
  13. treaming | 0/70001B0     | 0/70001B0      | 0/70001B0      | 0/70001B0       |             2 | sync
  14. (1 row)

复制代码


五、删除数据节点安装目录

  1. [kingbase@node2 cluster]$ rm -rf kha/

复制代码

六、总结

  1、在删除集群数据节点前,需保证整个集群的状态(集群节点和流复制)正常。

  2、注释掉数据节点的cron计划任务。

  3、停止数据节点数据库服务。

  4、在主节点删除数据节点的slot。

  5、编辑所有管理节点的配置文件(HAmoudle.conf和kingbasecluster.conf)。

  6、重启集群(非必须)。

  7、测试集群状态。

  8、删除数据节点的安装目录。



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论