postgresql主从复制

用vmware 搭建的两台虚拟机
操作系统:Ubuntu 24.04 Server版

数据库:postgresql 16.2

主库:192.168.2.11

从库:192.168.2.12

如果遇到网络无法上网,可参考一下 Vmware 搭建的Ubuntu 24.04 网络配置-CSDN博客

1.两台服务器安装数据库

  Ubuntu 24.04默认有postgresql 16.2的数据库,

sudo apt-get install postgresql-16
2.主库 192.168.2.1
登陆到postgresql

参数说明:-u postgre 使用postgres用户 执行psql命令(不然很大可能会报无权限)

sudo -u postgres psql -U postgres 
创建用于主从复制的角色

参数说明 

login:这个选项允许登录到数据库;

replication:这个选项赋予角色复制权限

encrypted:这个选项指示数据库在存储密码时应该使用加密方式

create role replica1 login replication encrypted password 'replica1';
修改pg_hba.conf文件
 sudo vim /etc/postgresql/16/main/pg_hba.conf

在原来的基础上新增以下行:主要是为了允许备库(192.168.2.2)访问主库

host    replication     replica1         192.168.2.2/24        md5
host    all             postgres         192.168.2.2/24       trust

修改postgresql.conf文件
sudo vim /etc/postgresql/16/main/postgresql.conf

参数说明可以参考一下:

20.6. 复制 (postgres.cn)

PostgresqlCO.NF: PostgreSQL configuration for humans

listen_addresses = '*'

max_connections = 100

wal_level = replica

max_wal_senders = 10
wal_keep_size = 64  
wal_sender_timeout = 60 

 配置好之后重启服务

sudo service postgresql restart
 3.备库 192.168.2.2
 登陆到postgresql
sudo -u postgres psql -U postgres 
创建用于主从复制的角色
create role replica1 login replication encrypted password 'replica1';
修改pg_hba.conf文件
 sudo vim /etc/postgresql/16/main/pg_hba.conf

在原来的基础上新增以下行:主要是为了允许主库(192.168.2.1)访问备库(用于主库宕机后,通过连接备库同步最新数据)

host    replication     replica1         192.168.2.1/24        md5
host    all             postgres         192.168.2.1/24       trust

修改postgresql.conf文件
sudo vim /etc/postgresql/16/main/postgresql.conf

listen_addresses = '*'

max_connections = 120 #这个参数要比主库的大一点

max_wal_senders = 10
wal_keep_size = 64  
wal_sender_timeout = 60 

 配置好之后重启服务

sudo service postgresql restart

 从主库中备份数据:

pg_basebackup -h 192.168.2.1  -D /var/lib/postgresql/16/main -p 5432 -U replica1 -Fp -Xs -Pv -R --checkpoint=fast

 备份完成后修改postgresql.auto.conf文件

su postgres
vim /var/lib/postgresql/16/main/ postgresql.auto.conf

 postgresql.auto.conf

primary_conninfo = 'user=replica1 password=replica1 host=192.168.2.1 port=5432'
recovery_target_timeline = latest
hot_standby = on
max_standby_streaming_delay = 30s
wal_receiver_status_interval = 10s
hot_standby_feedback = on
max_connections = 120

4.试验

分别在主库、备库测试一下能不能相互连接:

备库执行:

sudo -u postgres psql -h 192.168.2.1 -U postgres

主库执行:

sudo -u postgres psql -h 192.168.2.2 -U postgres

如果都能相互连通,那么就可以进行下一步操作

在192.168.2.1上创建数据库 create database testdb1;看看在192.168.2.2上是否同步;

模拟192.168.2.1 宕机

192.168.2.1上执行,停止服务

sudo service postgresql stop

在 192.168.2.2执行,把192.168.2.2提升为主服务:

pg_ctl promote -D $PGDATA 

如果找不到pg_ctl和$PGDATA,则使用 

 /usr/lib/postgresql/16/bin/pg_ctl promote -D /var/lib/postgresql/16/main

在192.168.2.1执行,切换到postgres用户,删除/var/lib/postgresql/16/main下的所有文件

su postgres
cd /var/lib/postgresql/16/main
rm -rf *pg_basebackup -h 192.168.2.2  -p 5432 -U postgres -D /var/lib/postgresql/16/main -Fp -P -Xs -R -v -l postgresbak

执行完上面步骤后,可以在192.168.2.1看到数据同步了过来,但这个时候192.168.2.1是备库,数据库是处于只读状态的,而192.168.2.2属于主库。如果想把192.168.2.1又变成主库,可以在192.168.2.1上执行pg_ctl promote -D $PGDATA 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3031191.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

实时路况信息:盲人出行的守护者

在这个快速发展的数字时代,科技的力量正以前所未有的方式改变着人们的生活,尤其是对于视障群体而言,技术的每一次进步都可能意味着独立与自由的新篇章。在这样的背景下,实时路况信息对盲人的帮助成为了社会关注的热点话题&#xf…

train_gpt2_fp32.cu

源程序 llm.c/test_gpt2_fp32.cu at master karpathy/llm.c (github.com) #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #include <assert.h> #include <float.h> #include <string.h> #include…

【机器学习300问】85、Adam梯度下降优化算法的原理是什么?

Adam优化算法取了两个算法名称的首字母——Adaptive Moment Estimation的缩写&#xff0c;结合了Momentum算法和RMSprop算法的优点。在Momentum中&#xff0c;会计算前一时刻的梯度&#xff0c;并将其用于当前时刻的梯度更新&#xff1b;而RMSprop会对梯度的大小进行自适应调整…

闭散列哈希表

一、什么是 哈希 &#xff1f; 1.1 哈希概念 与 哈希冲突 在正式介绍闭散列哈希之前&#xff0c;我们需要明确 哈希 的概念。 哈希 &#xff1a;构造一种数据存储结构&#xff0c;通过函数 HashFunc() &#xff0c;使 元素的存储位置 与 其对应的键值 建立一一映射关系&…

数电——集成计数器(部分)

数电77-集成二进制同步计数器_哔哩哔哩_bilibili 74LS191 同步二进制可逆计数器 单时钟 功能&#xff1a; 要想有置零功能&#xff0c;可以将输入改为0000&#xff0c;然后运用功能里的置数功能 双时钟74LS193 四位同步二进制可逆计数器 功能&#xff1a; 74LS197 二-八-…

nestjs 全栈进阶--中间件

视频教程 22_nest中中间件_哔哩哔哩_bilibili 1. 介绍 在Nest.js框架中&#xff0c;中间件&#xff08;Middleware&#xff09;是一个非常重要的概念&#xff0c;它是HTTP请求和响应生命周期中的一个重要组成部分&#xff0c;允许开发者在请求到达最终的目的控制器方法之前或…

Java苍穹外卖05-订单状态定时处理-数据统计-导出excel

一、订单状态定时处理 1.Spring Task ①介绍 应用场景&#xff1a; ②cron表达式 https://cron.qqe2.com/ ③入门案例 2.需求分析 3.代码开发 每一分钟检查是否存在超时15分钟的订单 每天凌晨一点处理上一条处于派送中的订单 mapper&#xff1a; 二、来单提醒、客户催单 1…

前端崽的java study笔记

文章目录 basic1、sprint boot概述2、sprint boot入门3、yml 配置信息书写和获取 basic 1、sprint boot概述 sprint boot特性&#xff1a; 起步依赖&#xff08;maven坐标&#xff09;&#xff1a;解决配置繁琐的问题&#xff0c;只需要引入sprint boot起步依赖的坐标就行 自动…

IF:23.2|从实验室到田间,微生物干预提高植物抗逆

期刊&#xff1a;Nature Food 影响因子&#xff1a;23.2 发表时间&#xff1a;2023年10月 本研究介绍了一种名为SynCom的微生物组合&#xff0c;该组合Rhodococcus erythropolis和Pseudomonas aeruginosa两种微生物组成。这两种微生物能够帮助水稻抵抗铝毒害和磷缺乏&…

##13 如何在Python中优雅地使用异常处理

文章目录 引言1. 异常处理基础2. 处理多种异常3. 捕捉所有异常4. finally 语句5. 自定义异常结语参考链接 引言 在编程中&#xff0c;错误是在所难免的。Python提供了异常处理机制&#xff0c;允许程序在遇到错误时优雅地恢复。本文将介绍Python中异常处理的基本概念&#xff…

activiti 工作流基本使用

Activiti 介绍 Activiti 是一个开源架构的工作流引擎&#xff0c;基于bpmn2.0 标准进行流程定义。其前身是JBPM&#xff0c;Activiti 通过嵌入到业务系统开发中进行使用。 官方是这样介绍 activiti的&#xff1a; Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎&…

前端小技巧:如何自定义网页的右键菜单(如何禁用网页的右键菜单)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 右键菜单设置 📒📝 自定义右键菜单实现步骤📝 示例代码📝 涉及的JavaScript语法和参数📝 禁用特定区域的右键菜单⚓️ 相关链接 ⚓️📖 介绍 📖 在网页设计中,一个直观且个性化的右键菜单可以显著提升用户的交互…

【全开源】JAVA上门家政服务系统源码微信小程序+微信公众号+APP+H5

功能介绍 用户端&#xff1a;精准分类、支持家政、维修、万能服务、一口价、报价、线上、各类家政服务、优惠专区、师傅入驻、商家入驻、我的需求、补费明细、我的投诉 师傅端&#xff1a;接单池、消息通知、接单管理、今日订单、师傅入驻、我的钱包、实名认证 商家端&#…

WM Transaction Code 仓库管理模块事务代码大全

1.1 LE-WM 仓库管理 Warehouse Management 仓库管理事务码 描述 LB01 Create Transfer Requirement 创建转储需求 LB02 Change transfer requirement 修改转储需求 LB03 Display Transfer Requirement 显示转储需求 LB10 TRs for Storage Type 按仓储类型的转储请求 …

乡村振兴与农村基础设施建设:加大农村基础设施建设投入,提升农村公共服务水平,改善农民生产生活条件,构建宜居宜业的美丽乡村

一、引言 乡村振兴是我国现代化进程中的重要战略&#xff0c;而农村基础设施建设则是乡村振兴的基石。随着城市化进程的加快&#xff0c;农村基础设施建设滞后的问题日益凸显&#xff0c;成为制约乡村发展的瓶颈。因此&#xff0c;加大农村基础设施建设投入&#xff0c;提升农…

利用自适应深度学习优化OCR文字识别性能

摘要&#xff1a; 随着深度学习技术的不断发展&#xff0c;OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;系统在文档处理、图像搜索和自动化数据提取等领域扮演着重要角色。然而&#xff0c;由于不同场景下文本的多样性和复杂性&#xf…

uni-appH5Android混合开发三 || uni-app调用Android原生方法的三种方式

前言&#xff1a; 关于H5的调用Android原生方法的方式有很多&#xff0c;在该片文章中我主要简单介绍三种与Android原生方法交互的方式。 uni-app跨平台框架介绍和快速入门 uni-app跨平台框架介绍和快速入门 一、H5方法调用android原生方法 H5 Android开发规范官方文档&#…

08.1.自定义图形

自定义图形 创建图形 随便选择几个参数直接添加 选择自定义折线图形查看

大语言模型的后处理

后处理的输入 常规意义上的大模型处理流程 import torch from transformers import LlamaForCausalLM, LlamaTokenizer# 加载模型和tokenizer model LlamaForCausalLM.from_pretrained("decapoda-research/llama-7b-hf") tokenizer LlamaTokenizer.from_pretrain…

c++11 标准模板(STL)本地化库 - 平面类别(std::money_put) - 格式化货币值为字符序列以输出

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析&#xff0c;以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 平面类别 格式化货币值为字符序列以输出 std::money_put template< …