PostgreSQL实战之物理复制和逻辑复制(八)

news2024/11/17 16:28:29

目录

PostgreSQL实战之物理复制和逻辑复制(八)

8 级联复制

8.1 级联复制物理架构

8.2 级联复制部署


PostgreSQL实战之物理复制和逻辑复制(八)

8 级联复制

实际上PostgreSQL支持备库既可接收主库发送的将WAL,也支持WAL发送给其他备库,这一特性称为级联复制(Cascading Replication),本章介绍级联复制的物理架构和部署。

8.1 级联复制物理架构

介绍级联复制物理架构之前,先看下一主两备流复制物理架构,如图所示。

上图中 Master为主库,两个备库分别为Save1、Slave2,Save1和 Slave2都通过流复制直连Master,三个数据库主机都位于机房A。
级联复制物理架构图如下所示。 

 第二张图的级联复制架构与第一张图中架构的主要区别在于Slave2备库不是直连Master主库,而是连接到Slave1备库,Slave1备库一方面接收来自Master发送的WAL日志,另一方面将WAL日志发送给Slave2备库,将既接收WAL同时又发送WAL的备库称为级联备库( cascading standby),这里Slave1就是级联备库,另外,将直连到主库的备库称为上游节点,连接到上游节点的其他备库称为下游节点。

级联复制主要作用在于:

  1. 小幅降低主库CPU压力。
  2. 减少主库带宽压力。
  3. 异地建立多个备库时,由于只需要一个备库进行跨机房流复制部署,其他备库可连接到这个级联备库,这种部署方案将大幅降低跨机房网络流量。

级联复制一个典型应用场景为一主两备,其中一个备库和主库同机房部署以实现本地高可用,另一备库跨机房部署以实现异地容灾,如下图所示。

 上图中 Slave1和Master为同机房,之间通过流复制实现本地高可用,Slave2为异地机房,通过级联复制实现异地容灾。

8.2 级联复制部署

这一节将演示级联复制的部署

物理部署图详见下图
 

 

 计划部署Slave1为级联复制节点,Slave2为备节点并上联到Slave1o
首先部署Slavel,使用异步流复制方式,Slave1的recovery.conf配置如下所示:

recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=192.168.28.74 port=1921 user=repuser application_name=slavel'

Slave1部署完成后,检查流复制状态,如果一切正常接着部署Slave2,重做Slave2备库,如下所示:

[postgres@pghost3 pg10]$ pg_basebackup -D /database/pg10/pg_root -Fp -Xs -v -p -h
192.168.28.74 -p 1921 -U repuser
pg_basebackup: initiating base backup,waiting for checkpoint to complete
pg_basebackup: checkpoint completed
pg_basebackup: write-ahead log start point: 4/4E000028 on timeline 7
pg_basebackup: starting background wAL receiver
9424317/9424317 kB (100%), 3/3 tablespaces
pg_basebackup: write-ahead log end point: 4/4E004AA8
pg_basebackup: waiting for background process to finish streaming ...
pg_basebackup: base backup completed

配置Slave2的recovery.conf配置文件,如下所示:

recovery_target_timeline = 'latest '
standby_mode = on
primary_conninfo = 'host=192.168.28.75 port=1921 user-repuser application_name=slave2'

之后启动Slave2,如下所示:
检查Slave2日志,如果有报错则根据错误信息排错,以上是级联复制部署的所有步骤。在Master查询pg_stat_replication视图,如下所示:

postgres=#SBLECT pid, usename, application_name,client_addr, state,sync_state,sync_priority
FROM pg_stat_replication ;
pid    |  usename  | application_name |  client_addr  |    state   | sync_ state  | 
-------------------+------------------+--—------------+-----------------------------
25041  |  repuser  |       slave1     | 192.168.28.75 |  streaming |    async     |


sync priority
-------------
     0 

(1 row)

以上显示了一条记录,为Master到 Slave1的 WAL发送进程。在Slave1查询pg_stat_replication视图,如下所示:

postgres=# SELECT pid,usename, application_name,client_addr,state,sync_state, sync priority
FROM pg_stat_replication;
pid   |  usename  | application_name | client_addr |   state  | sync_state | sync_priority
------+-----------+------------------+-------------+----------+------------+---------------
5002  |  repuser  | slave2           |192.168.28.76| streaming|   async    |      0

(1 row)

以上显示了Slave1到Slave2的WAL发送进程,可见Slave1上也有了WAL发送进程。接着做个数据测试,在 Master 上创建一张表,并插入数据,如下所示:

[postgrespghost1 ~]$ psql postgres postgres
postgres=# CREATE table t_sr6(id int4);
CREATE TABLE

postgres=# INSERT INTO t_sr6 VALUES (1);
INSERT 0 1

在Slave1上验证数据,如下所示:

[postgres@pghost2 pg_root]$ psql postgres postgres
postgres=# SELECT * FROM t_sr6;
id
----
1
(1 row)

Slave1上有了表t_sr6,在 Slave2上验证数据,如下所示:

[postgres@pghost3 pg_root]$ psql postgres postgres
postgres=# SELECT * FROM t_sr6;
id
-----
1
(1 row)

Slave2上也有了数据。

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

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

相关文章

Java泛型基本知识附面试题

一次平平无奇的面试 为什么要写这篇文档&#xff0c;主要就是在字节二面的时候&#xff0c;面试官提了这么一个问题 面试官&#xff1a;Java中的List<Integer>里有可能存String类型元素吗&#xff1f; 当时的我&#xff1a;应该…不可以吧&#xff0c;好像编译器会报错…

2023口腔护理行业分析:市场需求多元化,细分市场持续多变

随着人们生活水平的提高以及口腔护理意识的提升&#xff0c;消费者对于口腔护理的诉求愈发多样化&#xff0c;对于与此相关的产品&#xff0c;包括牙膏、牙刷、牙齿美白产品、漱口水、牙线等产品的需求也日益提高&#xff0c;在这种情况下&#xff0c;口腔护理相关细分产品的销…

软件研发管理高效的关键:11项自动化功能

1、自动锁定需求缺陷 为了提高用户需求分析质量&#xff0c;尽早发现需求缺陷&#xff0c;CoCode开发云特开发了需求分析工具&#xff0c;使用AI&#xff0c;通过需求测试和一致性检测&#xff0c;能够在几分钟内快速分析用户需求缺陷&#xff0c;如歧义、重复、遗漏、不一致和…

深度学习神经网络学习笔记-多模态方向-09-VQA: Visual Question Answering

摘要 -我们提出了自由形式和开放式视觉问答(VQA)的任务。给定一张图像和一个关于图像的自然语言问题&#xff0c;任务是提供一个准确的自然语言答案。镜像现实场景&#xff0c;比如帮助视障人士&#xff0c;问题和答案都是开放式的。视觉问题有选择地针对图像的不同区域&#…

nodejs+vue飞机机票在线预订票网站

本机票预订系统以vue作为框架&#xff0c;b/s模式以及MySql作为后台运行的数据库&#xff0c;同时使用Tomcat用为系统的服务器。本系统主要包括首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;机票类型管理&#xff0c;机票信息管理&#xff0c;订票信息管理&#x…

STM32F4_DMA直接存储器详解

目录 1. 什么是DMA 2. DMA的主要特性 3. DMA功能 3.1 DMA功能框图 3.2 DMA事务 3.3 通道选择 3.4 仲裁器 3.5 DMA数据流 3.6 源、目标和传输模式 3.6.1 外设到存储器模式 3.6.2 存储器到外设模式 3.6.3 存储器到存储器模式 3.7 指针递增 3.8 DMA内存占用 3.9 存…

<SQL>《SQL命令(含例句)精心整理版(1)》

《SQL命令精心整理》 1 SQL基础2 关键字 select & distinct3 排序检索 - order by & desc & asc4 where 语句5 操作符 -and & or & not & in6 通配符6.1 LIKE % 谓词 下划线 方括号 7 计算、拼接、别名 1 SQL基础 名词概念数据库&#xff08;database…

Mit6.006-problemSet03

3-1 哈希练习&#xff08;Hash Practice&#xff09; (a) 按顺序插入整数keys A[47, 61, 36, 52, 56, 33, 92]到尺寸为7的哈希表中&#xff0c;使用哈希函数 h ( k ) ( 10 k 4 ) m o d 7 h(k)(10k4)mod7 h(k)(10k4)mod7。哈希表的每个插槽&#xff0c;存储一个key&#xff…

【Eslint】vscode 配置 eslint 教程

文章目录 一、初始化配置二、文件配置2.1、.eslintrc.js 文件2.2、.eslintignore 文件2.3、settings.json 文件 一、初始化配置 操作步骤&#xff1a; 选择&#xff1a;上下方向键确定&#xff1a;enter 回车键退出&#xff1a;Ctrl c 安装&#xff1a;npm install -g eslint初…

Java高并发核心编程(JUC)—线程池详细笔记

线程池 基本概述 线程池&#xff1a;一个容纳多个线程的容器&#xff0c;容器中的线程可以重复使用&#xff0c;省去了频繁创建和销毁线程对象的操作 线程池作用&#xff1a; 降低资源消耗&#xff0c;减少了创建和销毁线程的次数&#xff0c;每个工作线程都可以被重复利用…

加密与解密 调试篇 动态调试技术

OllyDbg调试器的使用 CPU窗口 我们进行载入的时候 主要返回的是CPU窗口 是最主要的窗口 对应面板的C 反汇编窗口 我们先查看CPU窗口 打开后是有 5个面板 主要查看反汇编窗口 我们可以对这些列进行操作 操作都是进行双击地址&#xff1a; 显示被双击行地址的相对地址 再次双…

23种设计模式之代理模式(Proxy Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的代理模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬不…

扩展磁盘大小

此虚拟机之前硬盘大小为40G&#xff0c;需扩展为500G 1.虚拟机设置中&#xff0c;扩展硬盘大小为500G 2.启动此虚拟机&#xff0c;查看当前磁盘大小 3.查看磁盘情况 可查看到当前磁盘大小总共537G&#xff0c;实际使用37G 4.对磁盘分区 刷新分区 查看磁盘情况&#xff0c;可查…

目标检测数据预处理——根据部件类别按照特定位置拼图,缩小学习空间

首先放效果图&#xff0c;更直观看到本片是要干嘛的&#xff1a; 如图&#xff0c;就是将大图划分为44宫格的&#xff0c;4个部件类的目标框按照固定位置拼图&#xff0c;其中head、body的大图为每个宫格一张图&#xff0c;hand、foot的小图为每个宫格22张图&#xff08;因为h…

LInux相关操作命令

目录 1、Linux用户和用户组管理 用户管理命令 系统管理 top命令 ps命令 kill命令 关机命令 重启命令 为什么学习命令 Linux刚面世是并没有图形界面&#xff0c;所有操作都靠命令完成&#xff0c;如磁盘操作、文件存取、目录操作、进程管理、文件权限等工作中&#xff…

react-naive工作原理

react-naive工作原理是从react的工作原理衍生出来的 react的工作原理 在react中&#xff0c;virtual dom 就像一个中间层&#xff0c;介于开发者描述的视图与实际在页面上渲染的视图之间。为了在浏览器上渲染出可交互的用户界面&#xff0c;开发者必须操作浏览器的Dom&#x…

系统分析师经典易错题,解题思路三

UML2.0包括14种图:分别如下:类图(class diagram),类图描述了一组类、接口、协作和他们之间的关系。在OO系统的建模中,最常见的图就是类图。类图给出了系统的静态设计视图,活动图的类图给出了系统的静态进程视图。对象图(object diagram)对象图描述了一组对象及它们之间…

linux centos 安装JDK、tomcat、nginx教程记录

一、安装jdk 1、查看linux系统的jdk位数&#xff08;64/32位&#xff09; 查看本机位数命令&#xff1a; sudo uname --m 2、进入jdk下载官网 Java Downloads | Oracle 现在默认是最新的jdk20 以为我是之前的项目&#xff0c;使用的是jdk1.8_181版本&#xff0c;所以我需要…

零基础自学网络安全/web安全,看这一篇就够了

作为一个安全从业人员&#xff0c;我自知web安全的概念太过于宽泛&#xff0c;我本人了解的也并不够精深&#xff0c;还需要继续学习。 但看到这个问题之后又想说说自己的看法&#xff0c;所以今天随手写写关于web安全的内容&#xff0c;希望对初次遇到web安全问题的同学提供帮…

Cadence+SPB16.2入门教程(上)

第1章焊盘制作 1.1用Pad Designer制作焊盘 Allegro中制作焊盘的工作叫Pad Designer,所有SMD焊盘、通孔焊盘以及过孔都用该工具来制作。 打开程序->Cadence SPB 16.2->PCB Editer utilities->Pad Designer,弹出焊盘制作的界面,如图1.1所示。 在Units下拉框中选择…