mimeo
在PostgreSQL实例间进行表级复制
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
mimeo | 1.5.1 | ETL | PostgreSQL | SQL |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 9700 | mimeo | 否 | 否 | 否 | 是 | 否 | 否 | - |
| 相关扩展 | dblink pg_jobmon postgres_fdw pglogical pg_cron pg_partman repmgr pg_fact_loader pg_failover_slots |
|---|
name conflict with pg_partman
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | MIXED | 1.5.1 | 1817161514 | mimeo | dblink |
| RPM | PIGSTY | 1.5.1 | 1817161514 | mimeo_$v | - |
| DEB | PGDG | 1.5.1 | 1817161514 | postgresql-$v-mimeo | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 1.5.1 el8.x86_64.pg18 : mimeo_18 mimeo_18-1.5.1-1PIGSTY.el8.x86_64.rpm
| PIGSTY 1.5.1 el8.x86_64.pg17 : mimeo_17 mimeo_17-1.5.1-1PIGSTY.el8.x86_64.rpm
| PIGSTY 1.5.1 el8.x86_64.pg16 : mimeo_16 mimeo_16-1.5.1-1PIGSTY.el8.x86_64.rpm
| PIGSTY 1.5.1 el8.x86_64.pg15 : mimeo_15 mimeo_15-1.5.1-1PIGSTY.el8.x86_64.rpm
| PIGSTY 1.5.1 el8.x86_64.pg14 : mimeo_14 mimeo_14-1.5.1-1PIGSTY.el8.x86_64.rpm
|
| el8.aarch64 | PIGSTY 1.5.1 el8.aarch64.pg18 : mimeo_18 mimeo_18-1.5.1-1PIGSTY.el8.aarch64.rpm
| PIGSTY 1.5.1 el8.aarch64.pg17 : mimeo_17 mimeo_17-1.5.1-1PIGSTY.el8.aarch64.rpm
| PIGSTY 1.5.1 el8.aarch64.pg16 : mimeo_16 mimeo_16-1.5.1-1PIGSTY.el8.aarch64.rpm
| PIGSTY 1.5.1 el8.aarch64.pg15 : mimeo_15 mimeo_15-1.5.1-1PIGSTY.el8.aarch64.rpm
| PIGSTY 1.5.1 el8.aarch64.pg14 : mimeo_14 mimeo_14-1.5.1-1PIGSTY.el8.aarch64.rpm
|
| el9.x86_64 | PIGSTY 1.5.1 el9.x86_64.pg18 : mimeo_18 mimeo_18-1.5.1-1PIGSTY.el9.x86_64.rpm
| PIGSTY 1.5.1 el9.x86_64.pg17 : mimeo_17 mimeo_17-1.5.1-1PIGSTY.el9.x86_64.rpm
| PIGSTY 1.5.1 el9.x86_64.pg16 : mimeo_16 mimeo_16-1.5.1-1PIGSTY.el9.x86_64.rpm
| PIGSTY 1.5.1 el9.x86_64.pg15 : mimeo_15 mimeo_15-1.5.1-1PIGSTY.el9.x86_64.rpm
| PIGSTY 1.5.1 el9.x86_64.pg14 : mimeo_14 mimeo_14-1.5.1-1PIGSTY.el9.x86_64.rpm
|
| el9.aarch64 | PIGSTY 1.5.1 el9.aarch64.pg18 : mimeo_18 mimeo_18-1.5.1-1PIGSTY.el9.aarch64.rpm
| PIGSTY 1.5.1 el9.aarch64.pg17 : mimeo_17 mimeo_17-1.5.1-1PIGSTY.el9.aarch64.rpm
| PIGSTY 1.5.1 el9.aarch64.pg16 : mimeo_16 mimeo_16-1.5.1-1PIGSTY.el9.aarch64.rpm
| PIGSTY 1.5.1 el9.aarch64.pg15 : mimeo_15 mimeo_15-1.5.1-1PIGSTY.el9.aarch64.rpm
| PIGSTY 1.5.1 el9.aarch64.pg14 : mimeo_14 mimeo_14-1.5.1-1PIGSTY.el9.aarch64.rpm
|
| el10.x86_64 | PIGSTY 1.5.1 el10.x86_64.pg18 : mimeo_18 mimeo_18-1.5.1-1PIGSTY.el10.x86_64.rpm
| PIGSTY 1.5.1 el10.x86_64.pg17 : mimeo_17 mimeo_17-1.5.1-1PIGSTY.el10.x86_64.rpm
| PIGSTY 1.5.1 el10.x86_64.pg16 : mimeo_16 mimeo_16-1.5.1-1PIGSTY.el10.x86_64.rpm
| PIGSTY 1.5.1 el10.x86_64.pg15 : mimeo_15 mimeo_15-1.5.1-1PIGSTY.el10.x86_64.rpm
| PIGSTY 1.5.1 el10.x86_64.pg14 : mimeo_14 mimeo_14-1.5.1-1PIGSTY.el10.x86_64.rpm
|
| el10.aarch64 | PIGSTY 1.5.1 el10.aarch64.pg18 : mimeo_18 mimeo_18-1.5.1-1PIGSTY.el10.aarch64.rpm
| PIGSTY 1.5.1 el10.aarch64.pg17 : mimeo_17 mimeo_17-1.5.1-1PIGSTY.el10.aarch64.rpm
| PIGSTY 1.5.1 el10.aarch64.pg16 : mimeo_16 mimeo_16-1.5.1-1PIGSTY.el10.aarch64.rpm
| PIGSTY 1.5.1 el10.aarch64.pg15 : mimeo_15 mimeo_15-1.5.1-1PIGSTY.el10.aarch64.rpm
| PIGSTY 1.5.1 el10.aarch64.pg14 : mimeo_14 mimeo_14-1.5.1-1PIGSTY.el10.aarch64.rpm
|
| d12.x86_64 | PGDG 1.5.1 d12.x86_64.pg18 : postgresql-18-mimeo postgresql-18-mimeo_1.5.1-20.pgdg12+1_all.deb
| PGDG 1.5.1 d12.x86_64.pg17 : postgresql-17-mimeo postgresql-17-mimeo_1.5.1-20.pgdg12+1_all.deb
| PGDG 1.5.1 d12.x86_64.pg16 : postgresql-16-mimeo postgresql-16-mimeo_1.5.1-20.pgdg12+1_all.deb
| PGDG 1.5.1 d12.x86_64.pg15 : postgresql-15-mimeo postgresql-15-mimeo_1.5.1-20.pgdg12+1_all.deb
| PGDG 1.5.1 d12.x86_64.pg14 : postgresql-14-mimeo postgresql-14-mimeo_1.5.1-20.pgdg12+1_all.deb
|
| d12.aarch64 | PGDG 1.5.1 d12.aarch64.pg18 : postgresql-18-mimeo postgresql-18-mimeo_1.5.1-20.pgdg12+1_all.deb
| PGDG 1.5.1 d12.aarch64.pg17 : postgresql-17-mimeo postgresql-17-mimeo_1.5.1-20.pgdg12+1_all.deb
| PGDG 1.5.1 d12.aarch64.pg16 : postgresql-16-mimeo postgresql-16-mimeo_1.5.1-20.pgdg12+1_all.deb
| PGDG 1.5.1 d12.aarch64.pg15 : postgresql-15-mimeo postgresql-15-mimeo_1.5.1-20.pgdg12+1_all.deb
| PGDG 1.5.1 d12.aarch64.pg14 : postgresql-14-mimeo postgresql-14-mimeo_1.5.1-20.pgdg12+1_all.deb
|
| d13.x86_64 | PGDG 1.5.1 d13.x86_64.pg18 : postgresql-18-mimeo postgresql-18-mimeo_1.5.1-20.pgdg13+1_all.deb
| PGDG 1.5.1 d13.x86_64.pg17 : postgresql-17-mimeo postgresql-17-mimeo_1.5.1-20.pgdg13+1_all.deb
| PGDG 1.5.1 d13.x86_64.pg16 : postgresql-16-mimeo postgresql-16-mimeo_1.5.1-20.pgdg13+1_all.deb
| PGDG 1.5.1 d13.x86_64.pg15 : postgresql-15-mimeo postgresql-15-mimeo_1.5.1-20.pgdg13+1_all.deb
| PGDG 1.5.1 d13.x86_64.pg14 : postgresql-14-mimeo postgresql-14-mimeo_1.5.1-20.pgdg13+1_all.deb
|
| d13.aarch64 | PGDG 1.5.1 d13.aarch64.pg18 : postgresql-18-mimeo postgresql-18-mimeo_1.5.1-20.pgdg13+1_all.deb
| PGDG 1.5.1 d13.aarch64.pg17 : postgresql-17-mimeo postgresql-17-mimeo_1.5.1-20.pgdg13+1_all.deb
| PGDG 1.5.1 d13.aarch64.pg16 : postgresql-16-mimeo postgresql-16-mimeo_1.5.1-20.pgdg13+1_all.deb
| PGDG 1.5.1 d13.aarch64.pg15 : postgresql-15-mimeo postgresql-15-mimeo_1.5.1-20.pgdg13+1_all.deb
| PGDG 1.5.1 d13.aarch64.pg14 : postgresql-14-mimeo postgresql-14-mimeo_1.5.1-20.pgdg13+1_all.deb
|
| u22.x86_64 | PGDG 1.5.1 u22.x86_64.pg18 : postgresql-18-mimeo postgresql-18-mimeo_1.5.1-20.pgdg22.04+1_all.deb
| PGDG 1.5.1 u22.x86_64.pg17 : postgresql-17-mimeo postgresql-17-mimeo_1.5.1-20.pgdg22.04+1_all.deb
| PGDG 1.5.1 u22.x86_64.pg16 : postgresql-16-mimeo postgresql-16-mimeo_1.5.1-20.pgdg22.04+1_all.deb
| PGDG 1.5.1 u22.x86_64.pg15 : postgresql-15-mimeo postgresql-15-mimeo_1.5.1-20.pgdg22.04+1_all.deb
| PGDG 1.5.1 u22.x86_64.pg14 : postgresql-14-mimeo postgresql-14-mimeo_1.5.1-20.pgdg22.04+1_all.deb
|
| u22.aarch64 | PGDG 1.5.1 u22.aarch64.pg18 : postgresql-18-mimeo postgresql-18-mimeo_1.5.1-20.pgdg22.04+1_all.deb
| PGDG 1.5.1 u22.aarch64.pg17 : postgresql-17-mimeo postgresql-17-mimeo_1.5.1-20.pgdg22.04+1_all.deb
| PGDG 1.5.1 u22.aarch64.pg16 : postgresql-16-mimeo postgresql-16-mimeo_1.5.1-20.pgdg22.04+1_all.deb
| PGDG 1.5.1 u22.aarch64.pg15 : postgresql-15-mimeo postgresql-15-mimeo_1.5.1-20.pgdg22.04+1_all.deb
| PGDG 1.5.1 u22.aarch64.pg14 : postgresql-14-mimeo postgresql-14-mimeo_1.5.1-20.pgdg22.04+1_all.deb
|
| u24.x86_64 | PGDG 1.5.1 u24.x86_64.pg18 : postgresql-18-mimeo postgresql-18-mimeo_1.5.1-20.pgdg24.04+1_all.deb
| PGDG 1.5.1 u24.x86_64.pg17 : postgresql-17-mimeo postgresql-17-mimeo_1.5.1-20.pgdg24.04+1_all.deb
| PGDG 1.5.1 u24.x86_64.pg16 : postgresql-16-mimeo postgresql-16-mimeo_1.5.1-20.pgdg24.04+1_all.deb
| PGDG 1.5.1 u24.x86_64.pg15 : postgresql-15-mimeo postgresql-15-mimeo_1.5.1-20.pgdg24.04+1_all.deb
| PGDG 1.5.1 u24.x86_64.pg14 : postgresql-14-mimeo postgresql-14-mimeo_1.5.1-20.pgdg24.04+1_all.deb
|
| u24.aarch64 | PGDG 1.5.1 u24.aarch64.pg18 : postgresql-18-mimeo postgresql-18-mimeo_1.5.1-20.pgdg24.04+1_all.deb
| PGDG 1.5.1 u24.aarch64.pg17 : postgresql-17-mimeo postgresql-17-mimeo_1.5.1-20.pgdg24.04+1_all.deb
| PGDG 1.5.1 u24.aarch64.pg16 : postgresql-16-mimeo postgresql-16-mimeo_1.5.1-20.pgdg24.04+1_all.deb
| PGDG 1.5.1 u24.aarch64.pg15 : postgresql-15-mimeo postgresql-15-mimeo_1.5.1-20.pgdg24.04+1_all.deb
| PGDG 1.5.1 u24.aarch64.pg14 : postgresql-14-mimeo postgresql-14-mimeo_1.5.1-20.pgdg24.04+1_all.deb
|
构建
您可以使用 pig build 命令构建 mimeo 扩展的 RPM 包:
pig build pkg mimeo # 构建 RPM 包
安装
您可以直接安装 mimeo 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install mimeo; # 当前活跃 PG 版本安装
pig ext install -y mimeo -v 18 # PG 18
pig ext install -y mimeo -v 17 # PG 17
pig ext install -y mimeo -v 16 # PG 16
pig ext install -y mimeo -v 15 # PG 15
pig ext install -y mimeo -v 14 # PG 14
dnf install -y mimeo_18 # PG 18
dnf install -y mimeo_17 # PG 17
dnf install -y mimeo_16 # PG 16
dnf install -y mimeo_15 # PG 15
dnf install -y mimeo_14 # PG 14
apt install -y postgresql-18-mimeo # PG 18
apt install -y postgresql-17-mimeo # PG 17
apt install -y postgresql-16-mimeo # PG 16
apt install -y postgresql-15-mimeo # PG 15
apt install -y postgresql-14-mimeo # PG 14
创建扩展:
CREATE EXTENSION mimeo CASCADE; -- 依赖: dblink
用法
提供 PostgreSQL 实例之间的按表复制,支持快照(全量复制)、增量(基于时间戳/ID)和 DML(插入/更新/删除)模式。
启用
CREATE SCHEMA mimeo;
CREATE EXTENSION mimeo SCHEMA mimeo;
需要 dblink 扩展。可选安装 pg_jobmon 用于监控。
设置数据源
-- 创建到源数据库的 dblink 连接
SELECT mimeo.dblink_mapping_create(
p_mapping_name := 'source_db',
p_data_source := 'host=sourcehost dbname=sourcedb user=replicator password=secret',
p_superuser := true
);
快照复制(全表复制)
每次运行时复制整个源表:
SELECT mimeo.snapshot_maker(
p_src_table := 'public.my_table',
p_dblink_id := 1 -- 来自 dblink_mapping
);
-- 刷新快照
SELECT mimeo.refresh_snap('public.my_table');
增量复制(基于时间戳)
基于递增时间戳列复制行:
SELECT mimeo.inserter_maker(
p_src_table := 'public.events',
p_control := 'created_at', -- 时间戳列
p_dblink_id := 1
);
-- 增量刷新
SELECT mimeo.refresh_inserter('public.events');
对于有更新的表(不仅仅是插入):
SELECT mimeo.updater_maker(
p_src_table := 'public.orders',
p_control := 'updated_at',
p_dblink_id := 1
);
SELECT mimeo.refresh_updater('public.orders');
DML 复制(插入/更新/删除)
通过源表上的触发器实现完整 DML 追踪:
SELECT mimeo.dml_maker(
p_src_table := 'public.accounts',
p_dblink_id := 1
);
SELECT mimeo.refresh_dml('public.accounts');
调度刷新
使用 pg_jobmon 或 cron 调度定期调用相应的 refresh_* 函数。
关键特性
- 三种复制模式:快照、增量、DML
- 按表复制(无需复制整个数据库)
- 在不同 PostgreSQL 版本之间工作
- 基于
dblink实现跨数据库通信