有的时候需要修改服务器IP地址,IP改变会影响DBHA集群运行。DBHA集群也需要修改相应的IP配置。本文主要描述此场景下DBHA集群修改IP步骤。
详细信息
要求:
1.首先确保集群状态是正常的,再执行以下操作。否则需要先解决集群异常问题。
2.对所有修改的文件,提前进行备份。以备回退操作。
3.确保数据库备份正常,保证数据安全。
4.停止业务
集群修改ip步骤
1.停止集群所有组件
dbha stop -a
如提前修改了服务器ip地址,此时无法和monitor通信。需要手动停止所有组件服务,在所有节点执行
# 杀掉monitor
ps -ef |grep db_ha |grep moni
kill -9 $pid
# 停止agent
systemctl stop db_ha-agent.service
2. 停止所有节点的数据库
此步骤确认当前主备库角色,关闭时先备库后主库,启动时先主库后备库
psql -c 'checkpoint;'
pg_ctl stop
此时修改服务器IP地址。修改完成后,执行以下步骤
3. 修改配置文件
所有备库,手动修改参数primary_conninfo中host指定的ip地址,也可参考如下命令修改。
# 修改数据库配置文件$PGDATA/postgresql.auto.conf
# 所有备库,修改参数primary_conninfo中host指定的ip地址
cd $PGDATA
host=x.x.10.241
sed -n '/^primary_conninfo/ p' postgresql.auto.conf
sed -r -i "/^primary_conninfo/ s/^/#/g" postgresql.auto.conf
sed -r -i "\$a primary_conninfo = 'application_name=node2 user=sysdba host=$host port=5866'" postgresql.auto.conf
4. 修改主监控节点 primary_monitor.yaml配置文件中的 ip(arbitration_ip,node_ip)
手动修改参数arbitration_ip,node_ip中的ip地址。也可参考如下命令修改。
cd /usr/local/db_ha/conf/
#sed -n '/^arbitration_ip/ p' primary_monitor.yaml
#sed -n '/node_ip/ p' primary_monitor.yaml
#sed -n '/node_type: primary/ {n;p}' primary_monitor.yaml
arbitration_ip=x.x.10.1
primary=x.x.10.241
standby=x.x.10.242
sed -r -i "s/arbitration_ip:.[0-9.]*/arbitration_ip: $arbitration_ip/1m" primary_monitor.yaml
sed -r -i "/node_type: primary/ {n;s/node_ip:.[0-9.]*/node_ip: $primary/}" primary_monitor.yaml
sed -r -i "/node_type: standby/ {n;s/node_ip:.[0-9.]*/node_ip: $standby/}" primary_monitor.yaml
5. 修改备监控节点 secondary_monitor.yaml配置文件中的 ip(primary_monitor_ip)
手动修改参数primary_monitor_ip中的ip地址。也可参考如下命令修改。
primary_monitor_ip=x.x.10.242
sed -r -i "/^primary_monitor_ip/ s/primary_monitor_ip:.[0-9.]*/primary_monitor_ip: $primary_monitor_ip/" secondary_monitor.yaml
6. 修改所有节点的db_ha.yaml配置文件中的ip(primary_monitor_ip,secondary_monitor_ip)
手动修改参数primary_monitor_ip,secondary_monitor_ip中的ip地址。也可参考如下命令修改
primary_monitor_ip=x.x.10.242
secondary_monitor_ip=x.x.10.241
sed -r -i "/^primary_monitor_ip/ s/primary_monitor_ip:.[0-9.]*/primary_monitor_ip: $primary_monitor_ip/" db_ha.yaml
sed -r -i "/^secondary_monitor_ip/ s/secondary_monitor_ip:.[0-9.]*/secondary_monitor_ip: $secondary_monitor_ip/" db_ha.yaml
7. 启动数据库和集群组件
# 主库
pg_ctl start
# 备库
pg_ctl start
# 查看流复制
select * from pg_stat_replication;
# 启动各节点agent
systemctl start db_ha-agent.service
# 启动主监控monitor
/usr/local/db_ha/bin/primary_monitor
# 启动备监控monitor
/usr/local/db_ha/bin/secondary_monitor
8. 重新添加vip
-v指定的是vip地址
/usr/local/db_ha/bin/db_ha rmvip x.x.10.241 -v x.x.9.107
/usr/local/db_ha/bin/db_ha addvip x.x.10.241 -v x.x.10.240
9. 查询状态
db_ha select
db_ha showvip -a
|