案例说明:

KingbaseES V8R3集群数据库服务端口(默认:54321)的配置在数据库及集群多个配置文件中都存在,修改端口需要更改所有的配置文件,本案例详细描述了数据库服务端口修改操作步骤,可用于生产环境下数据库服务端口修改的借鉴。

注意:对于数据库服务端口的修改,kingbase_monitor.sh不支持一键参数修改。

适用版本:

KingbaseES V8R3

操作系统:

[kingbase@node101 bin]$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

集群架构:

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 | BACKEND_XMIN | STATE | SENT_LOCATION | WRITE_LOCATION | FLUSH_LOCATION | REPLAY_LOCATION | SYNC_PRIORITY | SYNC_STATE
------+----------+---------+------------------+---------------+-----------------+-------------+-------------------------------+--------------+-----------+---------------+----------------+----------------+-----------------+---------------+------------
4743 | 10 | SYSTEM | node2 | 192.168.1.102 | | 24029 | 2023-01-09 14:39:34.599367+08 | | streaming | 0/B40000D0 | 0/B40000D0 | 0/B40000D0 | 0/B40000D0 | 2 | sync
(1 row)

当前数据库服务端口:

TEST=# show port;
port
-------
54321
(1 row)

一、数据库配置文件

1、数据库配置文件存储路径

[kingbase@node101 bin]$ pwd
/home/kingbase/cluster/HAR3/db/data

2、数据库服务配置文件

#kingbase.conf
[kingbase@node101 bin]$ cat kingbase.conf |grep port|grep -v '#'
port='54321' #主库recovery.done文件
[kingbase@node101 bin]$ cat recovery.done |grep port|grep -v '#'
primary_conninfo='port=54321 host=192.168.1.101 user=SYSTEM password=MTIzNDU2Cg== application_name=node1' #备库recovery.conf文件
kingbase@node102 bin]$ cat recovery.conf |grep -i port
primary_conninfo='port=54321 host=192.168.1.101 user=SYSTEM password=MTIzNDU2Cg== application_name=node2' #kingbase.auto.conf(默认没有数据库服务端口配置)
[kingbase@node101 bin]$ cat kingbase.auto.conf
# Do not edit this file manually!
# It will be overwritten by ALTER SYSTEM command.
SYNCHRONOUS_STANDBY_NAMES = '1 (node1, node2)'

3、集群数据库模板配置文件

1)配置文件存储路径:

[kingbase@node101 etc]$ pwd
/home/kingbase/cluster/HAR3/db/etc

2)配置文件

#recovery.done配置文件模板
[kingbase@node101 bin]$ cat recovery.done |grep port|grep -v '#'
primary_conninfo='port=54321 host=192.168.1.101 user=SYSTEM password=MTIzNDU2Cg== application_name=node1' #kingbase.conf配置文件模板
[kingbase@node101 bin]$ cat kingbase.conf |grep port|grep -v '#'
port='54321' #数据库HAmodule.conf配置文件
[kingbase@node101 bin]$ cat HAmodule.conf |grep -i kb_port
KB_PORT="54321"

二、集群配置文件

1、集群配置文件存储路径

[kingbase@node101 kingbasecluster]$ pwd
/home/kingbase/cluster/HAR3/kingbasecluster/etc

2、集群配置文件

#kingbasecluster.conf配置文件
[kingbase@node101 kingbasecluster]$ cat kingbasecluster.conf|grep -i backend_port
backend_port0=54321
backend_port0=54321
backend_port1=54321 #kingbasecluster.conf.sample模板配置文件
[kingbase@node101 kingbasecluster]$ cat kingbasecluster.conf.sample|grep backend_port
backend_port0 = 54321 #集群HAmodule.conf配置文件
[kingbase@node101 kingbasecluster]$ cat HAmodule.conf |grep -i kb_port
#database listening port,default 54321.example:KB_PORT="54321"
KB_PORT="54321"

三、数据库服务端口修改脚本

Tips:

此脚本只在CentOS 7下bash环境执行了测试,其他系统的shell环境,需要测试后借鉴使用。执行脚本前需要关闭所有节点的数据库服务。

[kingbase@node101 ~]$ cat update_kb_port.sh
#!/bin/bash
#update_kb_port.sh
# Edit KingbasES V8R3 cluster db port
#以下目录为数据库和集群配置文件的存储路径
Db_path='/home/kingbase/cluster/HAR3/db/data'
Db_etc='/home/kingbase/cluster/HAR3/db/etc'
Cluster_etc='/home/kingbase/cluster/HAR3/kingbasecluster/etc' #数据库修改前后的服务端口
Old_kb_port=54321
New_kb_port=54323 #注意:修改集群数据库端口,需要先关闭整个集群的数据库服务。
# check db service is alive
Srv_is_alive=`netstat -an|grep $Old_kb_port|grep -i listen|head -1` if [ -z "$Srv_is_alive" ] ;then
#updat数据库配置文件中的数据库服务端口
echo "Update database config: " cd $Db_path
echo "Current diretory is : $Db_path" if [ -f kingbase.conf ];then
sed -i 's/#port/port/g' kingbase.conf
sed -i "s/$Old_kb_port/$New_kb_port/g" kingbase.conf
cat kingbase.conf|grep -i port
else
echo "Kingbase.conf is not exist!"
fi if [ -f recovery.conf ];then
sed -i "s/$Old_kb_port/$New_kb_port/g" recovery.conf
cat recovery.conf|grep -i port
else
echo "recovery.conf is not exist!"
fi if [ -f recovery.done ];then
sed -i "s/$Old_kb_port/$New_kb_port/g" recovery.done
cat recovery.done|grep -i port
else
echo "recovery.done is not exist!"
fi if [ -f kingbase.auto.conf ];then
sed -i "s/$Old_kb_port/$New_kb_port/g" kingbase.auto.conf
cat kingbase.auto.conf|grep -i port
else
echo "kingase.auto.conf is not exist!"
fi #updat数据库配置模板文件中的数据库服务端口
echo ""
echo "Update database etc config: "
cd $Db_etc if [ -f HAmodule.conf ];then
sed -i "s/$Old_kb_port/$New_kb_port/g" HAmodule.conf
cat HAmodule.conf|grep -i kb_port
else
echo "HAmodule.conf is not exist!"
fi if [ -f recovery.done ];then
sed -i "s/$Old_kb_port/$New_kb_port/g" recovery.done
cat recovery.done|grep -i port
else
echo "recovery.done is not exist!"
fi if [ -f kingbase.conf ];then
sed -i 's/#port/port/g' kingbase.conf
sed -i "s/$Old_kb_port/$New_kb_port/g" kingbase.conf
cat kingbase.conf|grep -i port
else
echo "Kingbase.conf is not exist!"
fi #updat集群配置文件中的数据库服务端口
echo ""
echo "Update kingbasecluster config: " cd $Cluster_etc if [ -f HAmodule.conf ];then
sed -i "s/$Old_kb_port/$New_kb_port/g" HAmodule.conf
cat HAmodule.conf|grep -i kb_port
else
echo "HAmodule.conf is not exist!"
fi if [ -f kingbasecluster.conf ];then
sed -i "s/$Old_kb_port/$New_kb_port/g" kingbasecluster.conf
cat kingbasecluster.conf|grep -i backend_port
else
echo "kingbasecluster.conf is not exist!"
fi if [ -f kingbasecluster.conf.sample ];then
sed -i "s/$Old_kb_port/$New_kb_port/g" kingbasecluster.conf.sample
cat kingbasecluster.conf.sample|grep -i backend_port
else
echo "kingbasecluster.conf.sample is not exist!"
fi else
echo 'Database is alive,please first shutdown cluster .'
exit 0
fi

四、关闭集群数据库服务

[kingbase@node101 bin]$ ./kingbase_monitor.sh stop

五、执行脚本更改数据库服务端口

Tips:

此脚本需要在集群所有节点执行。

[kingbase@node101 ~]$ sh update_kb_port.sh
Update database config:
Current diretory is : /home/kingbase/cluster/HAR3/db/data
port = 54323 # (change requires restart)
# supported by the operating system:
# supported by the operating system:
# ERROR REPORTING AND LOGGING
# %r = remote host and port
port='54323'
recovery.conf is not exist!
recovery.done is not exist! Update database etc config:
#database listening port,default 54323.example:KB_PORT="54323"
KB_PORT="54323"
primary_conninfo='port=54323 host=192.168.1.101 user=SYSTEM password=MTIzNDU2Cg== application_name=node1'
port = 54323 # (change requires restart)
# supported by the operating system:
# supported by the operating system:
# ERROR REPORTING AND LOGGING
# %r = remote host and port
port='54323' Update kingbasecluster config:
#database listening port,default 54323.example:KB_PORT="54323"
KB_PORT="54323"
backend_port0=54323
#backend_port1=5433
backend_port0=54323
backend_port1=54323
backend_port1=54323

六、重新启动集群

#启动集群
[kingbase@node101 bin]$ ./kingbase_monitor.sh restart
-----------------------------------------------------------------------
2023-01-09 16:43:15 KingbaseES automation beging...
2023-01-09 16:43:15 stop kingbasecluster [192.168.1.101] ... ......
now we check again
=======================================================================
| ip | program| [status]
[ 192.168.1.101]| [kingbasecluster]| [active]
[ 192.168.1.102]| [kingbasecluster]| [active]
[ 192.168.1.101]| [kingbase]| [active]
[ 192.168.1.102]| [kingbase]| [active]
======================================================================= #查看数据库服务端口
[kingbase@node101 bin]$ netstat -an |grep 543|grep -i listen |head -1
tcp 0 0 0.0.0.0:54323 0.0.0.0:* LISTEN #连接数据库访问
[kingbase@node101 bin]$ ./ksql -U SYSTEM -W 123456 TEST -p 54323
ksql (V008R003C002B0370)
Type "help" for help. TEST=# select * from sys_stat_replication;
PID | USESYSID | USENAME | APPLICATION_NAME | CLIENT_ADDR | CLIENT_HOSTNAME | CLIENT_PORT | BACKEND_START | BACKEND_XMIN | STATE | SENT_LOCATION | WRITE_LOCATION | FLUSH_LOCATION | REPLAY_LOCATION | SYNC_PRIORITY | SYNC_STATE
------+----------+---------+------------------+---------------+-----------------+-------------+-------------------------------+--------------+-----------+---------------+----------------+----------------+-----------------+---------------+------------
8986 | 10 | SYSTEM | node2 | 192.168.1.102 | | 64305 | 2023-01-09 16:43:30.566336+08 | | streaming | 0/B7000B50 | 0/B7000B50 | 0/B7000B50 | 0/B7000B50 | 2 | sync
(1 row) ---如上所示,数据库服务端口修改成功。

七、修改sys_backup.sh备份端口

Tips:

如果集群使用了,sys_backup.sh脚本执行物理备份,在修改数据库端口后,需要修改备份配置文件sys_backup.conf。

[kingbase@node101 bin]$ cat ../share/sys_backup.conf|grep -i port
# database port of single
_single_db_port="54321"

KingbaseES V8R3 集群运维系列 -- 修改数据库服务端口的更多相关文章

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

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

  2. KingbaseES V8R3集群运维案例之---cluster.log ERROR: md5 authentication failed

    案例说明: 在KingbaseES V8R3集群的cluster.log日志中,经常会出现"ERROR: md5 authentication failed:DETAIL: password ...

  3. KingbaseES V8R3集群运维案例之---kingbase_monitor.sh启动”two master“案例

    案例说明: KingbaseES V8R3集群,执行kingbase_monitor.sh启动集群,出现"two master"节点的故障,启动集群失败:通过手工sys_ctl启动 ...

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

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

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

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

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

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

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

    案例说明: 在一次KingbaseES V8R3集群切换分析中,运维人员执行了pcp_node_refresh,导致集群发生了failover的切换.此文档对pcp_node_refresh工具做了应 ...

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

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

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

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

  10. KingbaseES V8R6集群运维案例之---repmgr standby promote应用案例

    案例说明: 在容灾环境中,跨区域部署的异地备节点不会自主提升为主节点,在主节点发生故障或者人为需要切换时需要手动执行切换操作.若主节点已经失效,希望将异地备机提升为主节点. $bin/repmgr s ...

随机推荐

  1. PC端应用程序自动化测试——pywinauto、pywin32、pyautogui

    1 前言 PC 端自动化测试使用到的 python 模块主要有 pywinauto.win32gui.pyautogui,主要功能如下: pywinauto:主要使用到 Application 类,用 ...

  2. spring boot发邮件

    项目地址:https://gitee.com/indexman/spring_boot_in_action 在task模块下,我写了test类 邮件发送流程: 发件方:836491384@qq.com ...

  3. 解决主机ssh虚拟机linux慢的问题

    1.编辑sshd配置文件: vi /etc/ssh/sshd_config 找到行:#UseDNS yes 将注释去掉,把yes改为no 2.重启sshd服务: service sshd restar ...

  4. IDA 反汇编 explorer

    之前写过一篇关于 IDA 在无 dmp 文件下如何定位到崩溃点的文章,由于其中涉及到公司项目,就仅限自己看了 正好今天看到一篇关于火绒软件误杀 explorer 的文章,并且有相关的复现过程 文章已经 ...

  5. win32 - WM_DROPFILES的用法

    WM_DROPFILES: 当用户将文件拖放到已注册为丢弃文件的接收者的应用程序窗口中时发送该消息 我们可以利用这个消息获取文件名称,并将它们保存到容器里. LRESULT CALLBACK Stat ...

  6. 【Azure Developer】Windows中通过pslist命令查看到Java进程和线程信息,但为什么和代码中打印出来的进程号不一致呢?

    通过PSLIST查看Windwos中的进程信息及线程信息 一:下载PSLIST小工具:https://docs.microsoft.com/en-us/sysinternals/downloads/p ...

  7. Jmeter json断言的使用

    1 添加方式:取样器右键->添加->断言->JSON断言 作用:使用JSON表达式提取实际数据与预期进行比较   2首先我们来了解下断言组件的各个功能: Asset JSON Pat ...

  8. 3、mysql定位低效率执行SQL

    可以通过以下两种方式定位执行效率较低的 SQL 语句. 慢查询日志 : 通过慢查询日志定位那些执行效率较低的 SQL 语句,用--log-slow-queries[=file_name]选项启动时,m ...

  9. 深入浅出Java多线程(十):CAS

    引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第十篇内容:CAS.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在多线程编程中,对共享资源的安全访问和同步 ...

  10. jenkins配置从git指定分支下载代码,打包部署jar包

    1.如何构造一个jenkins部署? 1.1 目标 从git上指定分支下载代码,打包并发布到指定机器上,启动. 1.2 实现 如果已有项目,直接copy一份配置即可,修改一下即可使用 如果没有配置好的 ...