当前位置: 首页 > news >正文

配置 `PostgreSQL` 与 `Keepalived` 以实现高可用性

配置 PostgreSQLKeepalived 以实现高可用性通常包括以下步骤:

PostgreSQL 配置

  1. 安装 PostgreSQL:在两台服务器上安装相同版本的 PostgreSQL。

    sudo yum install postgresql-server postgresql-contrib
    
  2. 初始化数据库:在两台服务器上初始化 PGDATA 目录。

    sudo postgresql-setup initdb
    
  3. 配置主从复制:设置一台服务器为主节点,另一台为从节点。

    • 在主服务器上

      • 修改 postgresql.conf 文件以允许复制。
        wal_level = replica
        max_wal_senders = 3
        wal_keep_segments = 64
        archive_mode = on
        archive_command = 'cp %p /path_to_archive/%f'
        
      • pg_hba.conf 文件中允许从服务器的连接。
        host replication all 192.168.9.183/32 md5
        
    • 在从服务器上

      • 停止 PostgreSQL 服务。
        sudo systemctl stop postgresql
        
      • 清空 PGDATA 目录。
      • 从主服务器上使用 pg_basebackup 进行基础备份。
        pg_basebackup -h 192.168.9.195 -D /var/lib/pgsql/data -U replicator -v -P --wal-method=stream
        
      • 创建 recovery.conf 文件以连接到主服务器。
        standby_mode = 'on'
        primary_conninfo = 'host=192.168.9.195 port=5432 user=replicator password=yourpassword'
        trigger_file = '/tmp/postgresql.trigger.5432'
        
  4. 启动 PostgreSQL 服务:在两台服务器上启动服务。

    sudo systemctl start postgresql
    

Keepalived 配置

  1. 安装 Keepalived:如前所述,在两台服务器上安装 keepalived
    sudo yum install keepalived -y

  2. 配置 Keepalived:编辑 /etc/keepalived/keepalived.conf 文件,在两台服务器上配置主从。

    • 在主服务器上

      vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.9.200}track_script {chk_postgresql}
      }vrrp_script chk_postgresql {script "/usr/lib/keepalived/check_postgres.sh"interval 2weight 2
      }
      
    • 在从服务器上

      vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 50advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.9.200}track_script {chk_postgresql}
      }vrrp_script chk_postgresql {script "/usr/lib/keepalived/check_postgres.sh"interval 2weight 2
      }
      
  3. 创建 PostgreSQL 检查脚本:在两台服务器上创建脚本 /usr/lib/keepalived/check_postgres.sh,用于检查 PostgreSQL 服务状态。

    #!/bin/bash
    PSQL="/usr/bin/psql"
    PGUSER="postgres"
    PGDATABASE="yourdatabase"$PSQL -U $PGUSER -d $PGDATABASE -c "select 1;" >/dev/null 2>&1
    if [ $? != 0 ]; thenexit 1
    fi
    exit 0
    

    确保脚本可执行:

    sudo chmod +x /usr/lib/keepalived/check_postgres.sh
    
  4. 启动 Keepalived:在两台服务器上启动 Keepalived 服务。

    sudo systemctl start keepalived
    sudo systemctl enable keepalived
    

测试和

验证

  • 验证主从复制:确保主从复制正确设置且在运行。
  • 测试 Failover:尝试停止主服务器上的 PostgreSQL 服务,确保 Keepalived 将虚拟 IP 地址转移到从服务器。
  • 监控日志:查看 Keepalived 和 PostgreSQL 日志,确保没有错误。

配置 PostgreSQLKeepalived 时,一定要考虑数据一致性和故障转移的机制。这通常涉及仔细的规划和测试,以确保在生产环境中可靠地运行。

http://www.lryc.cn/news/237754.html

相关文章:

  • C++: int转换成LPCSTR
  • kettle官网和中文网地址
  • 纽扣电池类产品上架亚马逊澳大利站认证标准要求AS/NZS 62368
  • 网站监控的重要性及实施策略
  • 亚马逊车灯外贸出口CE认证标准办理解析
  • windows 查看防火墙设置命令使用方法
  • [Linux版本Debian系统]安装cuda 和对应的cudnn以cuda 12.0为例
  • NextJS开发:解决React Hook useEffect has a missing dependency
  • 交叉编译tcpdump
  • 万字解析设计模式之 装饰者模式
  • 生成对抗网络Generative Adversarial Network,GAN
  • C++入门第八篇---STL模板---list的模拟实现
  • 论文导读 | 大语言模型与知识图谱复杂逻辑推理
  • 数智竞技何以成为“科技+体育”新样本?
  • Vue项目Jenkins自动化部署
  • 特效!视频里的特效在哪制作——Adobe After Effects
  • 2023年中国醇酸树脂涂料需求量、应用领域及市场规模前景分析[图]
  • 【Linux进阶之路】动静态库
  • Ubuntu磁盘扩展容量
  • 2023年中国羽绒制品需求现状、市场规模及细分产品规模分析[图]
  • 动手学深度学习——循环神经网络的从零开始实现(原理解释+代码详解)
  • 【操作系统】文件系统的逻辑结构与目录结构
  • 局域网内Ubuntu上搭建Git服务器
  • 基础课10——自然语言生成
  • xpath
  • Java拼图小游戏
  • 终于有人把数据资产入表知识地图总结出来了,轻松看懂
  • 白鳝:聊聊IvorySQL的Oracle兼容技术细节与实现原理
  • vue和uni-app的递归组件排坑
  • 【考研】数据结构(更新到顺序表)