在构建PostgreSQL高可用架构时,为单节点添加备节点(Standby)是一项常见操作。在此过程中,主节点(Primary)的一个关键参数wal_level必须进行正确配置,否则流复制将无法建立。
那么,wal_level具体需要修改为什么值呢?
正确选项是:B、replica
参数解析
wal_level参数决定了写入预写日志(WAL)的信息量。它主要有三个级别:
minimal:仅记录崩溃或即时关机所需的信息,不支持归档日志或流复制。
replica:记录足够的数据以支持WAL归档和流复制。这是搭建只读备节点所必需的最低级别。
logical:在replica级别的基础上,增加支持逻辑解码所需的信息。
因此,为了启用流复制功能,从而成功添加一个物理备节点,必须将主服务器的wal_level参数设置为 replica 或更高的logical。
配置步骤与注意事项
- 修改主节点配置:在主节点的
postgresql.conf配置文件中,找到并修改以下参数:
wal_level = replica
max_wal_senders = 10 # 设置一个大于0的值,允许从库连接
wal_keep_size = 1024 # 或使用wal_keep_segments(旧版本),保留足够的WAL日志供备机追赶
- 重启生效:修改
wal_level需要重启PostgreSQL服务才能生效,这是一个需要规划停机时间的操作。
- 权限与连接:确保主节点
pg_hba.conf中配置了允许备节点复制的连接规则,并且备节点使用具有REPLICATION权限的用户连接。
选择logical虽然也可以满足流复制的需求,但它会记录更多信息,产生更多的WAL日志,消耗更多的磁盘I/O和存储空间。因此,如果仅为了搭建物理流复制备机,replica级别是最佳实践。
理解并正确配置wal_level,是构建健壮的数据库高可用与容灾体系的基础一步。
|