如何配置 pglogical | PostgreSQL 的流复制

news/2024/9/16 4:49:04/文章来源:https://www.cnblogs.com/wonchaofan/p/18326506

pglogical 扩展为 PostgreSQL 提供逻辑流复制

我们使用以下术语来描述节点之间的数据流,有意重复使用早期的 Slony 技术:
节点 - PostgreSQL 数据库实例
提供者和订阅者 - 节点承担的角色
复制集- 表的集合 
 
建筑细节:
• pglogical在每个数据库级别上工作,而不是像物理流复制那样在整个服务器级别工作
一个提供程序可以为多个订阅程序提供服务,而不会产生额外的磁盘写入开销
一个订阅服务器可以合并来自多个来源的变更,并通过自动和可配置的冲突解决方案检测变更之间的冲突(多主服务器所需的一些方面,但不是所有方面)。
级联复制以变更集转发的形式实现。
 
要求 :- 
  • 要使用 pglogical,提供商和订阅者必须运行 PostgreSQL 9.4 或更新版本。
  • 提供商和订阅者都必须安装 pglogical 扩展。您必须在两者上都创建扩展 pglogical。
  • 提供方和订阅方的表必须具有相同的名称并采用相同的架构。未来的修订版本可能会添加映射功能。
  • 提供者和订阅者上的表必须具有相同的列,并且每列的数据类型相同。订阅者上的 CHECK 约束、NOT NULL 约束等必须与提供者上的相同或更弱(更宽松)。
  • 表必须具有相同的 PRIMARY KEY。除了 PRIMARY KEY 之外,不建议添加其他 UNIQUE 约束。
  • 此处涵盖更多限制和约束 
安装 pglogical 扩展。
 
从以下链接下载 pglogical 扩展的源代码。
步骤1 
 
解压下载的文件夹。
 
第2步 
 
我正在配置从 9.5 到 9.6 PostgreSQL 社区版本的复制。
 
确保您已经配置了正确的环境变量。
 
进入文件夹。
cd pglogical-master
make USE_PGXS=1 install
 
Make below changes into postgresql.conf in both side .
wal_level = 'logical'
max_worker_processes = 10  
max_replication_slots = 10 
max_wal_senders = 10       
shared_preload_libraries = 'pglogical'
track_commit_timestamp = on 
pg_hba.conf has to allow replication connections
 
创建两个服务器的扩展。
create extension pglogical;
create extension pglogical_origin ;

 

确保您也在副本服务器上创建了表结构。
 
步骤3.创建节点和订阅。
 
在主服务器上。
A) 
 
SELECT pglogical.create_node(
 
node_name := 'provider1',
dsn := 'host=Replica/Subscriber_host port=5432 dbname=postgres'
);
B)将“公共”模式中的所有表添加到“默认”复制集。
SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);

 

 在副本/辅助服务器上。

A)
create table employee(id int primary key ,name varchar(20));
 
B)
一旦设置了提供者节点,订阅者就可以订阅它。首先
必须创建订阅者节点:
SELECT pglogical.create_node(
    node_name := 'subscriber1',
    dsn := 'host=Replica_host port=5432 dbname=postgres'
);
C) 
最后,在订阅者节点上,你可以创建订阅,它将
在后台启动同步和复制过程:
SELECT pglogical.create_subscription(
subscription_name := 'subscription1',
provider_dsn := 'host=master_host port=5432 dbname=postgres'
);
 

 

步骤4 
让我们在表中插入一些行并检查是否开始与辅助节点同步。
我已经插入了 100 行,现在我正在主服务器上插入另外 100 行。

 在订阅/辅助服务器上验证

 

步骤5.检查哪些后端进程正在运行。
 
在主服务器上 

 在辅助服务器上 - 

 

 
 
 
 
 

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

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

相关文章

Go语言结构体(struct)面向对象编程基础篇

作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 目录一.面向对象的引入1.Golang语言面向对象编程2.结构体的引入3.结构体定义4.结构体五种初始化方式5.结构体的互相转换6.匿名结构体二.结构体方法定义1.方法概述2.方法是值拷贝传递方式3.指针类型的接收者4.…

Linux的权限控制

本章将和大家分享Linux中的权限控制。本章将和大家分享Linux中的权限控制。废话不多说,下面我们直接进入主题。 一、基础知识 Linux作为一种多用户的操作系统(服务器系统),允许多个用户同时登陆到系统上,并响应每个用户的请求。 任何需要使用操作系统的用户,都需要一个系统…

通过Jupyter Notebook+OpenAI+ollama简单的调用本地模型

通过Jupyter Notebook+OpenAI+ollama简单的调用本地模型 起因是收到了ollama的邮件,貌似支持使用openai来调用本地的ollama下载的模型为自己用想了下正好试下,因为这几天正好在尝试用Jupyter Notebook来写点调用api的方式来使用大语言模型,看看后面能不能自己做点有意思的操…

后门函数技术在二进制对抗中的应用

本次题目跟第七届HWS线下的re2有类似的地方,均有后门函数。二进制后门可以理解为:我们只需要修改某个字节或某个函数,就可以将加密的过程变成解密的过程,大大节省逆向成本。本题先对内置的dll进行解密,然后调用其加密函数对我们的txt进行加密,如果我们将加密的函数nop为解…

基于kalman滤波的UAV三维轨迹跟踪算法matlab仿真

1.程序功能描述使用卡尔曼滤波对UAV在三维空间场景中的运动轨迹进行预测和估计,最后输出预测轨迹,估计轨迹以及三维空间轨迹估计结果。2.测试软件版本以及运行结果展示 MATLAB2022a版本运行 3.核心程序for k=1:length(X_direct)-1%第一个估计 Xk_ = [X_direct(k);Vx_direct…

裴蜀定理学习记录

1477A - Nezzar and Board 观察到2x-y可以拆成x+(x-y),现在模拟一下这个过程发现得到的数可以看成从某个点xj出发,加上若干个两数之间的差的形式。 再考虑一下2x-y的几何意义,发现相当于在数轴上做x关于y的对称点,并且和数的分布位置有关,和具体数值是无关的 接下来有一个…

基于模糊PID的直流电机控制系统simulink建模与仿真

1.课题概述PID控制器和模糊PID控制器通过Simulink建模实现,在matlab中编程实现模糊控制规则,PID控制器参数计算。运行simulink模型之后,将2个控制器的控制响应曲线进行对比得到仿真结果。2.系统仿真结果 将PID控制器的控制响应曲线和模糊PID控制响应曲线放一起对比,结果如下…

公钥私钥gitee都不行,新手小白破局(windows凭据)

公钥私钥gitee都不行,新手小白破局(windows凭据) 创建时间:2024-07-26 一、问题复现 gitee项目创建后,由于之前的 账号密码错乱,导致提交不了,不能克隆下来,不能提交,如下: 1.1 初始的一个项目1.2 克隆出现问题二、删除公钥私钥 2.1 本机之前生成的密钥文件 一般在这…

【活动预告】Easysearch 结合大模型实现 RAG

2024 搜索客社区 Meetup 首期线上活动正式启动,本次活动由 搜索客社区、极限科技(INFINI Labs)联合举办,诚邀广大搜索技术开发者和爱好者参加交流学习。 活动时间:2024 年 7 月 31 日 19:30-20:30 (周三) 活动形式:微信视频号(极限实验室)直播 报名方式:关注或扫码海…

反射、特性

1.反射的例子:

SQL数据库表 多对多关系设计--省去链表的尝试

概述 之前遇到一个MES需求,需要创建一个基础资料表 "人员信息表" ,用于其它业务的人员信息关连,因为这些人员并非系统登录帐号,所以单独进行维护。人员表涉及到字段包括:ID,工号,姓名,所属工序,所属职称,所属车间。其中,所属工序、所属职称、所属车间 为…

Asp .Net Core 系列:详解授权以及实现角色、策略、自定义三种授权和自定义响应

什么是授权(Authorization)? 在 ASP.NET Core 中,授权(Authorization)是控制对应用资源的访问的过程。它决定了哪些用户或用户组可以访问特定的资源或执行特定的操作。授权通常与身份验证(Authentication)一起使用,身份验证是验证用户身份的过程,授权与身份验证相互独…