当前位置: 首页 > news >正文

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=# \duList of rolesRole 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 |  192 | haha  |  18
(2 rows)

http://www.lryc.cn/news/417178.html

相关文章:

  • C# 中引用类型的探讨
  • 技术分享| 前端性能优化——虚拟滚动(Virtual Scroll)
  • Flink 实时数仓(四)【DWD 层搭建(二)流量域事实表】
  • Go 1.19.4 接口-Day 10
  • 智能编程新纪元:腾讯AI代码助手的高效编程体验
  • 使用snap安装docker配置阿里云镜像加速
  • 安全编程的代码示例
  • 【实现100个unity特效之15】最简单的方法使用shader graphs实现2d非像素和像素树叶草的随风摇摆效果
  • Vue3+TS+element plus实现一个简单列表页面
  • Go语言中gin+gorm开发前端端分离博客时遇到的问题,gorm执行查询时如何选中特定字段?
  • 计算机网络11——数据库语法2
  • 华为USG6000E-S12防火墙Key exchange failed.无法SSH解决方案
  • matlab基础操作(五)
  • 力扣 两数之和
  • Django 实现连续请求
  • 前端(react)框架nextjs
  • 深耕编程语言18年,对话 Rust、TypeScript、Nushell 核心贡献者 Sophia Turner | Open AGI Forum
  • 深度学习--图像分割UNet介绍及代码分析
  • 接了一个2000块的小活,大家进来看看值不值,附源码
  • 基于MindFormers实现GPT2模型的推理
  • 探索腾讯云AI代码助手:智能编程的新时代
  • MySQL 之 MHA 高可用架构详解
  • WangEditor自定义新元素,并解决自定义元素中换行无法消除样式的问题
  • VBA Excel口算题
  • C++理解临时对象的来源
  • C++协助完成返回值优化
  • 2024年睿抗机器人开发者大赛(RAICOM)国赛题解
  • 声明式UI语法
  • JDBC连接数和1521连接数之间的区别和联系(Java Database Connectivity)
  • Leetcode - 136双周赛