首页 > 其他分享 >PG12高可用之1主2从流复制环境搭建及切换测试

PG12高可用之1主2从流复制环境搭建及切换测试

时间:2023-01-09 21:58:37浏览次数:53  
标签:00 postgres 从流 PG12 checkpoint pg Latest data 搭建

PG12高可用之1主2从流复制环境搭建及切换测试

 小麦苗DB宝 发表于 2022/04/06 18:00:49    825  0  0   【摘要】 一、架构介绍 1.1、流复制简介 1.2、本文目标 二、环境准备 三、主库操作 3.1、主库放开防火墙 3.2、主库配置归档 3.3、主库创建复制用户 四、从库操作 4.1、在从库对主库进行备份 4.2、还原从库 4.3、修改从库primary_conninfo参数 4.4、启动从库 4.5、查询复制状态 五、测试主从复制 一、架构介绍 1.1、流复制简介PostgreSQL在9.x之后引...
  1. 一、架构介绍
    1. 1.1、流复制简介
    2. 1.2、本文目标
  2. 二、环境准备
  3. 三、主库操作
    1. 3.1、主库放开防火墙
    2. 3.2、主库配置归档
    3. 3.3、主库创建复制用户
  4. 四、从库操作
    1. 4.1、在从库对主库进行备份
    2. 4.2、还原从库
    3. 4.3、修改从库primary_conninfo参数
    4. 4.4、启动从库
    5. 4.5、查询复制状态
  5. 五、测试主从复制

一、架构介绍

1.1、流复制简介

PostgreSQL在9.x之后引入了主从的流复制机制,所谓流复制,就是备服务器通过tcp流从主服务器中同步相应的数据,主服务器在WAL记录产生时即将它们以流式传送给备服务器,而不必等到WAL文件被填充。

流复制属于物理层面的复制,可以从实例级复制出一个与主库一模一样的实例级的从库,流复制同步方式有同步、异步两种。

  • 异步流复制模式中,主库提交的事务不会等待备库接收WAL日志流并返回确认信息,因此异步流复制模式下主库与备库的数据版本上会存在一定的处理延迟(毫秒级),当主库宕机,这个延迟就主要受到故障发现与切换时间的影响而拉长。该模式为默认模式。

  • 同步流复制模式中,要求主库把WAL日志写入磁盘,同时等待WAL日志记录复制到备库、并且WAL日志记录在任意一个备库写入磁盘后,才能向应用返回Commit结果。一旦所有备库故障,在主库的应用操作则会被挂起,所以此方式建议起码是1主2备。

物理复制优点∶
√物理层面完全一致,是主要的复制方式,其类似于Oracle的DG。
√延迟低,事务执行过程中产生REDO record,实时的在备库apply,事务结束时,备库立马能见到数据。
√物理复制的一致性、可靠性高,不必担心数据逻辑层面不一致。

物理复制缺点︰
√无法满足不同的版本之间、不同库名之间的表同步。
√无法满足指定库或部分表的复制需求
√无法满足将多个数据库实例同步到一个库,将一个库的数据分发到多个不同的库。

物理复制场景:
√适合于单向同步。
√适合于任意事务,任意密度写(重度写)的同步。√适合于HA、容灾、读写分离。
√适合于备库没有写,只有读的场景。

物理复制原理︰
√PG主备流复制的核心部分由walsender , walreceiver和startup三个进程组成。
√ walsender进程是用来发送WAL日志记录的,用于主库发送WAL日志记录至从库
√ walreceiver进程是用来接收WAL日志记录的,用于从库接收主库的WAL日志记录
√ startup进程用于从库apply日志

物理流复制的过程如下所示:

1.2、本文目标

1、先搭建1主1从异步模式,测试主从同步,再进行主从切换

2、再添加一个从库,变为1主2从

3、同步模式和异步模式相互切换

1主1从环境架构如下:

二、环境准备

-- 拉取镜像
docker pull postgres:12

-- 创建PG高可用环境专用网络
docker network create --subnet=172.72.6.0/24 pg-network

-- 创建宿主机相关映射路径
mkdir -p /docker_data/pg/lhrpg64302/data
mkdir -p /docker_data/pg/lhrpg64303/data

-- 主库
docker rm -f lhrpg64302
rm -rf /docker_data/pg/lhrpg64302/data
docker run -d --name lhrpg64302 -h lhrpg64302 \
   -p 64302:5432 --net=pg-network --ip 172.72.6.2 \
   -v /docker_data/pg/lhrpg64302/data:/var/lib/postgresql/data \
   -v /docker_data/pg/lhrpg64302/bk:/bk \
   -e POSTGRES_PASSWORD=lhr \
   -e TZ=Asia/Shanghai \
   postgres:12
-- 从库
docker rm -f lhrpg64303
rm -rf /docker_data/pg/lhrpg64303/data
rm -rf /docker_data/pg/lhrpg64303/bk
docker run -d --name lhrpg64303 -h lhrpg64303 \
   -p 64303:5432 --net=pg-network --ip 172.72.6.3 \
   -v /docker_data/pg/lhrpg64303/data:/var/lib/postgresql/data \
   -v /docker_data/pg/lhrpg64303/bk:/bk \
   -e POSTGRES_PASSWORD=lhr \
   -e TZ=Asia/Shanghai \
   postgres:12
-- 远程登录
psql -U postgres -h 192.168.66.35 -p 64302
psql -U postgres -h 192.168.66.35 -p 64303

三、主库操作

3.1、主库放开防火墙

cat  << EOF > /docker_data/pg/lhrpg64302/data/pg_hba.conf
# TYPE  DATABASE    USER    ADDRESS       METHOD
local     all       all                    trust
host      all       all   127.0.0.1/32     trust
host      all       all    0.0.0.0/0        md5
host   replication  all    0.0.0.0/0        md5
EOF

标签:00,postgres,从流,PG12,checkpoint,pg,Latest,data,搭建
From: https://www.cnblogs.com/yaoyangding/p/17038613.html

相关文章

  • 使用windows虚拟机搭建ftp服务,并能够使用ftp进行传输文件的操作
    连接ftp的前提是要关闭虚拟机的防火墙不然进不去,然后再执行以下操作通过ftp连接虚拟机有三种方式:一种方式是通过浏览器打开,输入[ftp://+ip第一次进入会让输入......
  • windows10如何搭建FTP服务及使用
    搭建FTP服务,首先我们要确保,windows开启了FTP服务。1、首先我们开启FTP服务在控制面板-->程序-->WINDOWS功能,在Internetinformationservices下选中FTP服务和IIS相关服......
  • VisualStudio 使用 FastTunnel 辅助搭建远程调试环境
    有时候需要远程调试一些用户问题,期望能使用本机的VisualStudio开发环境,调试远程的用户的设备上的应用。这时会遇到的一个问题是如何让本机的VisualStudio可以连接上......
  • win10配置搭建ftp
    控制面板->程序>启用或关闭Windows功能>勾选FTP服务器和IIS管理控制台   2.以管理员身份启用cmd>netuser创建一个新用户    3.搜索启用IIS  ......
  • MAVEN环境搭建
    MAVEN是一个工具用来方便的导入jar包Maven的核心思想;约定大于配置有约束不要去违反官网地址:https://maven.apache.org/ 下载完成后解压即可。 建议,电脑上所......
  • nodejs 搭建静态服务器
    这两天又捡了捡vue,忽然觉得build一下是有必要的,那想检验build是否成功,就需要个服务端来验证一下,apachetomcat、ngnix就不说了,直接整一个更简单的。首先还是百度了......
  • ElasticSearch集群搭建
    一、调整内核参数vim/etc/sysctl.confvm.max_map_count=262144vim/etc/security/limits.confsoftnofile65536hardnofile65536sysctl-p二、解压文件tar-z......
  • 学习笔记——在IDEA中创建Maven版的web工程;框架;Mybatis简介;搭建Mybatis框架步骤
    2023-01-09 一、在IDEA中创建Maven版的web工程(1)步骤:①创建一个maven模块,命名为“maven_web_end”,之后需要创建web工程的目录。在“maven_web_end.src.main”下创建“we......
  • minio kubernetes快速搭建
    pod.yamlapiVersion:v1kind:Podmetadata:labels:app:minioname:minionamespace:minio-dev#Changethisvaluetomatchthenamespacemetadata......
  • Docker搭建LNMP+wordpress
    一、项目模拟1.项目环境公司在实际的生产环境中,需要使用Docker技术在一台主机上创建LNMP服务并运行Wordpress网站平台。然后对此服务进行相关的性能调优和管理工......