准确!!!在 CentOS 8 上配置 PostgreSQL 14 的主从复制

在 CentOS 8 上配置 PostgreSQL 14 的主从复制,并设置 WAL 归档到特定路径 /home/postgres/archives 的步骤如下:

主服务器配置(主库)

  1. 配置 PostgreSQL:

    • 编辑 postgresql.conf 文件:
     vim /data/postgres/pgdata/postgresql.conf
    
    • 设置以下参数:
     listen_addresses = '*'          # 允许所有地址连接
     wal_level = replica             # 设置 WAL 级别为 replica(默认的,不需要改 )
     wal_log_hints = on              #pg_rewind需要用到
     max_wal_senders = 10            # 设置最大 WAL 发送者数量
     archive_mode = on               # 打开归档模式
     archive_command = 'cp %p /home/postgres/archives/%f'  # 设置 WAL 归档命令
    
  2. 配置客户端认证文件(pg_hba.conf):

    • 允许从服务器连接到主服务器:
     vim /data/postgres/pgdata/pg_hba.conf
    
    • 添加以下行:
     host    replication     replica_user     slave_ip/32      trust
    

    其中 replica_user 是复制用户,slave_ip 是从服务器的 IP 地址。

  3. 创建复制用户:

    psql -c "CREATE USER replica_user REPLICATION LOGIN CONNECTION LIMIT 5;"
    
  4. 创建归档目录:

    sudo mkdir -p /home/postgres/archives
    sudo chown postgres:postgres /home/postgres/archives
    sudo chmod 700 /home/postgres/archives
    
  5. 重启 PostgreSQL 服务:

    sudo systemctl restart postgresql-14
    

从服务器配置(从库)

  1. 创建归档目录:

    sudo mkdir -p /home/postgres/archives
    sudo chown postgres:postgres /home/postgres/archives
    sudo chmod 700 /home/postgres/archives
    
  2. 停止 PostgreSQL 服务:

    sudo systemctl stop postgresql-14
    
  3. 清空数据目录:

    • 确保 /data/postgres/pgdata/ 目录是空的。
    sudo rm -rf /data/postgres/pgdata/*
    
  4. 使用 pg_basebackup 复制数据:

    sudo -u postgres pg_basebackup -h master_ip -D /data/postgres/pgdata/ -U replica_user -v -P -R --wal-method=stream
    

    其中 master_ip 是主服务器的 IP 地址。这里要加-R 会自动创建standby.signal文件

  5. 启动 PostgreSQL 服务:

    sudo systemctl start postgresql-14
    

验证复制和归档状态

  1. 在主服务器上验证复制状态:

    sudo -u postgres psql -c "SELECT * FROM pg_stat_replication;"
    
  2. 在从服务器上验证是否处于恢复模式:

    sudo -u postgres psql -c "SELECT pg_is_in_recovery();"
    
  3. 检查 WAL 归档:

    • 确认 /home/postgres/archive 目录中是否有 WAL 文件被归档。

注意事项

  • 确保归档目录 /home/postgres/archives 有足够的磁盘空间。
  • 定期监控和管理归档目录,以防止其过度增长。
  • 在生产环境中,考虑实施更复杂的归档策略。

这些步骤涉及基本的主从复制和 WAL 归档配置,具体需求和环境可能需要额外的调整和优化。


报错解决:
在这里插入图片描述

要修改 PostgreSQL 中已经创建的用户的连接限制数,您可以使用 ALTER USER 命令。在您的案例中,如果您想将 replica_user 用户的连接限制从当前值更改为 5,您应该执行以下命令:

ALTER USER replica_user CONNECTION LIMIT 5;

这个命令将更新用户 replica_user 的连接限制数为 5。请确保在执行此命令时您有足够的权限来修改用户设置。
如果您需要在 psql 命令行工具中执行此命令,可以使用以下格式:

psql -c "ALTER USER replica_user CONNECTION LIMIT 5;"

请确保在适当的数据库环境中执行这个命令,或者在命令中指定需要连接的数据库。


相关结果说明:
在这里插入图片描述
这个命令 SELECT * FROM pg_stat_replication; 在 PostgreSQL 中用于显示关于当前正在进行的复制进程的信息。这是一种监控和管理数据库复制状态的方法。输出的每一行代表一个活动的复制进程。我将解释每个字段的含义:

  1. pid: 这是负责复制的进程的进程ID。

  2. usesysid: 用户的系统ID。

  3. usename: 正在进行复制的用户的名称。

  4. application_name: 连接到数据库的应用程序的名称。

  5. client_addr: 正在进行复制的客户端的IP地址。

  6. client_hostname: 客户端的主机名(如果可用)。

  7. client_port: 客户端连接到服务器的端口号。

  8. backend_start: 后台进程开始的时间。

  9. backend_xmin: 用于复制的事务ID的最小值(如果可用)。

  10. state: 复制的当前状态,例如 “streaming” 表示正在进行流式复制。

  11. sent_lsn, write_lsn, flush_lsn, replay_lsn: 这些是日志序列号(LSN),分别表示服务器发送的最后一个日志位置、写入的、刷新的和重放的。

  12. write_lag, flush_lag, replay_lag: 这些字段表示写入延迟、刷新延迟和重放延迟。

  13. sync_priority: 同步复制的优先级。

  14. sync_state: 同步状态,例如 “async” 表示异步复制。

  15. reply_time: 最后一次收到复制确认的时间。

在您提供的输出中,有两个复制进程正在进行,都是由用户 replica_user 发起的,分别连接自IP地址 192.168.197.130 和 192.168.197.128。两个进程都处于 “streaming” 状态,表明它们正在活跃地进行数据复制。

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ascarl2010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值