以下是在Debian上实现PostgreSQL复制功能的指南,支持流复制和逻辑复制两种主流方式:
一、流复制(主从同步)
1. 主服务器配置
- 安装PostgreSQL:
sudo apt update && sudo apt install postgresql postgresql-contrib - 修改配置文件:
postgresql.conf:listen_addresses = '*' # 允许所有IP连接 wal_level = replica # 启用WAL日志 max_wal_senders = 10 # 最大复制连接数 wal_keep_segments = 64 # 保留WAL文件数量 hot_standby = on # 从服务器支持只读查询pg_hba.conf:
添加从服务器IP的复制权限:
host replication replicator <从服务器IP>/32 md5
- 创建复制用户:
CREATE ROLE replicator WITH REPLICATION PASSWORD '密码' LOGIN; - 重启服务:
sudo systemctl restart postgresql
2. 从服务器配置
- 停止服务并备份数据(可选):
sudo systemctl stop postgresql
(推荐使用pg_basebackup初始化数据目录,避免手动复制不一致) - 配置恢复参数:
编辑postgresql.auto.conf(PostgreSQL 10+)或recovery.conf(9.6及以下):standby_mode = 'on' primary_conninfo = 'host=主服务器IP port=5432 user=replicator password=密码' restore_command = 'cp /var/lib/postgresql/archive/%f %p' # 归档恢复命令 trigger_file = '/tmp/postgresql.trigger' # 手动触发故障转移文件 - 启动服务:
sudo systemctl start postgresql
3. 验证复制状态
在从服务器执行:
SELECT * FROM pg_stat_replication; -- 查看复制进程状态
二、逻辑复制(表级同步)
1. 主服务器配置
- 创建发布:
CREATE PUBLICATION my_publication FOR ALL TABLES; -- 同步所有表 -- 或指定表:FOR TABLE table1, table2;
2. 从服务器配置
- 创建订阅:
CREATE SUBSCRIPTION my_subscription CONNECTION 'host=主服务器IP dbname=数据库名 user=replicator password=密码' PUBLICATION my_publication;
3. 验证同步
在从服务器查询表数据,确认与主服务器一致。
三、注意事项
- 权限管理:确保复制用户具有
REPLICATION权限和目标表的访问权限。 - 网络配置:主从服务器间需开放对应端口(默认5432),并保持网络稳定。
- 版本兼容性:主从服务器PostgreSQL版本需兼容(如主15.x可从15.x/14.x)。
- 监控与日志:定期检查
pg_stat_replication和日志文件,确保复制正常。
参考来源:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1403372.html