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的表每日更新操作统计,如下图: