PostgreSQL 16.4安装以及集群部署

1. 环境准备

1.1 主机环境

  • 主机 IP: 192.24.215.121
  • 操作系统: CentOS 9
  • PostgreSQL 版本: 16.4

1.2 从机环境

  • 从机 IP: 192.24.215.122
  • 操作系统: CentOS 9
  • PostgreSQL 版本: 16.4

2. 安装 PostgreSQL 16.4

在主从两台机器上都需要安装 PostgreSQL 16.4。

2.1 添加 PostgreSQL 源

对于 CentOS,添加 PostgreSQL 的 YUM 源:

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

2.2 安装 PostgreSQL

在两台机器上分别安装 PostgreSQL 16.4:

sudo apt-get install -y postgresql-16

sudo yum install -y postgresql16-server postgresql16-contrib

2.3 初始化数据库

在主节点上初始化数据库:

sudo /usr/pgsql-16/bin/postgresql-16-setup initdb

在从节点上初始化数据库:

sudo /usr/pgsql-16/bin/postgresql-16-setup initdb

3. 配置主节点

3.1 编辑配置文件

编辑主节点的 postgresql.conf 文件:

vim /home/data/pgdb/postgresql.conf

修改以下参数:

listen_addresses = '*'
wal_level = replica
max_wal_senders = 32
wal_keep_size = 1GB
hot_standby = on
archive_mode = on
archive_command = 'test ! -f /home/data/pgdb/pg_wal/archive_status/%f && cp %p /home/data/pgdb/pg_wal/archive_status/%f'

3.2 配置 pg_hba.conf

编辑主节点的 pg_hba.conf 文件:

vim pg_hba.conf

添加以下行以允许从节点连接:

host    replication     all             192.24.215.122/24            md5

4. 配置从节点

4.1 编辑配置文件

编辑从节点的 postgresql.conf 文件:

vim /home/data/pgdb/postgresql.conf

修改以下参数:

listen_addresses = '*'
hot_standby = on

4.2 配置 pg_hba.conf

编辑从节点的 pg_hba.conf 文件:

vim /home/data/pgdb/pg_hba.conf

添加以下行以允许主节点连接:

host    replication     all             192.24.215.121/24           md5

5. 启动 PostgreSQL 服务

在两台机器上分别启动 PostgreSQL 服务:

$PGHOME/pg_ctl -D /home/data/pgdb start

确保服务启动成功:

$PGHOME/pg_ctl -D /home/data/pgdb status

6. 设置主节点

6.1 创建复制用户

在主节点上创建一个用于复制的用户:

su - postgres
psql

在 PostgreSQL 命令行中执行:

CREATE ROLE repl WITH REPLICATION LOGIN ENCRYPTED PASSWORD '123123';

6.2 允许复制用户连接

确保主节点的 pg_hba.conf 中允许复制用户从从节点连接:

host    replication     repl      192.24.215.122/24            md5

重新加载配置:

$PGHOME/pg_ctl -D /home/data/pgdb restart

7. 设置从节点

7.1 备份主节点数据

在从节点上备份主节点的数据:

su - postgres
pg_basebackup -h 192.24.215.121 -D /home/data/pgdb -U repl -P -v -R --wal-method=stream

输入复制用户的密码。

7.2 修改从节点配置

可以看到该目录下多了个standby.signal 文件,并且在postgresql.auto.conf文件下多了如下配置信息:

cat /home/data/pgdb/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
primary_conninfo = 'user=repl password=123456 channel_binding=prefer host=172.24.215.121 port=5432 sslmode=prefer sslcompression=0 sslcertmode=allow sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=prefer krbsrvname=postgres gssdelegation=0 target_session_attrs=any load_balance_hosts=disable'

7.3 启动从节点

启动从节点的 PostgreSQL 服务:

$PGHOME/pg_ctl -D /home/data/pgdb start

8. 验证复制

连接主库执行 select client_addr,state,sync_state from pg_stat_replication; 可以看到从库的信息:
在这里插入图片描述

在主节点上插入一些数据,然后在从节点上查询这些数据,确保数据同步:

su - postgres
psql
postgres=# CREATE TABLE test01 (id int primary key, name varchar(40));
postgres=# INSERT INTO test VALUES (1, '张三');
postgres=# INSERT INTO test VALUES (2, '李四');
postgres=# INSERT INTO test VALUES (3, '王五');

在从节点上查询:

su - postgres
psql
postgres=# SELECT * FROM test01;

在这里插入图片描述

如果数据同步,则表示集群配置成功。

9. 监控和管理

您可以使用以下命令监控复制状态:

postgres=# SELECT * FROM pg_stat_replication;

在这里插入图片描述

如果有任何问题,可以通过检查 PostgreSQL 的日志文件 /home/data/pgdb/log 来诊断。

10. 故障切换

如果主节点发生故障,可以将从节点提升为主节点:

sudo -u postgres touch /home/data/pgdb/trigger_file

从节点将会切换为主节点,并开始接受写操作。

11. 清理和优化

根据需要调整 postgresql.conf 中的参数,例如 checkpoint_timeoutmax_connections 等,以优化性能。

12.总结

本次的postgresql 16.4主备同步与我上次做postgresql 11 主备同步的变化

1、数据库安装方法

其实本次我选择的rpm包方法安装,上次使用二进制tar包安装postgresql 11的,这个不属于版本间的差异;

2、主备同步参数配置

wal_level本次要设置为replica,上次11.2的时候我设置为hot_standby,如果在16.4设置为hot_standby就不能进行同步;

3、主备同步后产生的文件

16.4配置了主备同步后,在备库的$PGDATA的目录下生成了standby.signal和backup_manifest两个文件,standby.signal为一个空文件,这在11.2的主备同步中备库是没有的文件

4、备库中primary_conninfo连接信息

在16.4中存放在postgresql.auto.conf,而在11.2中存放在recovery.conf文件中,16.4版本中没有recovery.conf文件。

5、pg_controldata的使用

在11.2中可以使用pg_controldata查看主备库的角色信息,主库的集群状态为in production,备库的集群状态为in archive recovery,但在16.4中不能使用该pg_controldata工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值