推荐答案
在 PostgreSQL 中配置复制参数通常涉及以下几个步骤:
修改
postgresql.conf
文件:- 设置
wal_level
参数为replica
或logical
。 - 设置
max_wal_senders
参数,指定可以同时运行的 WAL 发送进程的最大数量。 - 设置
wal_keep_segments
或wal_keep_size
参数,指定要保留的 WAL 文件数量或大小。
- 设置
修改
pg_hba.conf
文件:- 添加允许从库连接到主库的规则,例如:
host replication replication_user 192.168.1.0/24 md5
- 添加允许从库连接到主库的规则,例如:
创建复制用户:
- 在主库上创建一个专门用于复制的用户,并授予复制权限:
CREATE USER replication_user WITH REPLICATION ENCRYPTED PASSWORD 'your_password';
- 在主库上创建一个专门用于复制的用户,并授予复制权限:
配置从库:
- 在从库上创建一个
recovery.conf
文件(PostgreSQL 12 及更早版本)或在postgresql.conf
中设置primary_conninfo
参数(PostgreSQL 13 及更高版本),指定主库的连接信息:primary_conninfo = 'host=192.168.1.1 port=5432 user=replication_user password=your_password'
- 如果使用 PostgreSQL 12 及更早版本,还需要在
recovery.conf
中设置standby_mode = 'on'
。
- 在从库上创建一个
启动从库:
- 启动从库,它将连接到主库并开始复制数据。
本题详细解读
1. wal_level
参数
wal_level
参数决定了 WAL(Write-Ahead Logging)记录的详细程度。对于复制,通常设置为 replica
,这允许从库读取 WAL 日志以进行复制。如果需要逻辑复制,则设置为 logical
。
2. max_wal_senders
参数
max_wal_senders
参数定义了可以同时运行的 WAL 发送进程的最大数量。每个从库连接都需要一个 WAL 发送进程,因此应根据预期的从库数量来设置此参数。
3. wal_keep_segments
和 wal_keep_size
参数
这些参数用于控制保留的 WAL 文件数量或大小。保留足够的 WAL 文件可以确保从库在延迟或断开连接后仍能继续复制。
4. pg_hba.conf
文件
pg_hba.conf
文件用于控制客户端认证。必须在此文件中添加允许从库连接到主库的规则,以确保从库可以访问主库的 WAL 日志。
5. 复制用户
复制用户是专门用于复制的数据库用户。必须为该用户授予 REPLICATION
权限,以便从库可以连接到主库并读取 WAL 日志。
6. 从库配置
从库需要知道如何连接到主库。在 PostgreSQL 12 及更早版本中,这通过 recovery.conf
文件配置。在 PostgreSQL 13 及更高版本中,这些配置直接放在 postgresql.conf
文件中。
7. 启动从库
配置完成后,启动从库。从库将连接到主库并开始复制数据。如果配置正确,从库将保持与主库的同步,并在主库发生故障时能够接管。
通过以上步骤,可以在 PostgreSQL 中成功配置复制参数,实现主从复制。