以下是在 PostgreSQL 中实现主从实时备份(主从复制)的详细步骤:
一、主库配置
-
编辑
postgresql.conf
文件:listen_addresses = '*'
:允许监听所有 IP 地址。wal_level = replica
:设置预写日志级别为支持复制。max_wal_senders = n
(n 为预计的从库数量加上一些余量):设置最大的 WAL 发送进程数量。wal_keep_segments = m
(m 根据实际情况设置,确保从库有足够时间同步):设置 WAL 日志保留的段数。
-
编辑
pg_hba.conf
文件:- 添加从库连接的授权规则,例如:
host replication repl_user 从库 IP/子网掩码 md5
,其中repl_user
是用于复制的用户名。
- 添加从库连接的授权规则,例如:
-
创建复制用户:
- 以超级用户连接到主库,执行
CREATE USER repl_user REPLICATION LOGIN ENCRYPTED PASSWORD 'your_password';
。
- 以超级用户连接到主库,执行
-
重启主库使配置生效。
二、从库配置
-
备份从库现有数据(如果有数据的话)。
-
编辑
postgresql.conf
文件:hot_standby = on
:启用热备模式。
-
使用
pg_basebackup
从主库复制数据:pg_basebackup -h 主库 IP -p 主库端口 -U repl_user -D /path/to/data/directory/ -Fp -Xs -Pv
,这里/path/to/data/directory/
是从库的数据目录,根据实际情况修改。
-
创建
recovery.conf
文件(在从库数据目录中):standby_mode = 'on'
。primary_conninfo = 'host=主库 IP port=主库端口 user=repl_user password=your_password'
。
-
启动从库。
三、验证主从复制
-
在主库上执行一些数据库操作,例如插入、更新或删除数据。
-
连接到从库,查询数据,确认从库数据与主库同步。
注意事项:
- 确保主从库之间的网络连接稳定且畅通。
- 配置防火墙规则,允许主从库之间的通信。
- 定期监控复制状态,以便及时发现并解决问题。