如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制

如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制

  • 如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制
    • 环境准备
    • 1. 配置主服务器(Publisher)
      • 1.1 修改 `postgresql.conf`
      • 1.2 修改 `pg_hba.conf`
      • 1.3 重启 PostgreSQL 服务
      • 1.4 创建逻辑复制槽
    • 2. 配置从服务器(Subscriber)
      • 2.1 修改 `postgresql.conf`
      • 2.2 修改 `pg_hba.conf`
      • 2.3 重启 PostgreSQL 服务
    • 3. 创建订阅
    • 4. 创建发布
    • 5. 验证复制
    • 6. 删除复制槽和订阅
      • 6.1 删除订阅(在从服务器上)
      • 6.2 删除逻辑复制槽(在主服务器上)
    • 说明

如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制

以下是一个完整的示例,展示如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制。
我们将设置一台主服务器(Publisher)和一台从服务器(Subscriber),并通过逻辑复制槽实现数据同步。

环境准备

假设我们有两台服务器:

  • 主服务器(Publisher):192.168.1.100
  • 从服务器(Subscriber):192.168.1.101

1. 配置主服务器(Publisher)

1.1 修改 postgresql.conf

在主服务器上,编辑 postgresql.conf 文件,确保以下设置已启用:

# 启用逻辑复制
wal_level = logical# 设置最大 WAL 发送者数量
max_wal_senders = 5# 允许从服务器连接
listen_addresses = '*'

1.2 修改 pg_hba.conf

pg_hba.conf 文件中,添加从服务器的 IP 地址以允许其连接:

# 允许从服务器连接
host    replication     all             192.168.1.101/32         md5

1.3 重启 PostgreSQL 服务

sudo systemctl restart postgresql

1.4 创建逻辑复制槽

连接到主服务器的 PostgreSQL 数据库并创建逻辑复制槽:

sudo -u postgres psql-- 创建逻辑复制槽
SELECT * FROM pg_create_logical_replication_slot('replica_slot', 'pgoutput');

2. 配置从服务器(Subscriber)

2.1 修改 postgresql.conf

在从服务器上,编辑 postgresql.conf 文件,确保以下设置已启用:

# 启用逻辑复制
wal_level = logical# 设置最大 WAL 发送者数量
max_wal_senders = 5# 允许主服务器连接
listen_addresses = '*'

2.2 修改 pg_hba.conf

pg_hba.conf 文件中,添加主服务器的 IP 地址以允许其连接:

# 允许主服务器连接
host    replication     all             192.168.1.100/32         md5

2.3 重启 PostgreSQL 服务

sudo systemctl restart postgresql

3. 创建订阅

在从服务器上,连接到 PostgreSQL 数据库并创建订阅:

sudo -u postgres psql-- 创建订阅
CREATE SUBSCRIPTION my_subscription
CONNECTION 'host=192.168.1.100 dbname=your_db user=your_user password=your_password'
PUBLICATION my_publication;

4. 创建发布

在主服务器上,连接到 PostgreSQL 数据库并创建发布:

sudo -u postgres psql-- 创建发布
CREATE PUBLICATION my_publication FOR ALL TABLES;

5. 验证复制

在主服务器上插入一些数据以验证复制是否正常工作:

-- 在主服务器上插入数据
INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2');

然后在从服务器上查询数据,确认数据已成功复制:

-- 在从服务器上查询数据
SELECT * FROM your_table;

6. 删除复制槽和订阅

当不再需要复制时,可以删除订阅和复制槽:

6.1 删除订阅(在从服务器上)

DROP SUBSCRIPTION my_subscription;

6.2 删除逻辑复制槽(在主服务器上)

SELECT pg_drop_logical_replication_slot('replica_slot');

说明

以上步骤展示了如何在两台 PostgreSQL 服务器之间设置逻辑复制槽。确保在生产环境中进行充分测试,并根据需要调整配置参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果开发者入门:修复 SwiftUI 中“跑偏的”动画(下)

概述 大家知道 SwiftUI 不仅仅是一款 App 界面布局的超级利器,它同样提供了花样百出的动画和转场机制将 UI 世界点缀的“楚楚动人”。不过,对于苹果开发新入门的秃头小码农来说,使用动画貌似没有想象的那么易如反掌。 如上图所示&#xff0c…

kafka-clients之监控

以生产者为例介绍spring如何整合kafka-clients,micrometer,prometheus。上报生产者监控打点 可以通过在Spring Boot应用中手动添加Kafka Producer的度量监控,确保Prometheus能够采集到Producer的指标。以下是一个示例代码,其中使…

【万字详解】三维重建(二)——NeRF、NeuS、MeshUDF、NeuralUDF、3DGS、GShell

文章目录 一、NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis(推荐读)1.1 式1 神经网络的输入和输出1.2 式2 体素渲染算法1.3 式3 损失函数1.4 位置编码1.5 基本原理二、经典的重建流程2.1 传统的三维重建pipeline2.2 神经网络回归2.3 可微渲染最优…

优化Go语言中的网络连接:设置代理超时参数

网络连接优化的重要性 在分布式系统和微服务架构中,网络请求的效率直接影响到整个系统的响应速度。合理的超时设置可以防止系统在等待网络响应时陷入无限期的阻塞,从而提高系统的吞吐量和用户体验。特别是在使用代理服务器时,由于增加了网络…

【人工智能解读】神经网络(CNN)的特点及其应用场景器学习(Machine Learning, ML)的基本概念

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…

颜色的基本处理

数码相机能够获取彩色图像,但相机的色彩处理是一个非常复杂的过程,是非常重要的。 此过程生产制造商在细节方面都是不公布的,但是基本的概念是相同的。当相机捕捉一个真实场景时,是怎么还原成人眼所看到的图像呢? 1.R…

OpenCV 功能函数介绍 (二)

一,梯度处理的sobel算子函数 功能: 用于计算图像梯度(gradient)的函数 参数: cv2.Sobel(src, ddepth, dx, dy, ksize3, scale1, delta0, borderTypeNone) cv2.Sobel(输入图像 , 应该是灰…

PostgreSQL JSON/JSONB 查询与操作指南

PostgreSQL 提供了强大的 JSON 和 JSONB 数据类型及相关操作,适用于存储和查询半结构化数据。本文将详细介绍其常用操作。 1. 基础操作 1.1 JSON 属性访问 ->: 返回 JSON 对象中的值,结果为 JSON 格式。 SELECT {"a": {"b": 1…

《宇宙机器人》提示错误弹窗“找不到d3dx9_43.dll”是什么原因?“d3dx9_43.dll缺失”怎么解决?

电脑游戏运行时常见问题解析:《宇宙机器人》提示“找不到d3dx9_43.dll”的解决之道 TGA2024落幕,年度最佳游戏——《宇宙机器人》,作为一名在软件开发领域深耕多年的从业者,我深知电脑游戏在运行过程中可能会遇到的各种挑战&…

2024年山西省第十八届职业院校技能大赛 (高职组)“信息安全管理与评估”赛项规程

2024年山西省第十八届职业院校技能大赛 (高职组)“信息安全管理与评估”赛项规程 一、赛项名称 赛项名称:信息安全管理与评估 英文名称:Information Security Management and Evaluation 赛项组别:高职教师组 赛项归属…

modbus学习笔记

ModBus协议的两大变体:ModBus RTU 与 ModBus TCP Modbus报文头(MBAP)帧结构(PDU)7个字节 功能码:1个字节 注意:据说RTU和TCP的差距就是效验码 Modbus协议最基本的通信单位是帧,整个Modbus帧又被称之为应用…

Flutter 桌面端串口配置

前言 我使用flutter_libserialport包在macOS中实现串口通信的功能,可以实现数据收发,但是收到的内容是乱码。这种情况一般都是由于波特率和硬件设备不一致导致的。 配置串口配置 1.打开串口读写 import package:flutter_libserialport/flutter_libser…

JavaScript逆向时,常用的11个hook

提示:记录工作中遇到的需求及解决办法 文章目录 前言01、dom操作02、Cookie操作03、事件监听操作04、AJAX拦截操作05、函数替换操作06、Header操作07、URL操作08、JSON.stringify操作09、JSON.parse操作10、eval操作11、Function操作前言 在逆向分析JavaScript代码时,开发者…

什么是EDI 896?

EDI 896 报文即产品尺寸维护报告(Product Dimension Maintenance),是一种常用于零售和供应链管理领域的EDI(电子数据交换)事务集。它的主要功能是用来传递或更新有关产品尺寸、属性和分类等信息。此消息通常在以下场景…

PPO系列2 - GAE优势函数

策略梯度: 痛点: 1. t时刻的动作,其只会影响t时刻之后得到的Reward,和之前的无关。 2. t时刻的动作,对接下来邻近的几个Reward关系较大,跟远的关系小。 改进: 1. 只累加t时刻之后的Reward。 2. …

subList与原始List相互影响

在 Java 中,List#subList(int fromIndex, int toIndex) 方法返回的是原始列表的一个视图(view),而不是一个独立的副本。这意味着对 subList 的任何修改都会反映到原始列表中,反之亦然。这可能会导致意外的行为&#xf…

pytest入门三:setup、teardown

https://zhuanlan.zhihu.com/p/623447031 function对应类外的函数,每个函数调用一次 import pytest def setup_module():print(开始 module)def teardown_module():print(结束 module)def setup_function():print(开始 function)def teardown_function():print(结…

React+Antd修改Table组件滚动条样式

版本 Antd 5.x.x React 18.x.x Tsx <TabledataSource{SocrePaMing.length > 0 ? SocrePaMing : []}columns{tableScoreColumns}rowKey"attribute"pagination{false}className"custom-table"scroll{{ y: 400 }} /> Css .ant-table-body …

一、使用 mdadm 工具在 Ubuntu 上创建 RAID 1(镜像)

在 Ubuntu 上创建 RAID 1&#xff08;镜像&#xff09;可以使用 mdadm 工具。以下是详细的步骤&#xff0c;包括安装必要的工具、创建 RAID 阵列、格式化并挂载 RAID 设备。 步骤一&#xff1a;安装 mdadm 首先确保你已经安装了 mdadm 包&#xff0c;这是管理软件 RAID 所需的…

webstorm开发uniapp(从安装到项目运行)

1、下载uniapp插件 下载连接&#xff1a;Uniapp Tool - IntelliJ IDEs Plugin | Marketplace &#xff08;结合自己的webstorm版本下载&#xff0c;不然解析不了&#xff09; 将下载到的zip文件防在webstorm安装路径下&#xff0c;本文的地址为&#xff1a; 2、安装uniapp插…