查看原文
其他

利用 Pgpool-II 实现 IvorySQL 集群读写分离

梁翔宇 IvorySQL开源数据库社区
2024-11-17
读写分离是数据库架构中的一种常见策略,它通过将读操作和写操作分开处理来优化数据库的负载,可以显著提高数据库系统的性能和可伸缩性。


Pgpool-II 是一个强大的 PostgreSQL 中间层代理,能够为PostgreSQL 集群提供读写分离、负载均衡等功能。通过正确配置 pgpool.conf 和使用 pcp 命令,可以有效地管理和优化 PostgreSQL 集群的性能与可靠性。


IvorySQL 作为一款基于 PostgreSQL 研发的兼容 Oracle 的数据库,同样完美适配Pgpool-II,通过搭建IvorySQL流复制集群、配置Pgpool-II等一系列操作后,即可完成一个高效易用的读写分离架构。下面我们将开始介绍Pgpool-II与IvorySQL适配过程及读写分离实践方案。



1

系统环境及应用版本

操作系统:CentOS Stream 9

数据库版本:IvorySQL 3.3

pgpool版本:Pgpool-II-4.5.2


2

IvorySQL 3.3安装与运行

CentOS Stream 9 已支持一键安装IvorySQL3.3

dnf install -y https://yum.highgo.ca/dists/ivorysql-rpms/repo/ivorysql-release-3.0-1.noarch.rpmdnf install -y ivorysql3 ivorysql3-server ivorysql3-contrib ivorysql3-test

配置IvorySQL

sudo chown -R ivorysql:ivorysql /usr/local/ivorysqlsu ivorysqlcd ~vim .bash_profile

将以下配置写入~/.bash_profile文件并使用source命令该文件使环境变量生效:

PATH=/usr/local/ivorysql/ivorysql-3/bin:$PATHexport PATHLD_LIBRARY_PATH=/usr/local/ivorysql/ivorysql-3/libexport LD_LIBRARY_PATH
source ~/.bash_profileinitdb -D /usr/local/ivorysql/ivorysql-3/datapg_ctl -D /usr/local/ivorysql/ivorysql-3/data -l ivory.log start

更多IvorySQL3.3的安装与数据库启动说明,请查阅文档:

https://docs.ivorysql.org/cn/ivorysql-doc/v3.3/v3.3/6


3

源码编译及安装 Pgpool-II

wget https://www.pgpool.net/mediawiki/images/pgpool-II-4.5.2.tar.gztar -xvf pgpool-II-4.5.2.tar.gzcd pgpool-II-4.5.2./configure --prefix=<path>make & make install


4

安装扩展函数

为提高 Pgpool-II 与 PostgreSQL 的集成稳定性,我们通常还需要安装一些扩展函数。
以pgpool-regclass为例

cd sql/pgpool-regclassmake && make installpsql -U ivorysql -f pgpool-regclass.sql template1


5

配置Pgpool-II及启动

cd /usr/local/etccp pcp.conf.sample pcp.confcp pgpool.conf.sample pgpool.conf

修改 pcp.conf

pg_md5 postgresecho "postgres:e8a48653851e28c69d0506508fb27fc5" >> pcp.conf

修改pgpool.conf
对下列配置选项进行修改

listen_addresses = '*'pcp_listen_addresses = '*'backend_hostname0 = '127.0.0.1'backend_port0 = 5432 backend_weight0 = 1sr_check_period = 20sr_check_user = 'ivorysql'sr_check_password=''sr_check_database = 'ivorysql'

保存修改后,启动Pgpool-II

pgpool -f pgpool.conf

pgpool将自动在后台运行,尝试使用 Pgpool-II 端口连接IvorySQL

psql -p 9999 -U ivorysql

我们成功通过Pgpool-II连上IvorySQL,IvorySQL与Pgpool-II适配成功。


7

一主一备的IvorySQL读写分离实践方案

接下来,简单介绍如何配置pgpool实现读写分离。
首先,本地启动两个数据库,并已开启流复制,5432为主库,5433为备库

将已启动的Pgpool-II停止。

pgpool -f pgpool.conf stop

编辑 pgpool.conf,添加或修改如下配置。

backend_hostname0 = '127.0.0.1'backend_port0 = 5432backend_weight0 = 0.1backend_data_directory0 = '/usr/local/ivorysql/ivorysql-3/data'backend_flag0 = 'ALWAYS_PRIMARY|DISALLOW_TO_FAILOVER'
backend_hostname1 = '127.0.0.1'backend_port1 = 5433backend_weight1 = 0.9backend_data_directory1 = '/usr/local/ivorysql/ivorysql-3/data-1'backend_flag1 = 'DISALLOW_TO_FAILOVER'load_balance_mode = on

重新启动Pgpool-II

pgpool -f pgpool.conf

连入Pgpool-II,通过show pool_nodes,查看数据库状态。

我们看到,5432作为主节点,5433作为备节点,均处于启动状态。

接下来,简单测试读写分离是否成功。

测试create、insert语句

查看主库的log,我们可以找到create 与 insert 记录。

测试 select 语句

在备库 data-1 的log中,就会出现刚才执行的 select 查询语句。

这样,一个包含一主一备的IvorySQL数据库集群的读写分离架构就完成了。



8

Pgpool-II适配IvorySQL兼容Oracle端口

在读写分离架构基础上,将PG端口修改成Oracle兼容端口。

重启Pgpool-II,并查询主备状态及兼容模式。

由此证明,Pgpool-II不但可以兼容IvorySQL的PG端口,也可以完美适配IvorySQL兼容的Oracle端口,并实现读写分离架构,这也为想要快速搭建读写分离架构的Oracle用户,提供了一种可行的方案。


本文简单介绍了Pgpool-II的启动与读写分离实践,想了解更多关于Pgpool-II的使用,请参阅官方文档:
https://www.pgpool.net/docs/latest/en/html/index.html


有关IvorySQL更多其他内容,请参阅IvorySQL官方文档:
https://docs.ivorysql.org

关注公众号,了解更多社区动态


- 我们是谁 -

lvorySQL 是由瀚高基础软件股份有限公司主导研发的,一款基于 PostgreSQL 并深度兼容 Oracle 的开源数据库系统。IvorySQL 从底层代码层面深入把握开源技术的发展趋势,基于 PostgreSQL 16.3 的最新内核进行构建,同时提供了更加全面灵活的Oracle 兼容功能,具备高度的 SQL 和 PL/SQL 兼容性,能够满足企业对于数据库系统多样化和高兼容性的需求。

- 推荐阅读 -

【IvorySQL技术指南】

Centos7 被停用!如何利用 Ora2Pg 将 Oracle 迁移至 IvorySQL?

聚焦 PGConf.dev 2024 聊聊 IvorySQL 最新应用实践

WAL-G完美支持IvorySQL的备份恢复

IvorySQL在Neon平台上的迅速部署和灵活应用

IvorySQL Operator | 一键部署IvorySQL集群,高效管理与个性化配置尽在掌

pgvector扩展在IvorySQL Oracle兼容模式下的应用实践

IvorySQL 3.2 贡献独门秘籍,可以平滑迁移Oracle???

IvorySQL 3.2 :基于PG16.2,新增Oracle XML函数兼容功能

基于IvorySQL+Patroni+vip-manager构建高可用集群

备份恢复新体验!pgBackRest与IvorySQL的完美融合

最新版本!PG16.0最新内核,实现兼容Oracle数据库再升级

IvorySQL的IVY_GUC框架介绍与使用指南

IvorySQL新增命令及有关配置参数介绍

IvorySQL在「兼容oracle」方面做了哪些工作?

IvorySQL内核的Serverless数据库--HGNeon

迁移Oracle数据库至IvorySQL(PG兼容模式)

IvorySQL新增命令及有关配置参数介绍


【PG技术指南】
学了这么久,PostgreSQL 这些指标到底是什么?
了解 PostgerSQL 的门户 – Executor vs Process Utility
数据库泰斗Stonebraker :“警惕数据库技术的过分炒作!”
2024 PGConf.dev 技术大盘点(下)
必看!!! 2024 最新 PG 硬核干货大盘点(上)
初学者指南 | PostgreSQL中的加密机制如何运作?
DBOS革命:迈克尔·斯通布雷克和无服务器计算的未来
7个维度!PostgreSQL生态展望:2024路向何方?
PostgreSQL16中的新增功能:双向逻辑复制
Kubernetes上PostgreSQL的存储策略
7个工具!让Oracle 迁移至 PostgreSQL成为可能!
4步上手Meson:让PostgreSQL 16 构建更现代化!
PostgreSQL 中的 JSON:彻底改变数据库中的数据灵活性




IvorySQL


  一款开源的兼容Oracle的PostgreSQL


官方网址:
https://www.ivorysql.org
社区仓库:
https://github.com/IvorySQL/IvorySQL
IvorySQL社区欢迎并赞赏所有类型的贡献,期待您的加入!
记得在GitHub给我们一个 ⭐奥~


点击文末的 “阅读原文”,开启您的IvorySQL3.0 Release Notes探索之旅,深入了解更多独家特性。

>>>最新主版本体验链接:
https://github.com/IvorySQL/IvorySQL/releases
继续滑动看下一个
IvorySQL开源数据库社区
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存