WAL归档配置
确保WAL信息记录级别配置正确
说明
WAL(Write Ahead Log)即预写式日志,是数据库用于恢复事务持久性的一种机制。wal_level
决定了写入WAL的信息量。为了在备机上开启只读查询,wal_level
需要在主机上设置成hot_standby
,并且备机设置hot_standby
参数为on
。对于分布式环境,不支持设置hot_standby
为off
,因此wal_level
不可设置为archive
或minimal
,否则数据库将无法启动。建议设置wal_level
参数为默认值hot_standby
。
实现
检查方法:
检查wal_level
参数是否为默认值hot_standby
,如果不是则失败。
openGauss=# show wal_level;
wal_level
-----------
hot_standby
(1 row)
修复方法:
设置参数wal_level
值为hot_standby
,并重启数据库使设置生效。
gs_guc set -Z datanode -N all -I all -c "wal_level=hot_standby"
gs_om -t stop && gs_om -t start
确保开启归档模式
说明
参数archive_mode
用于设置是否开启归档模式,该参数通常只建议当wal_level
参数设置为archive
时使用。当wal_level
参数设置为minimal
时,archive_mode
参数无法使用。如果设置archive_mode
参数为on
,需要同时设置archive_command
参数以指定归档WAL日志的命令。
实现
检查方法:
- 先检查
wal_level
参数是否为archive
。 - 如果
wal_level
为archive
,则检查archive_mode
参数值是否为on
。 - 如果
wal_level
配置为hot_standby
,则无需检查archive_mode
。
openGauss=# show wal_level;
wal_level
-----------
hot_standby
(1 row)
openGauss=# show archive_mode;
archive_mode
------------
off
(1 row)
修复方法:
当wal_level
参数为archive时
,设置参数archive_mode
为on
,同时设置archive_command
为归档WAL日志的命令,archive_command
参数的值仅供参考,其中--remove-destination
选项作用为拷贝前如果目标文件已存在,会先删除已存在的目标文件,然后执行拷贝操作。
gs_guc reload -Z datanode -N all -I all -c "archive_mode=on"
gs_guc reload -Z datanode -N all -I all -c "archive_command='cp --remove-destination %p /mnt/server/archive/%f'"