PostgreSQL教程:主备集群搭建(基于异步流复制)

PostgreSQL自身只支持简单的主从,没有主从自动切换,仿照类似Nginx的效果一样,采用keepalived的形式,在主节点宕机后,通过脚本的执行完成主从切换。

主从实现(异步流复制)

操作方式类似与之前的备份和恢复

1、准备环境:

角色 IP 端口
Master 192.168.11.66 5432
Standby 192.168.11.67 5432

准备两台虚拟机,完成上述的环境准备

修改好ip,安装好postgresql服务

2、给主准备一些数据

create table t1 (id int);
insert into t1 values (111);
select * from t1;

3、配置主节点信息(主从都配置,因为后面会有主从切换的操作)

修改 pg_hba.conf 文件

image.png

修改 postgresql.conf 文件

image.png

提前构建好归档日志和备份目录,并且设置好拥有者

image.png

重启PostgreSQL服务

systemctl restart postgresql-12

4、从节点加入到主节点

关闭从节点服务

systemctl stop postgresql-12

删除从节点数据(删除data目录)

rm -rf ~/12/data/*

基于pbk去主节点备份数据

# 确认好备份的路径,还有主节点的ip
pg_basebackup -D /pgbasebackup -Ft -Pv -Upostgres -h 192.168.11.66 -p 5432 -R

恢复数据操作,解压tar包

cd /pgbasebackuo
tar -xf base.tar -C ~/12/data
tar -xf pg_wal.tar -C /archive

修改postgresql.auto.conf文件

# 确认有这两个配置,一般第一个需要手写,第二个会自动生成
restore_command = 'cp /archive/%f %p'
primary_conninfo = 'user=postgres password=postgres host=192.168.11.66 port=5432 sslmode=prefer sslcompression=0 gssencmode=prefer krbsrvname=postgres target_session_attrs=any'

修改standby.signal文件,开启从节点备份模式

# 开启从节点备份
standby_mode = 'on'

启动从节点服务

systemctl restart postgresql-12

查看主从信息

  • 查看从节点是否有t1表
  • 主节点添加一行数据,从节点再查询,可以看到最新的数据
  • 从节点无法完成写操作,他是只读模式
  • 主节点查看从节点信息
    select * from pg_stat_replication
    
  • 从节点查看主节点信息
    select * from pg_stat_wal_receiver
    

猜你喜欢

转载自blog.csdn.net/a772304419/article/details/132930489