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

📢📢📢📣📣📣
哈喽!大家好,我是【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.mzph.cn/news/815878.shtml

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

相关文章

【数据结构】4.List的介绍

目录 1.什么是List 2.常见接口介绍 3.List的使用 1.什么是List 在集合框架中&#xff0c;List是一个接口&#xff0c;继承自Collection。 Collection也是一个接口&#xff0c;该接口中规范了后序容器中常用的一些方法&#xff0c;具体如下&#xff1a; Iterable也是一个接口…

syscall的检测与绕过(下)

syscall的检测与绕过 ntdll中syscall被执行的格式大致 我们可以通过检测mov r10, rcx类似的代码来确定程序是否直接进行系统调用。 但是很容易被bypass 而且还可以写出很多不一样的写法&#xff0c;显然这个方式是不行的。很轻易就会被bypass。 当然也可以检测syscall指令&a…

UDTF函数 explode

场景&#xff1a; 原hive数据形式 split 处理到一个Array 形式 使用explode炸开后的效果是 explode结合侧面视图达到targeType 目标形式&#xff1a; 一进多出 explode 将hive 中复杂的 array 炸成多行 因为炸开后&#xff0c; movie 列值少于categoryname 列所以这里为了达到…

朴素模式匹配算法

什么是字符串的模式匹配&#xff1f; 字符串模式匹配:在主串中找到与模式串相同的字串&#xff0c;并返回其所在位置 算法思想&#xff1a; 算法思想为:从主串S的第一个字符起&#xff0c;与模式串T的第一个字符比较,若相等&#xff0c;则继续逐个比较后续字符;否则从主串的下一…

Windows环境下删除MySQL

文章目录 一、关闭MySQL服务1、winR打开运行&#xff0c;输入services.msc回车2、服务里找到MySQL并停止 二、卸载MySQL软件1、打开控制模板--卸载程序--卸载MySQL相关的所有组件 三、删除MySQL在物理硬盘上的所有文件1、删除MySQL的安装目录&#xff08;默认在C盘下的Program …

多线程代码案例之阻塞队列

目录 1.生产者消费者模型 2.使用标准库中的阻塞队列 3.模拟实现阻塞队列 在介绍阻塞队列之前&#xff0c;会先介绍一些前置知识&#xff0c;像队列&#xff1a;有普通队列、优先级队列、阻塞队列、和消息队列。前面两个是线程不安全的&#xff0c;而后面两个是线程安全的。本…

全栈的自我修养 ———— react实现滑动验证

实现滑动验证 展示依赖实现不借助create-puzzle借助create-puzzle 展示 依赖 npm install rc-slider-captcha npm install create-puzzleapi地址 实现 不借助create-puzzle 需要准备两张图片一个是核验图形&#xff0c;一个是原图------> 这个方法小编试了后感觉比较麻烦…

【七 (1)FineBI FCP模拟试卷-股票收盘价分析】

目录 文章导航一、字段解释二、需求三、操作步骤1、添加计算字段&#xff08;每月最后一天的收盘价&#xff09;2、绘制折线图 文章导航 【一 简明数据分析进阶路径介绍&#xff08;文章导航&#xff09;】 一、字段解释 Company Name&#xff1a;公司名称 Date&#xff1a;…

【vue】绑定事件 v-on

v-on 简写&#xff1a; clickkeyupkeydownkeyup.wkeyup.ctrl.a <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

今天掏心窝子!聊聊35岁了程序员何去何从?

今天的内容不聊技术&#xff0c;聊聊轻松的话题&#xff0c;脑子高速转了好几周&#xff0c;停下来思考一下人生…… 不对&#xff0c;关于35岁的问题好像也不轻松&#xff0c;些许有点沉重&#xff0c;反正不是技术&#xff0c;不用高速转动脑细胞了&#xff0c;哈哈。 兄弟…

策略模式【行为模式C++】

1.概述 策略模式是一种行为设计模式&#xff0c; 它能让你定义一系列算法&#xff0c; 并将每种算法分别放入独立的类中&#xff0c; 以使算法的对象能够相互替换。 策略模式通常应用于需要多种算法进行操作的场景&#xff0c;如排序、搜索、数据压缩等。在这些情况下&#x…

Pandas相比Excel的优势是哪些?

熟悉Pandas的同学会知道&#xff0c;Pandas相当于Python中的Excel&#xff0c;都是基于二维表的进行数据处理分析&#xff0c;不同的是&#xff0c;Pandas基于代码操作数据&#xff0c;Excel是图形化的分析工具。 不少人会问Excel比Pandas更简单&#xff0c;为什么还要学习Pan…

wangEditor 测试环境对,但是生产环境无法显示

package.json 文件版本 "wangeditor": "4.3.0"开发环境 new Editor(#${this.id});出来的数据 正式环境 new Editor(#${this.id});出来的数据 原因&#xff1a; vue.config 文件 打包策略的时候 const assetsCDN {css: [https://lf6-cdn-tos.bytecd…

算法1: 素数个数统计

统计n以内的素数个数 素数&#xff1a;只能被1和自身整除的自然数&#xff0c;0和1除外&#xff1b; 举例&#xff1a; 输入&#xff1a;100 输出&#xff1a;25 import java.util.*; class Test1{public static void main(String[] args){int a 100; //输入数字//…

AI来了,Spring还会远吗?(Spring AI初体验)

目录 一、创建项目二、first demo1、application.properties2、ChatController3、结果 三、个人思考 一、创建项目 官方文档的Getting Started 最低要求&#xff1a;JDK17 阿里云的Server URL&#xff08;https://start.aliyun.com/&#xff09;搜不到Spring AI&#xff0c;…

FMix: Enhancing Mixed Sample Data Augmentation 论文阅读

1 Abstract 近年来&#xff0c;混合样本数据增强&#xff08;Mixed Sample Data Augmentation&#xff0c;MSDA&#xff09;受到了越来越多的关注&#xff0c;出现了许多成功的变体&#xff0c;例如MixUp和CutMix。通过研究VAE在原始数据和增强数据上学习到的函数之间的互信息…

缓存与数据库的数据一致性解决方案分析

在现代应用中&#xff0c;缓存技术的使用广泛且至关重要&#xff0c;主要是为了提高数据访问速度和优化系统整体性能。缓存通过在内存或更快速的存储系统中存储经常访问的数据副本&#xff0c;使得数据检索变得迅速&#xff0c;从而避免了每次请求都需要从较慢的主存储&#xf…

中国移动传关停8元保号套餐?或是5G成本带来的压力所致

日前有网友发现希望使用中国移动的保号套餐&#xff0c;却发现已无法办理&#xff0c;媒体对此多有报道&#xff0c;这意味着中国移动的套餐业务发生了重大变动&#xff0c;如此做或许在于5G成本上涨带来的压力促使它不得不提高套餐的门槛。 中国移动已建成最多的5G基站&#x…

服务器主机关机重启告警

提取时间段内系统操作命名&#xff0c;出现系统重启命令&#xff0c;若要出现及时联系确认 重启命令&#xff1a; reboot / init 6 / shutdown -r now&#xff08;现在重启命令&#xff09; 关机命令&#xff1a; init 0 / shutdown -h now&#xff08;关机&#…

uniCloud联表查询方式举例

联查表&#xff1a; 1. 在shema中配置外键&#xff1a; 2.在前端使用&#xff1a; <unicloud-db v-slot:default"{data, loading, error, options}" :options"formData" collection"opendb-news-articles,uni-id-users" //这里这么写 fi…