踩了一堆坑,终于掌握了postgreSQL主从流的精髓

news2024/11/20 9:11:47

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.主从流复制
    • 📣 2.sync_state
    • 📣 3.主从Switchover切换
      • ✨ 3.1 主库操作
      • ✨ 3.2 前备库操作
    • 📣 4.主从Failover切换
    • 📣 5.节点扩容
    • 📣 6.异步改同步
    • 📣 7.总结


同步流复制在9.1版中实现。它是一种单主多从复制类型

文章目录

  • 前言
    • 📣 1.主从流复制
    • 📣 2.sync_state
    • 📣 3.主从Switchover切换
      • ✨ 3.1 主库操作
      • ✨ 3.2 前备库操作
    • 📣 4.主从Failover切换
    • 📣 5.节点扩容
    • 📣 6.异步改同步
    • 📣 7.总结

前言

同步流复制在9.1版中实现。它是一种单主多从复制类型

📣 1.主从流复制

此本机复制功能基于日志传送,这是一种通用的复制技术,其中主服务器不断向备用服务器发送WAL(预写日志)数据,然后备用服务器立即重放接收到的数据。流复制同步方式有同步、异步两种

📣 2.sync_state

sync_state是备用服务器的状态。
sync_state属性指示备用服务器的状态。
它可以是以下值之一:

1.sync:备用服务器处于同步模式,
是当前正在工作的优先级最高的备用服务器。

2.potential:备用服务器处于同步模式,
是当前正在工作的优先级较低的备用服务器。
如果当前同步备用服务器失败,
则此备用服务器将升级为同步状态。

3.async:备用服务器处于异步模式。
(它永远不会处于“同步”或“潜在”模式。)
通过发出以下查询,可以显示备用服务器的优先级和状态:

📣 3.主从Switchover切换

在保证主从数据一致的情况下,做如下操作

✨ 3.1 主库操作

1、停止PG服务
[root@primary ~]# su - postgres
[postgres@primary ~]$pg_ctl stop
2、以“postgres”用户创建创建standby.signal文件
touch /pgccc/pgdata/standby.signal
3、配置参数文件
cat >> KaTeX parse error: Expected 'EOF', got '#' at position 140: …root@primary ~]#̲ su - postgres … pg_ctl start

✨ 3.2 前备库操作

1、停止PG服务
[root@standby01 ~]# su - postgres
[postgres@standby01 ~]$ pg_ctl stop

2、删除“standby.signal”文件
rm -rf /pgccc/pgdata/standby.signal

3、修改参数文件,注释primary_conninfo
sed -i ‘s/primary_conninfo/#primary_conninfo/g’ /pgccc/pgdata/postgresql.conf

4、启动PG服务
[root@primary ~]# su - postgres
[postgres@primary ~]$ pg_ctl start

📣 4.主从Failover切换

主数据库是读写的,备数据库是只读的。当主库出现故障时,我们需要将备库提升为主库进行读写操作。

1)主库操作:关闭主库,模拟主库故障
[postgres@standby01 ~]$pg_ctl stop
waiting for server to shut down… done
server stopped
2)备库操作:激活备库为主库:
不关闭主库,也可以执行该命令强制切换为主库角色,切换完成后,主从关系断开
3)原主库修复后降为备库
过程类似于重建备库,操作主从搭建

rm -rf /backup
mkdir -p /backup
chown postgres:postgres /backup

su - postgres
pg_basebackup -h 192.168.6.20 -p 5432 -U repladm -l bk20240411 -F p -P -R -D /backup

-- 关闭从库,并且将备份文件覆盖从库的数据文件
[postgres@standby01 ~]$echo $PGDATA
/pgccc/pgdata
[postgres@standby01 ~]$ rm -rf /pgccc/pgdata/*
[postgres@standby01 ~]$ cp -r /backup/* /pgccc/pgdata/

4)修改配置参数
vi /pgccc/pgdata/postgresql.conf
primary_conninfo = ‘host=192.168.6.20 port=5432 user=repladm password=replica’

5)启动PG服务
[root@standby01 ~]# su - postgres
[postgres@standby01 ~]$ pg_ctl start

📣 5.节点扩容

–在从库对主库进行备份
mkdir -p /backup
chown postgres:postgres /backup

su - postgres
pg_basebackup -h 192.168.6.20 -p 5432 -U
repladm -l bk20240411 -F p -P -R -D /backup

关闭从库,删除从库的数据文件,并且将备份文件覆盖从库的数据文件
[postgres@standby02 ~]$echo $PGDATA
/pgccc/pgdata
[postgres@standby02 ~]$ rm -rf /pgccc/pgdata/*
[postgres@standby02 ~]$ cp -r /backup/* /pgccc/pgdata/

修改从库primary_conninfo参数
cat >> $PGDATA/postgresql.conf <<“EOF”
primary_conninfo = ‘host=192.168.6.20 port=5432 user=repladm password=replica’
EOF

重启备库
[postgres@standby02 ~]$ pg_ctl start

📣 6.异步改同步

–在3个节点都修改如下参数
cat >> /pgccc/pgdata/postgresql.conf <<“EOF”
synchronous_commit=‘on’
synchronous_standby_names=‘*’
EOF

synchronous_commit说明:
1.on或local当数据库提交事务时,wal先写入到wal buffer在写入到wal日志文件,当写入到wal日志文件后才向客户端返回成功。
优点:非常安全
缺点:数据库性能有损耗
2.off表示不等待本地wal buffer写入到wal日志就向客户端返回成功,设置此参数可以提升数据库性能。
优点:提升数据库性能
缺点:数据库宕机是最新提交的少量事务可能丢失

📣 7.总结

本文详细介绍了物理复制(流复制)的日常管理及避坑要要点

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

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

相关文章

大模型化身数据魔法师,降低NLP高置信误判

关注公众号【AI论文解读】回复: 论文解读 获取本文论文 引言&#xff1a;NLP模型的高置信错误与脆弱性问题 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;模型的预测性能优化往往伴随着高置信错误&#xff08;high confidence errors&#xff09;的产生&#x…

【python】python汽车之家数据抓取分析可视化(代码+报告+数据)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

2D AI交互数字人:赋能文旅、金融、政务、教育行业数字化转型

AI交互数字人结合了语音合成、语音识别、语义理解、图像处理、机器翻译、虚拟形象驱动等多项AI核心技术&#xff0c;可以提供服务导览、业务咨询、语音互动交流、信息播报等智能服务。 其中&#xff0c;2D AI交互数字人是采集真人视频&#xff0c;通过AI训练&#xff0c;生成逼…

C语言——字符函数与字符串函数

正文开始&#xff1a;在编程过程中&#xff0c;我们经常要处理字符和字符串&#xff0c;为了方便操作字符和字符串&#xff0c;C语⾔标准库中提供了 一系列库函数&#xff0c;接下来我们就学习⼀下这些函数。 1. 字符分类函数 C语⾔中有⼀系列的函数是专门做字符分类的&#…

基于ssm的智慧餐厅点餐管理系统设计与实现(java项目+文档+元)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的智慧餐厅点餐管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 智慧餐厅点餐管理系统设计…

在Mac主机上连接Linux虚拟机

前言 最近醉心于研究Linux&#xff0c;于是在PD上安装了一个Debian Linux虚拟机&#xff0c;用来练练手。但是每次在mac和Linux之间切换很是麻烦&#xff0c;有没有一种方法&#xff0c;可以在mac终端直接连接我的虚拟机&#xff0c;这样在mac终端上就可以直接操控我的Linux虚…

资本涌向AI,AI规模将达2205亿美元?

随着科技的飞速发展&#xff0c;全球科技巨头瑞银&#xff08;UBS&#xff09;在其最新报告中预测&#xff0c;科技产业正迎来一个前所未有的增长浪潮。特别是在人工智能&#xff08;AI&#xff09;领域&#xff0c;预计到2027年&#xff0c;AI模型和应用程序的市场规模将达到惊…

Docker部署WebRTC-Streamer

文章目录 WebRTC-Streamer概述Docker部署WebRTC-StreamerVue使用WebRTC-Streamer一些问题 WebRTC-Streamer概述 WebRTC-Streamer是一个基于WebRTC技术的流媒体传输工具&#xff0c;它可以通过Web浏览器实现实时音视频流的传输和播放。它提供了一种简单而强大的方式&#xff0c…

21.5k Star , AI 智能体项目OpenDevin:少写代码,多创造(附部署教程)

Aitrainee | 公众号&#xff1a;AI进修生 这是一个旨在复制 Devin 的开源项目&#xff0c;Devin 是一位自主人工智能软件工程师&#xff0c;能够执行复杂的工程任务并在软件开发项目上与用户积极协作。该项目致力于通过开源社区的力量复制、增强和创新 Devin。 Devin 代表了一…

汇舟问卷:国外问卷调查适合哪些人?

在这个快节奏的时代&#xff0c;朝九晚五的工作模式似乎已经成为许多人的固定生活模式。然而&#xff0c;这种日复一日的工作方式往往让人感到疲惫和厌倦&#xff0c;我们渴望找到一种既能赚钱又能兼顾生活的方式。 海外问卷调查作为一种适合在家做的赚钱方式&#xff0c;这两…

前端知识学习笔记-六(vue)

简介 Vue是前端优秀框架是一套用于构建用户界面的渐进式框架 Vue优点 Vue是目前前端最火的框架之一 Vue是目前企业技术栈中要求的知识点 vue可以提升开发体验 Vue学习难度较低 Vue开发前准备 一、nodejs环境 Nodejs简介 Nodejs诞生于2009年&#xff0c;主攻服务器方向&#x…

Github Coplit的认证及其在JetBrains中的使用

原文地址&#xff1a;Github Coplit的认证及其在JetBrains中的使用 - Pleasure的博客 下面是正文内容&#xff1a; 前言 今天分享一个可有可无的小技巧&#xff0c;水一篇文。 如标题所述&#xff0c;Github Coplit的认证及其在JetBrains中的使用 正文 介绍JetBrains JetBrain…

BCD BIN 转换

1&#xff0c;BCD是将10进制的每一位转换成2进制 如22 的中数子2的2进制就是0010&#xff0c;那么22的BCD 嘛就是 0010 0010 2&#xff0c;bin 的就是将2进制的每4位转成10进制 如 34的2进制就是0010 0010 高四位和低四位都是 0010 &#xff0c;0010对应的10进制就是2 那么…

ELFK日志分析系统之搭建ELF+Filebeaat+Zookeeper+Kafka

引言 结合前面所学 http://ELK日志分析系统 一、为什么要做日志分析平台 随着业务量的增长&#xff0c;每天业务服务器将会产生上亿条的日志&#xff0c;单个日志文件达几个GB&#xff0c;这时我们发现用Linux自带工具&#xff0c;cat grep awk 分析越来越力不从心了&#…

(四)qt中使用ffmpeg播放视频,可暂停恢复

一、在qt中添加ffmpeg库及头文件 INCLUDEPATH /usr/local/ffmpeg/include LIBS -L/usr/local/lib -lavutil -lavcodec -lavformat -lswscale 二、详细代码 FFempegVideoDecode 视频解码类&#xff08;放入线程中&#xff09; ffmpegvideodecode.h #ifndef FFMPEGVIDEODE…

程序猿没有副业,太难了

副业的初衷 我知道踏下心来钻研本专业会有收获,但又实在没有太多兴趣。 只好努努力,跟着兴致走,多一个选择,多一份抵抗风险的能力。 不管从事什么行业&#xff0c;除了做好自己本职工作以外&#xff0c;还会有一些空闲的时间来做一些其他事情&#xff0c;与其说是副业,不如说…

JavaScript教程(十四)--- 类型化数组

JavaScript 类型化数组 JavaScript 类型化数组是一种类似数组的对象&#xff0c;并提供了一种用于在内存缓冲中访问原始二进制数据的机制。 引入类型化数组并非是为了取代 JavaScript 中数组的任何一种功能。相反&#xff0c;它为开发者提供了一个操作二进制数据的接口。这在操…

OSCP靶场--PayDay

OSCP靶场–PayDay 考点(公共exp文件上传密码复用sudo -l all提权) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC 192.168.153.39 -p- -Pn --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-13 04:52 EDT Nmap scan report for 192…

常见的锁策略,synchronized优化过程和cas过程

1. 常见的锁策略 所谓"策略",也可以理解为做法."锁策略"就是用来描述一把锁面对加锁/解锁时的做法. 1.1 乐观锁 vs 悲观锁 要区分一把锁是乐观锁还是悲观锁,就要预测当前这把锁冲突的概率高不高. 如果冲突概率高,后续要做的工作往往会更多,加锁的开销就…

python画神经网络图

代码1(画神经网络连接图&#xff09; from math import cos, sin, atan import matplotlib.pyplot as plt # 注意这里并没有用到这个networkx这个库&#xff0c;完全是根据matploblib这个库来画的。 class Neuron():def __init__(self, x, y,radius,nameNone):self.x xself.y …