玖叶教程网

前端编程开发入门

新手如何快速搭建多套PostgreSQL集群

环境说明

名称

说明

操作系统

RockyLinux9.3

内存

4GB

数据库管理软件

CLup

主机1

PG01-10.16.18.163

主机2

PG02-10.16.18.164

主机3

PG03-10.16.18.165

1. 安装数据库软件

我们使用官方的源安装,参考PostgreSQL: Downloads,获取源

选择操作系统(数据库的版本不需要特意选择),当前测试环境是RockyLinux9

然后根据提示信息,安装PostgreSQL软件源

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

禁用掉操作系统默认的PostgreSQL版本

sudo dnf -qy module disable postgresql

安装指定版本的PostgreSQL数据库,这里我们先安装12的版本

sudo dnf install -y postgresql12-server postgresql12-contrib

RHEL9系列的当前只能支持PostgreSQL12及以上版本的了,要想安装旧版本要么自己编译,要么下载其他编译好的。

  • contrib:这个是随PostgreSQL分发默认携带的插件包,例如pg_stat_statements。

安装13的版本

sudo dnf install -y postgresql13-server postgresql13-contrib

安装14的版本

sudo dnf install -y postgresql14-server postgresql14-contrib

安装15的版本

sudo dnf install -y postgresql15-server postgresql15-contrib

安装16的版本

sudo dnf install -y postgresql16-server postgresql16-contrib

查看软件目录,默认都是安装在/usr下面,以pgsql-xx命名的

.
├── bin
├── games
├── pgsql-12
├── pgsql-13
├── pgsql-14
├── pgsql-15
├── pgsql-16
...

2. 安装数据库管理软件

这里使用的是中启乘数开发的PostgreSQL数据库管理软件CLup,安装部署参考文档:

都是一键安装的命令,安装部署起来很快,这里我们使用开源版本,商业版未注册的话也能使用,但是Agent端会有20个总CPU核心数的限制,集群数量限制为3个。开源版本没有核心数和集群数量限制,但是功能没有商业版的全,比如没有监控告警、备份恢复等。

3. 创建PostgreSQL集群

单台主机上允许创建多个PostgreSQL实例,下面我们将使用三台虚拟机,快速搭建PostgreSQL12~PostgreSQL16一主两备的集群。其思路主要是为不同版本的PostgreSQL数据库分配不同的属主、目录及端口号,这样一台主机上就可以同时运行多套PostgreSQL数据库集群。

开始之前我们先在三台机器上创建好目录/data

mkdir /data

默认的权限是drwxr-xr-x就可以。

首次创建集群时,需要先创建一个VIP池,VIP(虚拟IP)是提供给集群高可用使用的,当切换主库时,VIP也会飘到新主库上去:

现在我们登录CLup,然后点击HA管理->集群定义->创建集群->创建PostgreSQL流复制集群:

填写相关信息,其中操作系统用户不存在时需要指定下UID:

继续填写集群数据库的相关信息

然后点击下一步,后面是集群探测的信息和数据库参数,我们使用默认值,直接跳到提交这一步

查看创建日志,看到Success说明创建成功了

我们查看下集群详情页(HA管理->详情)

检查流复制状态,这个实际上是在主库上查了pg_stat_replication视图

后面我们创建其他几个版本的集群

4. 登录数据库

商业版可以在CLup页面上登录,开源版本没有这个功能。这里我们使用ssh登录主机,然后再登录数据库用户,下面以PostgreSQL12的版本为例。

登录操作系统用户

su - pg12

登录数据库(CLup在创建数据库时会在.bashrc文件中添加用户的环境变量)

psql -Upostgres

查看流复制信息

postgres=# \x
Expanded display is on.
postgres=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid | 49235
usesysid | 10
usename | postgres
application_name | 10.16.18.164
client_addr | 10.16.18.164
client_hostname |
client_port | 57172
backend_start | 2024-09-03 16:46:47.787031+08
backend_xmin |
state | streaming
sent_lsn | 0/7000000
write_lsn | 0/7000000
flush_lsn | 0/7000000
replay_lsn | 0/7000000
write_lag |
flush_lag |
replay_lag |
sync_priority | 0
sync_state | async
reply_time | 2024-09-03 17:37:31.193257+08
-[ RECORD 2 ]----+------------------------------
pid | 49243
usesysid | 10
usename | postgres
application_name | 10.16.18.165
client_addr | 10.16.18.165
client_hostname |
client_port | 39854
backend_start | 2024-09-03 16:46:54.665056+08
backend_xmin |
state | streaming
sent_lsn | 0/7000000
write_lsn | 0/7000000
flush_lsn | 0/7000000
replay_lsn | 0/7000000
write_lag |
flush_lag |
replay_lag |
sync_priority | 0
sync_state | async
reply_time | 2024-09-03 17:37:31.176141+08

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言