金仓数据库KingbaseES sys_receivewal介绍与使用
关键字:
KingbaseES、sys_receivewal、人大金仓、KingbaseES、
概述
sys_receivewal从一个正在运行的KingbaseES集群中以流的方式得到WAL日志,通过使用流复制协议接收WAL日志,将其写入到本地WAL文件,并存放于指定目录下。
操作步骤
- 搭建集群
- 修改主节点的sys_hba.conf文件:
- 在备机中创建revicewal文件夹,并执行以下命令连接到主机数据库:
bin/sys_receivewal -D /home/kingbase/ES/release/kingbase/revicewal -h 192.168.45.216 -p 54330 -U system
- 在主机中进入ksql并生成wal日志:
- 此时备机中创建的receivewal文件夹下就会复制主机的wal日志:
参数介绍及使用
- -W参数:表示强制输入密码。
- -d参数,后面接连接串信息。sys_receivewal类似sys_basebackup,不需要制定特定的数据库。
二进制需要database的时候,-d后面可以跟database,也可以跟连接串,例如ksql。(由于需要连接某个database,所以支持“-d 数据库名”);
二进制不需要database的时候,-d后面只能跟字符串,例如sys_basebackup(因为是全实例备份,所以不需要database)
- -n参数:表示连接丢失时不循环连接,直接退出。
备机连接成功后,将主机数据库停止,那么会出现连接丢失的情况,此时系统会自动进行循环连接:
加上-n参数表示连接丢失时不循环连接,直接退出:
- -V参数:表示查看版本
- -v参数:表示启用详细输出模式
- -Z参数:表示启动压缩模式
-Z后指定压缩级别0-9,0表示不压缩,9表示最大压缩,此时备份目录中的wal日志将会是.gz的格式:
- -E参数:表示指定lsn。当接收到的wal的lsn大于此参数指定的lsn后,会停止接收,并正常退出。
假设当前接收到的wal的lsn为11,若指定的lsn已经存在,则正常退出;否则将在接收的WAL的LSN大于指定值时停止:
- -S参数:表示要求sys_receivewal使用现有的复制槽。
首先使用--create-slot创建复制槽:
再次创建会报错,加上--if-not-exists,该槽已经存在时不会抛出错误:
在主库上使用select * from pg_replication_slots;命令查看复制槽:
在备库中执行bin/sys_receivewal -D /home/kingbase/ES/release/kingbase/revicewal -h 192.168.45.216 -U system -p 54330 -S receivewal_slot命令后,再次查看复制槽:
使用drop-slot删除复制槽:
bin/sys_receivewal -D /home/kingbase/ES/release/kingbase/revicewal -h 192.168.45.216 -U system -p 54330 --drop-slot --slot=receivewal_slot
- --synchronous参数表示在收到wal数据后立刻刷入磁盘。如果sys_receivewal的复制客户端在服务器上配置为同步后备,则应该指定该选项,以确保能及时向服务器发送响应。此外,--no-sync可以使sys_receivewal不强制将WAL数据刷回磁盘,该参数--synchronous冲突




