PostgreSQL 实时复制+CDC

1 基本概念

PostgreSQL数据库复制功能是指实时保持PostgreSQL主从库数据一致,同时从库可以提供查询服务降低主库负载。

CDC(Change Data Capture)变化数据捕获的简称,用于实时捕获PostgreSQL数据库变化数据,并将捕获的数据向其它数据库(同构或异构)或应用系统同步。

Beedup提供PostgreSQL数据库复制与CDC一体化方案,通过解析PostgreSQL数据库的wal日志,将解析的结果数据封装为DML或DDL并按照事务单元在目标库执行,实时保持主从库数据一致。复制的同时软件在从库额外创建数据变化轨迹表,通过将日志解析的每一条数据顺序存入轨迹表提供CDC服务,第三方程序通过读取该表记录即可实现增量数据采集。

2 操作配置

2.1 数据库参数

打开主库配置文件postgresql.conf,进行如下设置:

开启归档

archive_mode = on

wal日志级别设置为replica或logical

wal_level = replica  

保存设置后重新启动PostgreSQL数据库。

2.2 复制任务设置

整库复制

启动Beedup程序,新建复制任务,在弹出的对话框中依次设置主库和从库连接参数,勾选【全量复制】选项,操作如下:

启用CDC

选择【集成】按钮,在弹出的【集成选项】对话框中勾选【变化跟踪】,操作如下:

选择【返回】按钮关闭【集成选项】对话框,选择【确定】按钮完成任务设置。

2.3 运行复制任务

启动任务,首先复制主库历史数据到从库,历史数据复制完成后,任务自动进入增量复制模式,当主库执行DML或DDL操作时,复制任务通过读取解析主库wal日志数据,还原为DML或DDL并在从库执行,开启CDC时,复制任务会将解析的数据顺序写入变化轨迹表。

下图显示增量数据复制结果,pgAdmin中显示当主库新增三条数据后可在从库查询对应数据,Beedup日志窗口显示在从库执行的DML操作,Beedup预览对话框显示从库CDC表对应的数据,包含变更数据日志序列号(wal_lsn)、变更数据对应的DML类型(ins/upd/del),数据变更事务时间等信息。

3 运维管理

3.1 数据一致性

Beedup支持主从表的差异比对及回补功能,确保数据完全一致。

右键点击Beedup左侧窗口中的数据库表节点,弹出的快捷菜单

从中选择【差异比对】,即可对主从表进行比对效验。

从中选择【差异回补】,程序会根据数据比对结果更新从表数据。

3.2 数据操作分析

Beedup提供数据操作分析功能,可以显示最近10日主库中活跃度前10的表每日更新操作统计,如下图:

 


版权声明:本文为wahahaman原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。