如何启用PostgreSQL的增量日志功能?

发表时间: 2023-10-12 22:03

10.0 以上的版本

调整日志级别

备份数据库配置文件

 cp /var/lib/pgsql/13/data/postgresql.conf /var/lib/pgsql/13/data/postgresql.conf.bak 

修改数据库配置文件,将日志级别调整至 logical

vi /var/lib/pgsql/13/data/postgresql.confwal_level = logical

授权设置

  1. 创建一个复制组角色
 CREATE ROLE copy_replication;
  1. 将原始表的所有者授权添加到该组。
 GRANT copy_replication TO <original_owner>;
  1. 将 复制用户授权添加到该组。
 GRANT copy_replication TO <replication_user>;
  1. 将表的所有权转移给刚创建的复制组角色。
 ALTER TABLE <table_name> OWNER TO copy_replication;

日志补全设置

因为表的REPLICA IDENTITY设置默认为default,为了使更新事件包含行中所有列的以前值,您必须执行以下日志来补全日志。

ALTER TABLE <table_name> REPLICA IDENTITY FULL;

10.0 以下的版本

安装wal2json 插件

对于pg数据库版本10以下的,需要在pg数据库服务端安装wal2json 插件。需下载附件安装包,安装如下:

  1. Centos 6 系统,安装 rpm/wal2json96-2.3-2.rhel6.x86_64.rpm
rpm -ivh wal2json96-2.3-2.rhel6.x86_64.rpm
  1. Centos 7系统,安装 wal2json_96-2.4-1.rhel7.x86_64.rpm
rpm -ivh wal2json_96-2.4-1.rhel7.x86_64.rpm

备份数据库配置文件

cp /var/lib/pgsql/9.6/data/postgresql.conf  /var/lib/pgsql/9.6/data/postgresql.conf.bak

修改数据库配置文件

编辑数据库配置文件,将属性按照如下设置

wal_level = logicalmax_replication_slots = 10max_wal_senders = 10shared_preload_libraries = 'wal2json'

连接数据库并创建同步专属用户

  1. 连接数据库
psql -h 10.1.5.186 -p 5432 -U postgres -W
  1. 创建专属同步用户
create user datasync with replication login password'datasync';