PG-配置归档模式

时间:2021-09-24 16:23:05   收藏:0   阅读:30

相关参数

wal_level

wal_level决定多少信息写入到 WAL 中

参数枚举值

wal_level 参数默认值为 replica ,每个层次包括所有更低层次记录的信息。(级别:minimal<replica<logical)

archive_mode

控制数据库归档模式:off, on, or always。wal_level被设置为minimal时,archive_mode不能被启用

archive_command

调用服务器上本地shell或工具命令,用于归档一个完成的WAL文件。该参数仅在启用了archive_mode时生效,否则它将会被忽略。

如果archive_mode被启用时,archive_command是一个空字符串(默认),WAL 归档的操作会被临时禁用,但仍会继续累计WAL文件链。

参数值模式匹配

如果要在命令里嵌入一个真正的%字符,可以使用%%

archive_cleanup_command

指定一个shell命令,用于清理不需要的已归档WAL文件。通常使用pg_archivecleanup模块清理过时的已归档文件。

archive_cleanup_command = ‘pg_archivecleanup /mnt/archivedir %r‘

开启数据库归档模式

检查当前配置

查看pg的数据目录

SHOW data_directory;

查看pg的归档情况

show archive_mode;

开启WAL归档

任何数据的修改首先写入WAL日志,然后才对数据文件进行修改。PostgreSQL在数据集簇目录的$PGDATA/pg_wal/子目录下存储预写式日志(WAL)。

启用WAL归档,需设置wal_level配置参数为replica或更高(级别:minimal<replica<logical),设置archive_mode为on,并且使用archive_command配置参数指定一个shell命令。在archive_command中,%p会被将要归档的文件路径所替代,而%f只会被文件名所替代(路径名是相对于当前工作目录而言的,即集簇的数据目录)

创建归档目录

mkdir -p /ups/data/pgdata/12/arch_wal
chown postgres:postgres /ups/data/pgdata/12/arch_wal

修改wal_level参数

# 1.1 vi postgresql.conf
wal_level = ‘replica‘

# 1.2 SQL命令方式修改
psql -c "ALTER SYSTEM SET wal_level = ‘replica‘;"

修改archive_mode参数

# 1.1 vi postgresql.conf
archive_mode = ‘on‘

# 1.2 SQL命令方式修改
psql -c "ALTER SYSTEM SET archive_mode = ‘on‘;"

修改archive_command参数

非压缩参数
# 1.1 vi postgresql.conf
archive_command = ‘cp %p /ups/data/pgdata/12/arch_wal/%f‘

# 1.2 SQL命令方式修改
psql -c "ALTER SYSTEM SET archive_command = ‘cp %p /ups/data/pgdata/12/arch_wal/%f‘;"
lz4 压缩归档参数
vi $PGDATA/postgresql.conf
archive_command = ‘test ! -f %p && /bin/lz4 -q -z %p /ups/data/pgdata/12/archive_wals/%f.lz4‘

# 1.2 SQL命令方式修改
psql -c "ALTER SYSTEM SET archive_command = ‘test ! -f %p && /bin/lz4 -q -z %p /ups/data/pgdata/12/archive_wals/%f.lz4‘;"
压缩归档wal文件体现图

技术分享图片

相关参数说明

技术分享图片

gzip 压缩的归档日志

适用压缩归档wal日志文件

-- 使用gzip来压缩归档文件
archive_command = ‘gzip < %p > /var/lib/pgsql/archive/%f‘
-- 使用gunzip恢复
restore_command = ‘gunzip < /mnt/archivedir/%f > %p‘

重启PG服务

sudo systemctl restart postgresql12 
sudo systemctl status -l postgresql12 

检查确认

切换日志
select pg_switch_wal();
检查归档目录及其归档文件列表
ls -l /ups/data/pgdata/12/archive_wals/*

原文:https://www.cnblogs.com/binliubiao/p/15308263.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!