PostgreSQL 15 使用物理复制槽 实现主从

一、系统环境

IP操作系统用途
192.168.140.153CentOS 7.9.2009pg-主节点
192.168.140.159CentOS 7.9.2009pg-从节点

二、单节点安装

2.1 主节点安装

参考前一篇文章

2.2 从节点安装

只需要先将rpm包安装即可,无需初始化数据库,无需启动服务。

三、主从配置

3.1 主节点配置

3.1.1 创建同步账号
# 切换到postgres账号
[root@localhost data]# su - postgres

# 转到pg命令行模式
-bash-4.2$ psql 
psql (15.7)
Type "help" for help.

# 创建角色replica,并赋予权限
postgres=# create role replica login replication encrypted password 'replica';

# 查询角色
postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 replica   | Replication                                                | {}
3.1.2 修改配置文件
[root@localhost data]# vi pg_hba.conf
# 在最下面添加以下行
host    replication     replica         192.168.140.0/0         md5

[root@localhost data]# vi postgresql.conf
# 开启热备
hot_standby = on
3.1.3 重启服务
[root@localhost data]# systemctl restart postgresql-15.service

3.2 从节点配置

3.2.1 创建pg工作目录
# 该目录必须和主机工作目录一致
[root@localhost opt]# mkdir -p /opt/postgre/data/
3.2.2 同步数据
[root@localhost opt]# /usr/pgsql-15/bin/pg_basebackup -h 192.168.140.153 -p 5432 -U replica -F p -X stream -P -R -v -D /opt/postgre/data/
3.2.3 修改启动配置
[root@localhost opt]# vi /usr/lib/systemd/system/postgresql-15.service
# 修改路径为刚创建的目录
Environment=PGDATA=/opt/postgre/data/
3.2.4 配置standby.signal
[root@localhost opt]# vi /opt/postgre/data/postgresql.conf
# 修改如下配置项
primary_conninfo = 'user=replica password=replica channel_binding=prefer host=192.168.140.153 port=5432 sslmode=prefer sslcompression=0 sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=prefer krbsrvname=postgres target_session_attrs=any'

# 新建standby.signal文件
[root@localhost opt]# vi /opt/postgre/data/standby.signal
# 添加如下内容
# 开启热备
standby_mode = 'on'
primary_conninfo = 'user=replica password=replica channel_binding=prefer host=192.168.140.153 port=5432 sslmode=prefer sslcompression=0 sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=prefer krbsrvname=postgres target_session_attrs=any'
3.2.5 修改目录授权
[root@localhost opt]# chown -R postgres: postgre/

[root@localhost opt]# cd postgre/

[root@localhost postgre]# chmod 0777 data/
3.2.6 启动服务
[root@localhost postgre]# systemctl start postgresql-15.service

四、测试

4.1 主节点新建数据表

# 新建schema
postgres=# create schema test;

# 新建表
create table test.tb(id serial primary key,name varchar(100),age int);

# 新增数据
insert into test.tb(id,name,age) values (1,'final',19);
postgres=# insert into test.tb(id,name,age) values (2,'haha',18);

4.2 从节点验证是否同步

# 在从库查询数据是否与主库相同
postgres=# select * from test.tb;
 id | name  | age 
----+-------+-----
  1 | final |  19
  2 | haha  |  18
(2 rows)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值