文档中心MogDBMogDB StackUqbar

文档:v2.0

支持的版本:

PostgreSQL为源库

支持版本

数据库版本: 9.6, 10, 11, 12, 13, 14

依赖插件: decoderbufs, wal2json, pgoutput (推荐)

数据库设置

安装插件

pgoutput 为内置插件,无需安装,其他两类插件请参考:

decoderbufs

wal2json

修改源库 WAL 参数

修改源库参数配置文件 postgresql.conf,参数文件位于数据库 data 目录下。

通过 psql 工具登录 PostgreSQL 数据库,查询数据目录位置:

psql -d postgres -U $USER -c 'show data_directory'

修改以上命令查询到的数据目录中的 postgresql.conf 文件

# 注意替换 <data_directory> 为实际查询到的数据目录位置
vi <data_directory>/postgresql.conf

在 postgresql.conf 中找到如下参数,并修改为对应的参数值:

  1. wal_level=logical # 使用logical decoding读取预写日志
  2. max_replication_slots = 4 # 最大复制槽数 (变更后重启生效)
  3. wal_sender_timeout = 0s # 超时时间自定义, 0不生效
  4. max_wal_senders = 8 # 最大walsender进程数 (变更后重启生效)
  5. shared_preload_libraries = 'decoderbufs' # 仅decoderbufs插件配置,wal2json插件请忽略

修改源库 HBA 配置

在数据库数据目录(<data_directory>)中,找到 pg_hba.conf 配置文件,在其中添加如下配置以便允许复制。

注意: mdb_user 为复制使用的用户,实际环境中若用户名有变更,则需要实际实际情况修改。

# 注意替换 <data_directory> 为实际查询到的数据目录位置
cat >> <data_directory>/pg_hba.conf <"EOF"

# Add for MDB replication
host  replication  mdb_user   0.0.0.0/0  sha256
EOF

设置用户权限

创建 mdb_user 用户,用于登录和复制源端 PostgreSQL 数据,实际环境中用户名与密码可按实际需求自行修改。

其中:

  • login 权限用于登录数据库
  • replication 权限用于同步增量数据
  • superuser 权限用于对象初始化和全量数据同步
create user mdb_user with superuser login replication PASSWORD 'Enmo@123';

打开表的 REPLICA IDENTITY 模式

针对需要被同步的所有表,都需要打开 REPLICA IDENTITY 模式,具体命令如下:

注意: 以下仅为命令示例,实际上需要对被同步的所有表,都设置 REPLICA IDENTITY。

ALTER TABLE public.customers REPLICA IDENTITY FULL;

开启心跳配置

发送心跳消息使连接器能够将最新检索到的LSN发送到数据库slot,从而允许数据库回收不再需要的WAL文件所使用的磁盘空间。

开启心跳需要在通道高级参数中,设置heartbeatIntervalMs为正整数,并在源节点执行以下命令。

注意: 以下仅为命令示例,表名heartbeat需与高级参数heartbeatTableName参数值保持一至。

CREATE TABLE heartbeat (ts TIMESTAMP WITH TIME ZONE);
INSERT INTO heartbeat (ts) VALUES (NOW());

字符集映射

源库 目标库 源库字符集 目标库字符集
PostgreSQL MogDB BIG5 BIG5
PostgreSQL MogDB EUC_CN EUC_CN
PostgreSQL MogDB EUC_JP EUC_JP
PostgreSQL MogDB EUC_JIS_2004 EUC_JIS_2004
PostgreSQL MogDB EUC_KR EUC_KR
PostgreSQL MogDB EUC_TW EUC_TW
PostgreSQL MogDB GB18030 GB18030
PostgreSQL MogDB GBK GBK
PostgreSQL MogDB Windows936 Windows936
PostgreSQL MogDB ISO_8859_5 ISO_8859_5
PostgreSQL MogDB ISO_8859_6 ISO_8859_6
PostgreSQL MogDB ISO_8859_7 ISO_8859_7
PostgreSQL MogDB ISO_8859_8 ISO_8859_8
PostgreSQL MogDB JOHAB JOHAB
PostgreSQL MogDB KOI8R KOI8R
PostgreSQL MogDB KOI8U KOI8U
PostgreSQL MogDB LATIN1 LATIN1
PostgreSQL MogDB LATIN2 LATIN2
PostgreSQL MogDB LATIN3 LATIN3
PostgreSQL MogDB LATIN4 LATIN4
PostgreSQL MogDB LATIN5 LATIN5
PostgreSQL MogDB LATIN6 LATIN6
PostgreSQL MogDB LATIN7 LATIN7
PostgreSQL MogDB LATIN8 LATIN8
PostgreSQL MogDB LATIN9 LATIN9
PostgreSQL MogDB LATIN10 LATIN10
PostgreSQL MogDB MULE_INTERNAL MULE_INTERNAL
PostgreSQL MogDB SJIS SJIS
PostgreSQL MogDB SHIFT_JIS_2004 SHIFT_JIS_2004
PostgreSQL MogDB SQL_ASCII SQL_ASCII
PostgreSQL MogDB UHC UHC
PostgreSQL MogDB UTF8 UTF8
PostgreSQL MogDB WIN866 WIN866
PostgreSQL MogDB WIN874 WIN874
PostgreSQL MogDB WIN1250 WIN1250
PostgreSQL MogDB WIN1251 WIN1251
PostgreSQL MogDB WIN1252 WIN1252
PostgreSQL MogDB WIN1253 WIN1253
PostgreSQL MogDB WIN1254 WIN1254
PostgreSQL MogDB WIN1255 WIN1255
PostgreSQL MogDB WIN1256 WIN1256
PostgreSQL MogDB WIN1257 WIN1257
PostgreSQL MogDB WIN1258 WIN1258
Copyright © 2011-2025 www.enmotech.com All rights reserved.