PostgreSQL 主从复制故障切换

news2024/11/25 19:18:56

文章目录

  • 前言
  • 环境准备
    • 搭建主从节点
    • 配置主从节点
    • 从节点加入主节点
    • 查看主从信息
  • 主从故障切换

前言

PostgreSQL的主从复制是一种非常简单且常用的高可用性和可扩展性解决方案,本质上是将主服务器的数据复制到一个或多个从服务器上,从而提高系统的性能和可靠性,并提供数据备份和故障恢复的能力。

环境准备

搭建主从节点

准备两个节点,一主一从,修改好ip,根据PostgreSQL 入门中的介绍安装好postgresql服务。

角色IP端口
Master192.168.10.105432
Standby192.168.10.115432

配置主从节点

先为主节点准备一些数据

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

接下来,主从都按照以下配置进行设置,因为后面会有主从切换的操作。

修改 pg_hba.conf 文件

image.png

修改 postgresql.conf 文件

image.png

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

image.png

重启PostgreSQL服务

systemctl restart postgresql-12

从节点加入主节点

关闭从节点服务

systemctl stop postgresql-12

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

rm -rf ~/12/data/*

基于pbk去主节点备份数据

# 确认好备份的路径,还有主节点的ip
pg_basebackup -D /pgbasebackup -Ft -Pv -Upostgres -h 192.168.10.10 -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.10.10 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

主从故障切换

PostgreSQL自身只支持简单的主从,不提供主从自动切换,如果要实现此功能只能通过Nginx这样的负载并采用keepalived的形式,在主节点宕机后,通过脚本的执行完成主从切换,这里做一个手动的故障切换操作。

默认情况下,主从备份是异步的,这样会导致一个问题:如果主节点写入的数据还没有备份到从节点,主节点忽然宕机了,数据可能丢失。

PGSQL在9.5版本后提供了一个pg_rewind的操作,基于归档日志做一个比对,是否有时间差冲突。

操作步骤:

  1. rewind需要开启一项配置才可以使用
    修改postgresql.conf中的 wal_log_hints = ‘on’

  2. 为了可以更方便的使用rewind,需要设置一下 /usr/pgsql-12/bin/ 的环境变量

    vi /etc/profile
      追加信息
    export PATH=/usr/pgsql-12/bin/:$PATH
    source /etc/profile
    
  3. 模拟主库宕机,直接对主库关机。

  4. 从节点切换为主节点

    # 默认会去找$PGDATA,如果没有配置,基于-D指定一下PGSQL的data目录
    pg_ctl promote -D ~/12/data/
    
  5. 将原主节点开机,执行归档日志的同步。

    • 停止PGSQL服务
      pg_ctl stop -D ~/12/data
      
    • 基于pg_rewind加入到集群
      pg_rewind -D ~/12/data/ --source-server='host=192.168.10.10 user=postgres password=postgres'
      
    • 如果上述命令失败,需要再执行以上操作。
  6. 修改原主节点(新从节点)的配置

    • 构建standby.signal
      standby_mode = 'on'
      
    • 修改postgresql.auto.conf文件
      # 注意ip地址
      primary_conninfo = 'user=postgres password=postgres host=192.168.10.10 port=5432 sslmode=prefer sslcompression=0 gssencmode=prefer krbsrvname=postgres target_session_attrs=any'
      restore_command = 'cp /archive/%f %p'
      
    • 启动新的从节点
      pg_ctl start -D ~/12/data/
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1022416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

会话控制学习

文章目录 介绍cookieexpress中使用cookie获取cookie session配置区别 介绍 cookie express中使用cookie 退出登录就是删除cookie 获取cookie 添加中间键后,直接获取 session 配置 区别

Linux 内核代码是 AMD GPU 驱动代码

导读Linux 内核代码是 AMD GPU 驱动代码 1/7 的 Linux 内核代码是 AMD GPU 驱动代码 随着开发中的 Linux 6.6 内核增加了对更多即将推出的 Radeon 图形处理器的支持,现在内核中 AMD GPU 驱动代码的行数已超过 500 万行。其中很大一部分是 AMD 在每一代新版本中不断…

Python的协程异步IO(asyncio)详解

一、协程简介 1.1 定义 协程不是系统级线程,很多时候协程被称为“轻量级线程”、“微线程”、“纤程(fiber)”等。简单来说可以认为协程是线程里不同的函数,这些函数之间可以相互快速切换。 协程和用户态线程非常接近,用户态线程之间的切换…

一文告诉你为什么时序场景下 TDengine 数据订阅比 Kafka 好

在 TDengine 3.0 中,我们对流式计算、数据订阅功能都进行了再升级,帮助用户极大简化了数据架构的复杂程度,降低整体运维成本。TDengine 提供的类似消息队列产品的数据订阅、消费接口,本质上是为了帮助应用实时获取写入 TDengine 的…

第二证券:a股注册制什么意思?

A股施行新的注册原则已经是大势所趋。那么什么是A股注册制?A股注册制和现行的核准制的差异在哪里?关于出资者来说,A股注册制带来了什么样的影响?这篇文章将从多个角度进行分析,为咱们答复疑问。 一、什么是A股注册制&…

[git] rebase 合并多个commit

一、未使用 rebase 的提交数量 上图中 可以看到 有四提交 二、使用rebase git rebase -i head~2表示合并 最后的两个提交, 也就是vv1 和 vv2 回车会弹出: 修改为 pick:保留该commit(缩写:p) reword:保留该commit…

《YOLOv5/YOLOv7/YOLOv8最新改进大作战》专栏介绍 CSDN独家改进创新实战 专栏目录

💡💡💡YOLOv5/YOLOv7/YOLOv8最新改进大作战,独家首发创新(原创),持续更新,适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提供每一步步骤和源码,轻松带…

蓝牙资讯|2023年Q2中国可穿戴市场同比增长17%,蓝牙可穿戴发展迅猛

IDC 发布《中国可穿戴设备市场季度跟踪报告》显示,2023 年第二季度中国可穿戴设备市场出货量为 3,350 万台,同比增长 17.3%,是自 2022 年以来季度最大规模出货。 智能手表 Q2 出货量 942 万台,同比增长 11.5%。其中成人智能手表 4…

什么是好的企业文化?

企业文化可以归结为三个关键词:使命、愿景和价值观。使命就是公司为什么存在,愿景就是公司未来的目标,价值观就是公司内部共同的信仰和行为准则。 简单来说,企业文化就是一群人为了同一个目标而努力工作,不断追求梦想…

深度学习:从理论到实践,探索神经网络的奥秘

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 介绍 深度学习是机器学…

尚硅谷大数据项目《在线教育之实时数仓》笔记002

视频地址:尚硅谷大数据项目《在线教育之实时数仓》_哔哩哔哩_bilibili 目录 第06章 数据仓库环境准备 P006 P007 P008 P009 P010 P011 P012 P013 P014 第06章 数据仓库环境准备 P006 P007 P008 http://node001:16010/master-status [atguigunode001 ~]$ …

低代码,向未来!云畅科技亮相2023世界计算大会

9月15日,2023世界计算大会在长沙北辰国际会议中心开幕,大会以“计算万物 湘约未来——计算产业新变革”为主题,由湖南省人民政府、工业和信息化部共同举办。 大会汇聚包括两院院士、国内外权威专家和知名企业家在内的150余位重要嘉宾&#xf…

武汉市中级工程师职称水平能力测试考试题型有哪些呢?

目前湖北中级职称评审,很多地方都需要组织水平能力测试,武汉市、襄阳、孝感、宜昌、荆州、鄂州、十堰等地级市都需要参加水平能力测试,但是水平能力测试每个地方要求又是不一样,目前湖北全省都没有统一的水平能力测试题库。 关于武…

计算机竞赛 深度学习 YOLO 实现车牌识别算法

文章目录 0 前言1 课题介绍2 算法简介2.1网络架构 3 数据准备4 模型训练5 实现效果5.1 图片识别效果5.2视频识别效果 6 部分关键代码7 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于yolov5的深度学习车牌识别系统实现 该项目较…

SpringBoot中级开发--事务配置管理(10)

事务在整个开发框架中是一个非常常用的功能,特别涉及到数据库操作。像Mysql,就有4个数据库级别: (1) READ UNCOMMITTED(读未提交):允许读取未提交的数据。这种级别的事务可以读取到其他事务未提交的数据,可…

docker部署最新版nacos(2.2.3)设置登录密码

最新版nacos(2.2.3)安装 1、下载 docker pull nacos/nacos-server2、启动nacos 如果nacos版本在2.0及以上,需要把8848、9848和9849三个端口映射出来,否则访问会404失败 docker run --env MODEstandalone --name nacos -d -p 8…

echarts统一纵坐标y轴的刻度线,刻度线对齐。

要求: 纵坐标刻度线对齐;刻度间隔为5;去掉千位默认的逗号;刻度最小是0. 效果图: 代码: yAxis: [{type: "value",position: "left",name: "kW",offset: 100,nameTextStyle:…

Android使用glide时报错“ ����: �޷�����Fragment Glide.with(getContext()) ^ �Ҳ���and”

在gradle.properties中添加下面两行代码 即可 android.useAndroidXtrue android.enableJetifiertrue

计算机界最著名的两个“小偷”,最后都成了亿万富豪!

1983年11年,乔布斯接到“线报”:亲密的合作伙伴比尔盖竟然违反合作协议,发布了一个新产品:Windows ! 他勃然大怒,立刻让手下把盖茨叫来,对着盖茨怒吼:你骗了我们,我那么信…

Vue基础语法【上】

目录 前言 一、插值 1.文本插值 2.html解析 3.属性 4.表达式 5.截取 6.三元运算符 二、指令 1.v-if 2.v-for 3.v-bind 4.v-on 5.v-if|v-else|v-else-if 6.自定义指令 三、过滤器 1.局部过滤 2.全局过滤 四、计算属性与监听属性 1.计算属性 2.监听属性 五、…