# PostgreSQL实现DDL逻辑复制

> 作者/来源: UCloud 运营管理员
> 发布时间: 2023-01-11T05:20:00.000Z
> 分类: 云主机
> 标签: 安全
> 原文链接: http://117.50.162.249:3000/yun/articles/962

---

# PostgreSQL实现DDL逻辑复制

> 来源: https://www.ucloud.cn/yun/129911.html
> 作者: IT那活儿
> 发布日期: 发布于2023-01-11 13:20

PostgreSQL实现DDL逻辑复制

PostgreSQL 社区官方版本不支持DDL的逻辑复制，仅支持DML【INSERT、UPDATE、DELETE、TRUNCATE】，且要求表有主键，否则UPDATE和DELETE无法复制（注意：逻辑复制要求wal\_level为logical）。

目前有第三方的插件可以做到DDL复制：

- BDR【收费】
- pglogical【开源，比较复杂】
- pgl\_ddl\_deploy

本文主要介绍pgl\_ddl\_deploy插件。

pgl\_ddl\_deploy该插件可以实现PG逻辑复制中的DDL复制。该插件具有以下特点：

- 任何DDL SQL语句都可以直接传播给订阅者
- 表可以在创建时自动添加到复制中
- 支持过滤。可以选择性仅复制某些schema
- 可以选择以锁定安全的方式在订阅服务器上进行部署
- ALTER TABLE语句可以由子命令标签过滤

当前最新版本是2.10版，从2.0版本开始，它支持使用本机逻辑复制进行DDL复制(以前依赖于pglogical插件)。

详细信息请查阅：https://github.com/enova/pgl\_ddl\_deploy

pgl\_ddl\_deploy安装

需要在源端和目标端都需要进行安装：

tar -xzvf pgl\_ddl\_deploy.tar.gz

cd pgl\_ddl\_deploy

make

make install

## 

部署流程

## **1. 在发布端进行配置**

**1.1 创建发布**

```
▼▼▼
```

**1.2 在发布端进行配置**

```
▼▼▼
```

set\_name:发布端的名字，一定要和创建的发布的名称一致

include\_schema\_regex:提供正则表达式，用来匹配需要同步的schema，它可以将新表自动添加到复制中

driver:选择原生（native）或者pglogical插件

#### **1.3 开启DDL复制**

```
▼▼▼
```

返回结果为t，代表启动成功

**1.4 相关权限配置**

```
▼▼▼
```

## **2. 目标端配置：**

```
▼▼▼
```

实战操作

**源端配置：**

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129911/images/129911_000.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129911/images/129911_001.png)

**目标端配置：**

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129911/images/129911_002.png)

**源端执行ALTER：**

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129911/images/129911_003.png)

**目标查看ALTER直接结果：**

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129911/images/129911_004.png)

源端添加和删除表：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129911/images/129911_005.png)

目标端查看结果：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129911/images/129911_006.png)

源端插入数据：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129911/images/129911_007.png)

**目标端查看：**【新添加的表的数据不会自动同步到目标端，需要在目标端进行手工刷新】

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129911/images/129911_008.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129911/images/129911_009.png)

END

更多精彩干货分享

点击下方名片关注

IT那活儿

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129911/images/129911_010.png)