当前位置: 首页 > article >正文

应用指南 | 在IvorySQL中使用pglogical扩展模块

pglogical 是 PostgreSQL 的逻辑复制插件,专注于PostgreSQL数据库间高效复制和同步数据。它支持选择性复制特定表或数据,而非整个数据库,从而提供灵活性和低延迟的实时更新。与物理复制相比,逻辑复制能够跨不同版本的 PostgreSQL,便于版本升级和数据迁移,同时支持多源复制,将多个源数据库的数据整合到同一目标数据库。这使得 pg_logical 特别适用于负载均衡、实时数据分析、灾难恢复和数据整合等多种场景。

IvorySQL作为完全兼容PG的Oracle兼容开源数据库,对pglogical也能做到完美支持。

1

安装环境

操作系统:CentOS Stream 9

数据库版本:IvorySQL 3.4、IvorySQL 3.3

pglogical版本:pglogical v2.4.4

2

安装过程

yum install -y zlib-devel pam-devel libxml2-devel libxslt-devel lz4-develwget https://github.com/2ndQuadrant/pglogical/archive/refs/tags/REL2_4_4.tar.gztar -xvf ./REL2_4_4.tar.gzPATH=/usr/local/ivorysql/ivorysql-3/bin/:$PATH make clean allsudo PATH=/usr/local/ivorysql/ivorysql-3/bin/:$PATH make install在主库与备库上,同时进行如下修改:

3

配置环境

在主库与备库上,同时进行如下修改:

在IvorySQL的data目录下,修改ivorysql.conf文件;

在 shared_preload_libraries中,添加pglogical。

图片

同时,修改data目录下的postgresql.conf文件。

添加如下内容:​​​​​​​

wal_level = 'logical'max_worker_processes = 10max_replication_slots = 10max_wal_senders = 10

图片

修改 listen_addresses = '*'

图片

在 pg.hba.conf 中,

添加 host replication all 0.0.0.0/0 trust

图片

配置修改完成后,启动或重启数据库。

4

使用过程

发布端IP: 192.168.21.205 (IvorySQL 3.4)

订阅端IP: 192.168.21.167 (IvorySQL 3.3)

>>>发布端

psql 连接数据库,执行create extension pglogical;

图片

主库内添加测试表及初始数据​​​​​​​

create table test_pglogical(id int primary key, name text);insert into test_pglogical(1, 'test pglogical');


创建发布端node

SELECT pglogical.create_node(node_name := 'provider1',dsn := 'host=192.168.21.205 port=5432 dbname=ivorysql');

图片

将发布端public仓库内的所有表,添加到名为default的replication中

SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);

图片

>>>订阅端

psql 连接数据库,执行create extension pglogical;

图片

创建相同数据库

create table test_pglogical(id int primary key, name text);

订阅端创建node

SELECT pglogical.create_node(node_name := 'subscriber1',dsn := 'host=192.168.21.167 port=5432 dbname=ivorysql');

订阅端创建订阅

SELECT pglogical.create_subscription( subscription_name := 'subscription1', provider_dsn := 'host=192.168.21.205 port=5432 dbname=ivorysql');select * from test_pglogical;
 

我们就可以看到 IvorySQL可以完美支持pglogical。

5 Oracle 兼容及新增表同步

>>>发布端

创建含有Oracle数据类型的表​​​​​​​

set ivorysql.compatible_mode to oracle;create table test_oracle_type(id int primary key, name varchar2(20), value number(10));insert into test_oracle_type values(1, 'oracle varchar 1', 1);insert into test_oracle_type values(2, 'oracle varchar 2', 2);

图片

将新建表添加到发布端的replication中

select pglogical.replication_set_add_table('default',relation:='public.test_oracle_type'::regclass,synchronize_data:=true);

图片

>>>订阅端​​​​​​​
set ivorysql.compatible_mode to oracle;create table test_oracle_type(id int primary key, name varchar2(20), value number(10));select * from test_oracle_type;

图片

即可查看到新添加的表信息。

在发布端继续插入一些数据。​​​​​​​

insert into test_oracle_type values(3, 'oracle varchar 3', 3);select * from test_oracle_type;

图片

发布端插入数据后,订阅端数据同步成功。


http://www.kler.cn/news/356274.html

相关文章:

  • 【调教树莓派】如何获取树莓派的硬件ROOT(JTAG裸片调试)
  • docker 指令集
  • 计算机网络基本架构知识点
  • 手机摄影入门
  • 【FFmpeg】Common command
  • 网页前端开发之HTML入门篇:链接标签 a
  • 5 -《本地部署开源大模型》在Ubuntu 22.04系统下ChatGLM3-6B高效微调实战
  • window与ubuntu双系统时间同步
  • 易泊车牌识别:海外车牌快速定制,开启智能识别新时代
  • LSTM反向传播及公式推导
  • 如何查看公众号真实粉丝数,2024年还有哪些粉丝百万以上的大号?
  • 性能评测第一,阿里开源可商用AI模型Ovis 1.6使用指南,AI多模态大模型首选
  • java 第12天 单例 接口
  • Redis入门到精通(二):入门Redis看这一篇就够了
  • 云黑系统全解无后门 +搭建教程
  • 保研考研机试攻略:python笔记(1)
  • 初识git · 远程操作
  • DAY52WEB 攻防-XSS 跨站反射型存储型DOM 型标签闭合输入输出JS 代码解析
  • Python 独立成分分析(ICA) 详解与应用案例
  • 什么是ASC广告?Facebook ASC广告使用技巧