人大金仓数据库KingbaseES sys_receivewa模块参数介绍

75 阅读3分钟

关键字:

KingbaseES、sys_receivewal、复制流、人大金仓

什么是sys_receivewal?

sys_receivewal作用是通过使用流复制协议将源数据库产生的wal日志流式的传送到指定备份服务器并存放到指定目录下。目前KES在集群之间能够自动进行WAL日志的同步,此功能例为PG原生功能,可使用在一些单机场景或需要手动备份WAL日志的场景。如: 将集群中主节点的WAL日志以流式存放至备节点指定目录下。

参数帮助 --help

部分参数测试示例

测试过程中通常需要构造一些操作产生大量WAL日志,能够比较直观看到备份效果。

-D (必选参数)

本地目录,接收WAL数据后生成的WAL文件会保存在该目录下。

例如 ./sys_receivewal -D /home/t2/wal_bak/ -h 10.10.8.61 -Usyskdb -p54321 接收的WAL日志将会保存在/home/t2/wal_bak下

-E 表示指定lsn

收到指定LSN后退出。如果当前接收的WAL记录的LSN和指定的 “lsn” 完全相等,会正常处理并继续接收,直到接收的WAL的LSN大于指定值。测试该参数可参考以下步骤(对LSN概念学习参考KingbaseES数据库的lsn与wal日志):

  • 查找当前LSN位置

select * from pg_current_wal_lsn();

  • 按需增加偏移量

此处用户名为syskdb,端口为54321,偏移到0/C7FCAC8

./sys_receivewal -D /home/t2/wal_bak/ -h 10.10.8.61 -Usyskdb -p54321 --slot=wal_bak -E 0/C7FCAC8 –v

到达LSN大于指定值“lsn”时停止流复制

-n 连接丢失时不循环连接直接退出

出现连接错误后立刻退出。如果不指定此参数,连接错误后会不断尝试重连。

不使用-n参数:

使用-n参数:

-S 表示要求sys_receivewal使用现有的复制槽

(1)首先使用--create-slot创建复制槽

例如 ./sys_receivewal -D /home/t2/wal_bak/ -h 10.10.8.61 -Usyskdb -p54321 --create-slot --slot=wal_bak -v

(2)再次创建会报错,加上--if-not-exists,该槽已经存在时不会抛出错误

例如 ./sys_receivewal -D /home/t2/wal_bak/ -h 10.10.8.61 -Usyskdb -p54321 --create-slot --slot=wal_bak -v --if-not-exists

(3)在主库上使用select * from pg_replication_slots;命令查看复制槽

(4)使用drop-slot删除复制槽

例如 ./sys_receivewal -D /home/t2/wal_bak -h 10.10.8.61 -Usyskdb -p 54321 --drop-slot --slot=wal_bak –v

-v 表示启用详细输出模式

例如 ./sys_receivewal -D /home/t2/wal_bak/ -h 10.10.8.61 -Usyskdb -p54321 -v -Z 1

-V 表示查看版本

-Z 表示启动压缩模式

启用WAL日志上的gzip压缩,并且指定压缩级别(共分为0到9个等级,0是不压缩而9是最大压缩)。所有的文件名后面都将自动添加后缀.gz 。

例如 ./sys_receivewal -D /home/t2/wal_bak/ -h 10.10.8.61 -Usyskdb -p54321 -v -Z 9 压缩级别为9

./sys_receivewal -D /home/t2/wal_bak/ -h 10.10.8.61 -Usyskdb -p54321 -v -Z 1 压缩级别为1

压缩级别为9:

压缩级别为1:

参考资料

《KingbaseES客户端应用参考手册-》 16. sys_receivewal