跳到主要内容

PostgreSQL数据库环境准备

1. 概述

介绍如何为 PostgreSQL 数据库环境准备步骤。

2. 操作步骤

2.1. 确认当前使用的数据库版本

PostgreSQL 10 以上版本;

2.1.1. 注意事项

  • 目前暂不支持以下表字段类型同步:

  • time with time zone

  • timestamp with time zone

2.2. 修改REPLICA IDENTITY

该属性决定了当数据发生UPDATE,DELETE时,日志记录的字段。

  • DEFAULT - 更新和删除将包含primary key列的先前值
  • NOTHING - 更新和删除将不包含任何先前值
  • FULL - 更新和删除将包含所有列的先前值
  • INDEX index name - 更新和删除事件将包含名为 index name 的索引定义中包含的列的先前值。

修改代码如下:

注:所有需要进行实时同步的表,都应该做此操作。

alter table schema.tablename REPLICA IDENTITY FULL;

1)使用默认的 postgres 账号登录名为 databasename 的数据库:-U指定用户,-d指定数据库,-h指定服务器,-p指定端口。

psql -U postgres -d databasename -h localhost -p 5432

输入密码后,登陆数据库。

2)例如将模式为 public 的表「订单表」修改设置,则输入如下语句:

alter table public.订单表 REPLICA IDENTITY FULL

2.3. 用户权限确认

以上都是用默认的用户 Postgres 进行,若用其他用户进行配置,则需要该用户为 PostgreSQL replication 角色、PostgreSQL login 角色,并且有需要同步的表的 select 权限。

1)创建一个具有用户,该用户为 PostgreSQL replication 角色、PostgreSQL login 角色。

2)在指定模式中的所有表上执行 select 操作的权限赋给用户:

注:schemaname 为模式名称,username为用户名称,用户根据需要修改。

GRANT SELECT ON ALL TABLES IN SCHEMA schemaname TO username;

3)赋予用户 replication 和 login 权限命令。

进入 PostgreSQL 安装目录下的 data 文件夹,进入 data 文件夹中,找到 postgresql.conf、pg_hba.conf,对这两个文件进行修改。

  • 修改 PostgreSQL 复制槽设置。

本文示例中,postgresql.conf 文件在/var/lib/pgsql/12/data目录下,使用vi /var/lib/pgsql/12/data/postgresql.conf(用户根据实际情况修改 postgresql.conf 所在路径)语句编辑该文件,在文件末尾追加以下配置:

注:或者找到下面代码中的设置项,取消注释,修改对应的值。

wal_level = logical
max_wal_senders = 10
max_replication_slots = 10
  • 设置用户 replication 权限。

本文示例中,pg_hba.conf 文件在/var/lib/pgsql/12/data目录下,使用vi /var/lib/pgsql/12/data/pg_hba.conf(用户根据实际情况修改 pg_hba.conf 所在路径)语句编辑该文件,把下图中红圈中的两行前边的 # 去掉: