Postgresql 主从复制+主从切换(流复制)

news/2024/7/9 23:28:03 标签: postgresql, 数据库

pgsql有多种主从复制方式,推荐的是流复制

一、前置条件

1.至少两个pgsql数据库(可以是一台设备上的两个)

可以参考下面的教程
pgsql编译安装:pgsql 编译安装(linux)
pgsql单机多开:pgsql 单机多开

2.两个数据库已经用工具连接上

9版本后才支持流复制,完成的支持建议用10以后的版本(现在应该都用是14,15了)

3.流复制优点说明

即使副库和主库连接断开一段时间,也不会影响(时间太长了不行)

二、配置主从

演示主机如下
主库机 192.168.0.233:5432
从库机 192.168.0.165:5432

(一)主库操作

1.创建复制账号

psql
CREATE USER replica replication encrypted password 'replica';

2.修改pg_hba.conf

vi /var/pgsqldata/pg_hba.conf

添加下面内容

host   replication    replica    192.168.0.165/32     trust

如果有host all all这样的字段,记得写在这个之上

postgresqlconf_39">3.修改postgresql.conf

vi /var/pgsqldata/postgresql.conf

找到REPLICATION模块配置,默认状态是全部为注释状态,这里有几个参数可以调整,也可以默认不改动:

级别
wal_level = replica

4.重启数据库

systemctl restart pgsql

(二)从库操作

1.先关闭数据库进程

systemctl stop pgsql

2.基础备份

先将当前的已有的数据做基础备份

cd /var/pgsqldata
pg_basebackup -F p -P -R -D /var/pgsqldata -h 192.168.0.233 -p 5432 -U replica -W

密码为上面设定的replica

如果当前目录不为空,是不能操作的,可以删除当前目录的全部内容,然后在运行上面的命令

chmod -R 750 /var/pgsqldata
chown -R postgres:postgres /var/pgsqldata

postgresqlconf_83">3.修改postgresql.conf

vi /var/pgsqldata/postgresql.conf

修改下面几个部分
hot_standby = on # 说明这台机器不仅仅是用于数据归档,也用于数据查询

max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间

wal_receiver_status_interval = 10s # 多久向主报告一次从的状态

hot_standby_feedback = on # 如果有错误的数据复制,是否向主进行反馈

4.启动从服务器

systemctl restart pgsql

(三)检查连接是否同步

在主库的psql,输入下面的命令,可以查看所有的连接,有说明已经正常了

select client_addr,sync_state from pg_stat_replication;

三、其它注意事项和可能遇到问题

(一)时区/地区问题

如果主从的时区不同,会报错。
可以用下面的进行检查处理

1.主库设备

locale

找到第一个显示的地区

2.从库设备

dpkg-reconfigure locales

然后在列表中找到主库的地区,输入数字即可

(二)权限问题

1.pgsql的目录权限是750,其它无法启动

(三)插件问题

1.从库必须有主库的插件,否则会启动失败


http://www.niftyadmin.cn/n/5066600.html

相关文章

Vue3.2开发一个博客Demo项目

Vue3.2开发一个博客Demo项目 技术选型 Vue3 Vue-router Pinia ElementPlus 代码地址 https://gitee.com/galen.zhang/vue3-demo/tree/master/tech-blog Mock后台服务器代码 https://gitee.com/galen.zhang/vue3-demo/tree/master/mock-server cd mock-server npm instal…

机器学习笔记 - 深入研究spaCy库及其使用技巧

一、简述 spaCy 是一个用于 Python 中高级自然语言处理的开源库。它专为生产用途而设计,这意味着它不仅功能强大,而且快速高效。spaCy 在学术界和工业界广泛用于各种 NLP 任务,例如标记化、词性标注、命名实体识别等。 安装,这里使用阿里的源。 pip install spacy…

vue实现自动生成路由,非手动创建,含避坑点

自动生成路由js文件:autoRouter.js let routeArr []; let baseUrl /components/settingManagement/; const content require.context(../components/settingManagement/, true, /\.vue$/); content.keys().forEach(e > {const path e.substring(e.indexOf(/…

CocosCreator3.8研究笔记(二十五)CocosCreator 动画系统-2d骨骼动画spine

大家都知道,在游戏中 一般用帧动画或者骨骼动画,实现 人物的行走、奔跑、攻击等动作。 帧动画,在上一篇已经做了介绍,感兴趣的朋友可以前往阅读: CocosCreator3.8研究笔记(二十四)CocosCreator …

深信服SG上网优化管理系统存在任意文件读取漏洞 附POC

文章目录 深信服SG上网优化管理系统存在任意文件读取漏洞 附POC1. 深信服SG上网优化管理系统简介2.漏洞描述3.影响版本4.fofa查询语句5.漏洞复现6.POC&EXP7.整改意见8.往期回顾 深信服SG上网优化管理系统存在任意文件读取漏洞 附POC 免责声明:请勿利用文章内的…

Redis相关概念

1. 什么是Redis?它主要用来什么的? Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提…

逆强化学习

1.逆强化学习的理论框架 1.teacher的行为被定义成best 2.学习的网络有两个,actor和reward 3.每次迭代中通过比较actor与teacher的行为来更新reward function,基于新的reward function来更新actor使得actor获得的reward最大。 loss的设计相当于一个排序问…

44 二叉搜索树中第K个小的元素

二叉搜索树中第K个小的元素 题解1 中序遍历题解2 AVL(手撕平衡二叉树:谢谢力扣官方) 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数&#xf…