当前位置: 首页 > 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.253/32    md5
创建 replica 相关权限
CREATE ROLE replica login replication encrypted password 'replica111'
配置 postgresql.conf 文件

在 pg 的安装目录下,找到 postgresql.conf 文件,查找并修改如下配置(如 果前面有#,需要删除#字符):

listen_addresses = '*'	//设置监听所有地址
wal_level = replica //设置流复制模式至少设置为replica
max_wal_senders = 32 //这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个 
wal_keep_size = 500 //pg_wal 目录下保留 WAL 日志的个数,每个 WAL 文件默认 16M,为保 障从库能在应用归档落后时依旧能追上主库,此值建议设置较大一点。 
wal_sender_timeout = 60s//设置流复制主机发送数据的超时时间

然后重新启动主库

配置从库

配置 data

首先将主数据库的 data 文件夹内容通过 pg_basebackup 备份过来

pg_basebackup -F p --progress -D "C:\Program Files\PostgreSQL\16\data_back" -h 192.168.3.254 -p 2903 -U replica --password

输入密码 replica 等待备份结束
然后关闭从库 pg 服务,打开主库PostgreSQL\16\的目录可以看到多出了 data_back出来, 此时备份并删除从库data 文件夹,将data_back复制并粘贴到从库修改data_back文件夹名为data。

配置 postgresql.conf 文件
listen_addresses = '*'	//设置监听所有地址
primary_conninfo = 'host=192.168.3.254 port=2903 user=replica password=replica111'
recovery_target_timeline = 'latest'
hot_standby = on //此参数控制在恢复归档期间是否支持只读操作,设置为 ON 后从库为只读模式。 
max_standby_streaming_delay = 30s //数据流备份的最大延迟时间 
wal_receiver_status_interval = 10s //多久向主报告一次从的状态,当然从每次数据复制都会向主 报告状态,这里只是设置最长的间隔时间。 
hot_standby_feedback = on//如果有错误的数据复制,是否向主进行反馈

然后在data目录自建一个standby.signal文件,用于指示standby模式
启动从库

确认是否成功
select client_addr,sync_state from pg_stat_replication;

出现如下的查询结果,便说明已经开始同步了
在这里插入图片描述

主从切换

如果主库挂了,需要紧急使用从库来作为主库,以便服务能尽快恢复,操作方法如下:
(1)改一下从库的standby.signal文件名为standby.signal_1。
(2)主库上新增standby.signal文件,按照上文的从库配置方式配置一遍主库,将从库的配置注释即可。

修改软件程序链接的数据库地址即可

http://www.lryc.cn/news/426763.html

相关文章:

  • Spring 常见设计模式
  • 优化大量数据导出到Excel的内存消耗(二):如果数据超出Excel单表上限,则进行分表
  • rustrover打开会报Error: Invalid toolchain
  • docker-compose 安装canal
  • Unity动画模块 之 3D Rig页签
  • 【蓝桥杯冲刺省一,省一看这些就够了-Java版本】蓝桥杯日期问题相关模板以及练习题
  • 【经典算法】BFS_FloodFill算法
  • RocketMQ之Topic主题详解
  • 实战OpenCV之图像显示
  • I2C的10-bit地址空间
  • TinyWebserver的复现与改进(6):定时器处理非活动连接
  • ThinkPHP5 5.0.23 远程代码执行漏洞
  • C++鼠标键盘操作自动化
  • 多个主流Python GUI库全面解析,助你用Python轻松构建精美界面
  • Kotlin学习-01创建kotlin学习
  • Java、python、php版的企业单位考勤打卡管理系统的设计与实现(源码、调试、LW、开题、PPT)
  • 在IntelliJ IDEA中使用Git推送项目
  • CNN代码实战
  • 迁移学习代码复现
  • Elasticsearch(ES)常用命令
  • C/C++ 不定参函数
  • C语言——函数专题
  • springboot打可执行jar包
  • 【SQL】科目种类
  • 【深度学习】【语音】TTS,最新TTS模型概览,扩散模型TTS,MeloTTS、StyleTTS2、Matcha-TTS
  • 【论文笔记】LION: Linear Group RNN for 3D Object Detection in Point Clouds
  • 打造高可用集群的基石:深度解析Keepalived实践与优化
  • Web大学生网页作业成品——环保主题介绍网页网站设计与实现(HTML+CSS)(5个页面)
  • Qt登录窗口设计
  • 探索数据矿藏:我的AI大模型与数据挖掘实战经验分享