案例说明:

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. C++ 多线程的错误和如何避免(3)

    传递给 C++ 线程的构造函数的参数是通过值传递的 VS 平台:2019 问题:如何在线程中改变传递的参数值? 比如: #include <functional> #include < ...

  2. RK3568开发笔记(九):开发板buildroot固件调通RS485口,运行项目中RS485协议调试工具Demo

    前言   上一篇已经将Qt移植过去了,此时我们移植整体应用不是什么问题了,那么现在应用对外得接口使用了RS485接口,板载了一个RS485,于是需要调通,兼容这个开发板得RS485.   补充   看 ...

  3. error接口

    // 实际上它是interface类型,这个类型有一个返回错误信息的单一方法: type error interface{ Error() string } 创建一个error最简单的方法就是调用er ...

  4. java图书管理系统界面版本+mysql数据库

    描述: java+mysql数据库实现的图书管理系统,实现了图书添加,图书删除,图书修改,图书查看,图书列表查看等,用户增加,用户删除.用户修改,用户查看等 功能: 图书管理功能:图书添加,图书删除, ...

  5. RocketMQ(11) 消息重试机制和死信队列

    七.消息发送重试机制 1 说明 Producer对发送失败的消息进行重新发送的机制,称为消息发送重试机制,也称为消息重投机制. 对于消息重投,需要注意以下几点: 生产者在发送消息时,若采用同步或异步发 ...

  6. Redis基础_五大数据类型和常用命令

    ## 1. Redis基本介绍 1.1 传统数据存储出现的问题 海量用户 高并发 罪魁祸首--关系型数据库: 性能瓶颈:磁盘IO性能低下 扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群 解决思路 ...

  7. python使用selenium适配谷歌浏览器插件, chromedriver与chrome各版本及下载地址

    python selenium使用,需要谷歌chromedriver.exe插件 chromedriver.exe插件是放在python的安装目录下(亲测,其它的都不对) 以下是chromedrive ...

  8. Codeforces Round 303 (Div. 2)C. Kefa and Park(DFS、实现)

    @ 目录 题面 链接 题意 题解 代码 总结 题面 链接 C. Kefa and Park 题意 求叶节点数量,叶节点满足,从根节点到叶节点的路径上最长连续1的长度小于m 题解 这道题目主要是实现,当 ...

  9. 子序列&子串

    子序列:子序列就是在原来序列中找出一部分组成的序列 子序列不一定连续 子串:字符串中任意个连续的字符组成的子序列称为该串的子串 子串一定连续

  10. IDEA 报错 project is already registered

    1.环境&背景 有时候IEDA下一个工程中想引入多个项目,只能添加多个modules. 版本:IDEA 2020.2 构建:gradle 2.问题 有时候删掉了某个项目再导入时报错 proje ...