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

DBHA集群修改IP

瀚高PG实验室 2025-09-03
62


文档用途

有的时候需要修改服务器IP地址,IP改变会影响DBHA集群运行。DBHA集群也需要修改相应的IP配置。本文主要描述此场景下DBHA集群修改IP步骤。

详细信息

要求:

  • 1.首先确保集群状态是正常的,再执行以下操作。否则需要先解决集群异常问题。

  • 2.对所有修改的文件,提前进行备份。以备回退操作。

  • 3.确保数据库备份正常,保证数据安全。

  • 4.停止业务


集群修改ip步骤

 

  1.  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

                    版权声明:本文由瀚高及PG志愿者翻整理,转载请注明出处,本页面内容均源自PostgreSQL Weekly英文官网,翻译目的在于传递更多信息,并不意味着瀚高赞同其观点或证实其内容的真实性。如果其他媒体、网站或其他任何形式的法律实体和个人使用,必须经过著作权人合法书面授权并自负全部法律责任。不得擅自使用瀚高名义进行转载,或盗用瀚高名义发布信息。否则瀚高将保留追究法律责任的权利

                    文章转载自瀚高PG实验室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论