当前位置: 首页 > news >正文

PostgreSQL主从同步

目录

一、主从复制原理

二、配置主数据库

2.1 创建同步账号

2.2 配置同步账号访问控制

2.3 设置同步参数

3.4 重启主数据库

三、配置从数据库

3.1 停止从库

3.2 清空从库数据文件

3.3 拉取主库数据文件

3.4 配置从库同步参数

3.5 启动从库

四、测试主从

4.1在主库查看从库连接状态

4.2 新增数据测试同步


一、主从复制原理

        PostgreSQL的主从同步主要基于其预写日志(Write-Ahead Log, WAL)机制和流复制(Streaming Replication)功能来实现数据的高可用性和一致性。

        WAL是PostgreSQL确保数据持久性和一致性的一个核心组件。它的工作原理是,任何对数据库的修改操作,在实际修改数据文件之前,都会先记录到WAL中。这意味着,事务的提交不仅仅依赖于数据页的更新,还依赖于相关日志记录到WAL并被确认。这个过程确保了即使在系统崩溃的情况下,也能通过重放WAL日志恢复到一致的状态。

        流复制是PostgreSQL实现主从同步的主要方式,它建立在WAL机制之上,它允许将主服务器(Primary)上的事务日志(WAL, Write-Ahead Logging)实时发送到从服务器(Secondary)。从服务器接收到这些事务日志后,将其应用到自己的数据库中,从而保持与主服务器数据的一致性。

二、配置主数据库

2.1 创建同步账号

CREATE ROLE replica login replication encrypted password 'wsx-123';

2.2 配置同步账号访问控制

# vi /data/db/postgresql/pg_hba.conf

host    replication     replica         192.168.179.135/32      md5

2.3 设置同步参数

# vi /data/db/postgresql/postgresql.conf

wal_level = replica
max_wal_senders = 2

3.4 重启主数据库

pg_ctl -D /data/db/postgresql -l logfile restart

三、配置从数据库

3.1 停止从库

pg_ctl -D /data/db/postgresql -l logfile stop

3.2 清空从库数据文件

rm -rf /data/db/postgresql/*

3.3 拉取主库数据文件

pg_basebackup -h 192.168.179.134 -D /data/db/postgresql -p 5432 -U replica -Fp -Xs -Pv -R --checkpoint=fast

3.4 配置从库同步参数

        由于从库数据文件是从主库拉取过来,需要先删除主库同步相关的参数,然后新增从库同步参数:

vi /data/db/postgresql/postgresql.conf

primary_conninfo = 'host=192.168.179.134 port=5432 user=replica password=wsx-123'
recovery_target_timeline = latest 
hot_standby = on

3.5 启动从库

pg_ctl -D /data/db/postgresql -l logfile start

四、测试主从

4.1在主库查看从库连接状态

select client_addr,usename,backend_start,application_name,sync_state,sync_priority FROM pg_stat_replication;

4.2 新增数据测试同步

主库插入数据:

从库数据对比:

相关文章:

  • 安装node软件 文件夹里没有node_modules 包 是怎么回事
  • 突破SaaS产品运营困境:多渠道运营如何集中管理?
  • MasterLogic-200 PLC可以与Honeywell 的 DCS系统 Experion PKS、SCADA系统Experion HS 系统
  • 在不修改.gitignore的情况下,忽略个人文件的提交
  • 超简洁Django个人博客系统(适合初学者)
  • 单片机中有FLASH为啥还需要EEROM?
  • 2024年地球生态学与绿色发展国际会议 (EEGD 2024)
  • 一棵B+树可以存放多少行数据
  • 激光粒度分析仪校准过程中的注意事项与问题解决
  • Unity海面效果——4、法线贴图和高光
  • Ubuntu Server 和 Ubuntu Desktop 组合使用
  • OpenHarmony 5.0 纯血鸿蒙系统
  • 改进的蜣螂优化算法仿真程序-高分资源-下载可用
  • 百度AI使用-图像文字识别
  • 低成本 高性价比 12V电压 YB5011 非隔离AC-DC 助力智能家电
  • @angular/forms 源码解析之双向绑定
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • C# 免费离线人脸识别 2.0 Demo
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • React中的“虫洞”——Context
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • SpriteKit 技巧之添加背景图片
  • swift基础之_对象 实例方法 对象方法。
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • Vue ES6 Jade Scss Webpack Gulp
  • 阿里云前端周刊 - 第 26 期
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 从0到1:PostCSS 插件开发最佳实践
  • 浮动相关
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 力扣(LeetCode)22
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 与 ConTeXt MkIV 官方文档的接驳
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • zabbix3.2监控linux磁盘IO
  • ​​​​​​​​​​​​​​Γ函数
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (solr系列:一)使用tomcat部署solr服务
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (规划)24届春招和25届暑假实习路线准备规划
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (译)2019年前端性能优化清单 — 下篇
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .cn根服务器被攻击之后
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端