案例说明:

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. Jsp+Servlet实现文件上传下载(四)--下载文件

    接着上一篇讲: Jsp+Servlet实现文件上传下载(三)--删除上传文件    点击打开链接 本章来实现一下下载文件功能,同时优化了一下上一章中的代码. 废话少说,上代码 ------------ ...

  2. win32 - 创建子线程中的窗口

    跟创建普通的win32窗口一样,线程中的窗口也需要注册和窗口处理过程 // Test_WM_CLOSE.cpp : Defines the entry point for the applicatio ...

  3. kubernetes(k8s)大白学习01-kubernetes是什么?有什么用?

    kubernetes(k8s)大白基础学习-kubernetes是什么? 一.认识 Docker Docker 是什么 先来看看 Docker 的图标: 一条鲸鱼背上驮着四方形块的物品,就像一条海运船 ...

  4. 项目实战:Qt西门子PLC通讯调试和模拟工具(包含PLC上位机通讯,PLC服务器)

      前言   西门西PLC.台达触摸屏.法兰克机床等等多年以前玩得比较多,改造机床.维修机床.给机床编程等等,没事还能车个零件啥的,对于多年以前的研发改造,有时间就重新整理下.  先上点有历史年代感的 ...

  5. 红胖子(红模仿)的博文大全:开发技术集合大版本更新v4.0.0

    <红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术.树莓派.三维.OpenCV.OpenGL.ffmpeg.OSG.单片机.软硬结合等等)持续更新中...>大版本更新,更新后版本 ...

  6. Advanced .Net Debugging 2:CLR基础

    一.简介 这是2024新年后我的第一篇文章,也是我的<Advanced .Net Debugging>这个系列的第二篇文章.这篇文章告诉我们为了进行有效的程序调试,我们需要掌握哪些知识.言 ...

  7. macOS安装RZ,SZ

    使用brew 安装lrzsz sudo brew install lrzsz 安装完成后检查是否存在. ls -alh /usr/local/bin/sz 如果安装报错可以手动下载压缩包安装,安装地址 ...

  8. 逆向实战32——某东最新h5st4.4算法分析

    前言 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6 ...

  9. 【Azure 应用服务】收集App Service 关于Availability Zone, Health check 以及 Traffic Manager的文档,并了解高可用(HA)和灾备(DR)

    问题描述 收集App Service 关于Availability Zone, Health check 以及 Traffic Manager的文档,并了解高可用(HA)和灾备(DR)的具体办法 问题 ...

  10. 【Azure Fabric Service】怎样关闭 Azure Service Fabric?

    问题描述 怎样关闭Azure Service Fabric服务呢?在Azure门户上没有找到 Stop 按钮. 问题回答 Azure Service Fabric 默认是无法停止的,可以删除. 虽然可 ...