
代码示例:
要在PostgreSQL中搭建流复制环境,你需要按照以下步骤操作:
-
安装PostgreSQL:
确保你的主服务器和从服务器上都安装了PostgreSQL数据库。 -
配置主服务器:
- 修改
postgresql.conf文件,设置以下参数:listen_addresses = '*' wal_level = replica max_wal_senders = 10 wal_keep_segments = 64 archive_mode = on archive_command = 'cp %p /home/postgres/opt/archive/%f' - 修改
pg_hba.conf文件,添加允许从服务器复制的规则:host replication all 0.0.0.0/0 md5 - 创建复制用户,并赋予REPLICATION权限:
CREATE USER replication_user REPLICATION LOGIN ENCRYPTED PASSWORD 'rep@31122'; - 重启PostgreSQL服务以应用更改:
sudo systemctl restart postgresql
- 修改
-
备份主服务器数据:
在从服务器上,使用pg_basebackup命令从主服务器备份数据:pg_basebackup -h <主服务器IP> -U replication_user -D /home/postgres/opt/data -Fp -Xs -P -
配置从服务器:
- 修改
postgresql.conf文件,设置以下参数:listen_addresses = '*' hot_standby = on - 在从服务器的数据目录中创建
recovery.conf文件,并添加以下内容:standby_mode = 'on' primary_conninfo = 'host=192.168.110.11 port=5432 user=replication_user password=rep@31122' restore_command = 'cp /home/postgres/opt/archive/%f %p'
- 修改
-
启动从服务器:
启动从服务器的PostgreSQL服务:sudo systemctl start postgresql -
验证配置:
- 在主服务器上检查复制状态:
SELECT * FROM pg_stat_replication; - 在从服务器上检查日志,确保没有错误并且流复制正常运行。
- 在主服务器上检查复制状态:
-
常见问题及解决方案:
- 如果从服务器无法连接到主服务器,检查
pg_hba.conf文件是否正确配置并重载配置,确保防火墙允许主从服务器之间的通信。 - 如果
pg_basebackup失败,确认复制用户具有足够权限,并确保主服务器上的 WAL 日志可用且没有被删除。 - 如果从服务器启动失败,检查
postgresql.conf文件的内容是否正确,并确认从服务器的数据目录权限设置正确。
- 如果从服务器无法连接到主服务器,检查
以上步骤提供了一个基本的流复制配置指南。根据你的具体需求,可能需要调整配置参数和步骤。更多详细信息和高级配置选项,建议参考PostgreSQL官方文档。
喜欢本文,请点赞、收藏和关注!
159

被折叠的 条评论
为什么被折叠?



