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

windows平台的postgresql主从数据库流备份

主:
操作系统:windows10
数据库版本:postgresql-16.2
ip:192.168.3.254
从:
操作系统:windows10
数据库版本:postgresql-16.2
ip:192.168.3.253

配置主库

配置 pg_hba.conf 文件

在 pg 的安装目录下,找到 pg_hba.conf 文件
目录示例:C:\Program Files\PostgreSQL\16\data
在文件末尾增加一行代码,目的是增加名为 replica 的用户,以进行数据库 同步的操作。填写的 ip 为从数据库的地址。

host    replication    replica    192.168.3.11/32    md5
配置 postgresql.conf 文件
listen_addresses = '*'
创建 replica 相关权限
CREATE ROLE replica login replication encrypted password 'replica111'

启动主库

配置从库

配置 data

清空data文件夹
将主数据库的 data 文件夹内容通过 pg_basebackup 备份过来
请将防火墙策略设置得当,否则将无法连接

pg_basebackup -h 192.168.3.10 -p 2903 -U replica -R -P -v -C --slot=pgstandby1 -D D:\PostgreSQL\16\data
  • -R 说明会创建standby.signal文件,以及补充postgresql.auto.conf的内容
  • -P 显示备份进度
  • -v 显示更加详细信息
  • -C 同时创建复制槽
  • -slot 指定复制槽的名字(一个备库一个名字)
  • -D 生成备库的路径
    在这里插入图片描述

复制槽的好处
主库的事务日志一直处于滚动消耗的状态,如果备库下线,随着主库频繁的数据变动,可能就会存在当备库重新上线后,已经找不到之前没有拉取的事务日志的情况(被主库回收掉了)。
但是有了复制槽,主库就会为复制槽保留它没有消费的日志,等待它上线后进行消费。当然代价是对磁盘的消耗,不过只要备库不是永久丢失,磁盘消耗对于大部分场景来说不是问题。
但是如果备库永久丢失了,要记得删除主库中对应的复制槽。删除复制槽的语句为select pg_drop_replication_slot(‘pgstandby1’);

输入密码等待备份结束
此时postgresql.auto.conf中已有主库连接配置,并且data下新建了一个standby.signal用于指示此为备份库

确认是否成功
select * from pg_replication_slots;\\查询主库中的插槽select * from pg_stat_replication;\\查询已建立连接的备份库

在这里插入图片描述
在这里插入图片描述

主从切换

从库切换成主库

使用以下语句将从库切换成主库

select pg_promote();

此时,从库data中的standby.signal文件已删除

并修改pg_hba.conf 文件,ip改为原主库ip

host    replication    replica    192.168.3.10/32    md5
删除原主库复制槽
select pg_drop_replication_slot('pgstandby1');
将原从库的data备份到原主库

这一步是全量备份,所以要注意如果库很大,会很费时间,但是官方文档说不会影响其他客户端

pg_basebackup -h 192.168.3.11 -p 2903 -U replica -R -P -v -C --slot=pgstandby1 -D D:\PostgreSQL\16\data

此时,主库就会变成从库,从库中也能查询到对应的备份连接

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • UNiapp之微信小程序导出Excel
  • PCIe学习笔记(25)
  • OpenHarmony基础组件—图片加载ImageKnife
  • 登录 k8s-Dashboard 显示 Your connection is not private
  • 多线程并行
  • 水库大坝安全预警系统的创新与应用
  • 职场那些事:应对施暴者的智慧
  • 代码随想录训练营 Day36打卡 动态规划 part04 1049. 最后一块石头的重量II 494. 目标和 474. 一和零
  • 流动会场:声音与空间完美融合,重新定义城市多功能场所—轻空间
  • 虚拟化平台kvm架构 部署kvm虚拟化平台
  • OpenCV几何图像变换(3)计算透视变换矩阵函数getPerspectiveTransform()的使用
  • Nginx源码安装与进阶负载均衡
  • SSH 隧道方式连接 MySQL 服务器
  • 元数据管理gravitino学习
  • C++笔记---类和对象(下)
  • [译]如何构建服务器端web组件,为何要构建?
  • 【面试系列】之二:关于js原型
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • es6(二):字符串的扩展
  • extract-text-webpack-plugin用法
  • HTML中设置input等文本框为不可操作
  • Java Agent 学习笔记
  • java8-模拟hadoop
  • leetcode98. Validate Binary Search Tree
  • Next.js之基础概念(二)
  • rc-form之最单纯情况
  • SpiderData 2019年2月23日 DApp数据排行榜
  • spring boot下thymeleaf全局静态变量配置
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 初识 beanstalkd
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 读懂package.json -- 依赖管理
  • 高程读书笔记 第六章 面向对象程序设计
  • 人脸识别最新开发经验demo
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 移动端解决方案学习记录
  • 用element的upload组件实现多图片上传和压缩
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​Spring Boot 分片上传文件
  • ​VRRP 虚拟路由冗余协议(华为)
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #if等命令的学习
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • (11)MATLAB PCA+SVM 人脸识别
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (编译到47%失败)to be deleted
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)C#调用WebService 基础
  • *p++,*(p++),*++p,(*p)++区别?