搭建 PostgreSQL 流复制主从指南(适用于 CentOS 7.x)

PostgreSQL 流复制(Streaming Replication)是一个强大且高效的高可用性解决方案。它可以在主服务器和一个或多个从服务器之间实现数据的实时复制,从而提高系统的可用性和容错能力。本文将详细介绍如何在 CentOS 7.9 上搭建一个 PostgreSQL 流复制主从环境,并包含一些常见问题及其解决方案。

目录

  1. 流复制简介
  2. 环境准备
  3. 主服务器配置
  4. 备份主服务器数据并复制到从服务器
  5. 从服务器配置
  6. 启动从服务器
  7. 验证配置
  8. 常见问题及解决方案
  9. 参考文件链接
  10. 结论

1. 流复制简介

流复制是 PostgreSQL 提供的一种数据复制机制,它允许从服务器实时接收主服务器的 WAL(Write-Ahead Logging)日志,以保持数据的一致性。流复制有助于提高数据库的高可用性,并能够实现读写分离,提高系统性能。

2. 环境准备

在开始配置之前,我们需要准备以下环境:

  • 两台服务器:主服务器(master)和从服务器(slave)。
  • CentOS 7.9 安装在两台服务器上。
iprole
192.168.110.11master
192.168.110.12slave
  • PostgreSQL 已安装在两台服务器上。
  • 配置网络,使得两台服务器能够相互通信。

3. 主服务器配置

首先,我们需要在主服务器上进行一些配置。

修改 postgresql.conf 文件

打开主服务器的 postgresql.conf 文件,添加或修改以下参数:

listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
wal_keep_segments = 64
archive_mode = on
archive_command = 'cp %p /home/postgres/opt/archive/%f'

修改 pg_hba.conf 文件

打开主服务器的 pg_hba.conf 文件,添加以下行,允许从服务器连接进行复制:

host replication all 0.0.0.0/0 md5

创建复制用户

在主服务器的 PostgreSQL 控制台中,创建一个用于复制的用户:

CREATE USER replication_user REPLICATION LOGIN ENCRYPTED PASSWORD 'rep@31122';

重启主服务器

应用配置更改,需要重启 PostgreSQL 服务:

sudo systemctl restart postgresql

4. 备份主服务器数据并复制到从服务器

在从服务器上,使用 pg_basebackup 命令从主服务器备份数据:

pg_basebackup -h <主服务器IP> -U replication_user -D /home/postgres/opt/data -Fp -Xs -P

5. 从服务器配置

修改 postgresql.conf 文件

打开从服务器的 postgresql.conf 文件,添加或修改以下参数:

listen_addresses = '*'
hot_standby = on

创建 recovery.conf 文件

在从服务器的数据目录中创建 recovery.conf 文件,并添加以下内容:

standby_mode = 'on'
primary_conninfo = 'host=192.168.110.11 port=5432 user=replication_user password=rep@31122'
restore_command = 'cp /home/postgres/opt/archive/%f %p'

6. 启动从服务器

启动从服务器的 PostgreSQL 服务:

sudo systemctl start postgresql

7. 验证配置

在主服务器上检查复制状态

在主服务器上运行以下 SQL 查询,检查从服务器是否连接:

SELECT * FROM pg_stat_replication;

在从服务器上检查日志

检查从服务器的 PostgreSQL 日志,以确保没有错误并且流复制正常运行。

8. 常见问题及解决方案

问题一:从服务器无法连接到主服务器

解决方案

  • 检查 pg_hba.conf 文件是否正确配置并重载配置:
    sudo systemctl reload postgresql
    
  • 确保防火墙允许主从服务器之间的通信:
    sudo firewall-cmd --add-service=postgresql --permanent
    sudo firewall-cmd --reload
    

问题二:pg_basebackup 失败

解决方案

  • 确认复制用户具有足够权限。
  • 确保主服务器上的 WAL 日志可用且没有被删除。

问题三:从服务器启动失败

解决方案

  • 检查 postgresql.conf 文件的内容是否正确。
  • 确认从服务器的数据目录权限设置正确。

9. 参考文件链接

  • PostgreSQL 官方文档 - Streaming Replication
  • PostgreSQL 官方文档 - High Availability, Load Balancing, and Replication
  • PostgreSQL Wiki - Streaming Replication

10. 结论

通过以上步骤,您已经成功搭建了一个 PostgreSQL 流复制的主从环境。这种配置能够有效提高系统的高可用性和容错能力,并支持读写分离,从而提升整体性能。希望这篇文章对您有所帮助,如果有任何问题或需要进一步的讨论,请随时联系我。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Golang 面试基础题】每日 5 题(九)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

c/c++的内存管理(超详细)

一、c/c的内存分布 这是操作系统中对于内存的划分&#xff1a; 我们重点掌握以下几个区域即可&#xff1a; 1.栈 (调用函数会建立栈帧) 2.堆(动态开辟的空间) 3.数据段(静态区)&#xff1a;存放静态变量以及全局变量 4.代码段 (常量区) 先来看看一个题目&#xff1a; int…

蓝牙耳机百元之内怎么选?四款百元精品爆款蓝牙耳机盘点

在蓝牙耳机的海洋中&#xff0c;百元价位仿佛是一片神秘的绿洲&#xff0c;既诱人又充满未知&#xff0c;如何在众多选项中挑选出真正的精品呢&#xff1f;蓝牙耳机百元之内怎么选&#xff1f;这是许多消费者的共同疑问&#xff0c;带着这个疑问&#xff0c;作为蓝牙耳机发烧党…

为什么Spring不推荐@Autowired用于字段注入

背景 Spring是Java程序员常用的框架之一。官方从Spring 4.0开始不推荐使用Autowired进行字段注入。 Spring注入方式 基于构造器注入&#xff1a;在构造器上使用Autowired。 优点&#xff1a;可以声明字段为final&#xff0c;确保字段在构造时被初始化。 基于setter方法注入&…

【Python机器学习】朴素贝叶斯——条件概率

条件概率 假设现在有一个装了7块石头的罐子&#xff08;3块灰色&#xff0c;4块黑色&#xff09;&#xff0c;如果从中随机取出一块&#xff0c;灰色的可能性就是3/7&#xff0c;黑色的可能性是4/7。我们使用p(gray)来表示取到灰色石头的概率&#xff0c;其概率值可以通过灰色…

【SpringBoot】参数传递之RequestBody接收JSON数据

4.3.3 RequestBody接收Json数据 PostMapping(path "/save2") public String save2(RequestBody Student student){ String firstName student.getFirstName; String lastName student.getLastName; return firstName"" "lastName; }

1.3 双向链表定义及部分实现

1.定义 单链表的问题&#xff1a;找后继容易&#xff0c; 找前驱难 双向链表&#xff08; Double Linked List &#xff09; &#xff1a;指的是构成链表的每个结点中设立两个指针域&#xff1a; 一个指向其直接前趋的指针域 prior &#xff0c;一个指向其直接后继的指针域 …

Tent混沌人工蜂群与粒子群混合算法遇到问题,具体问题及解决方案如文。

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

谷歌再被OpenAI截胡?训练数学AI拿下IMO银牌,不及SearchGPT放了空响..

昨夜谷歌振臂高呼&#xff1a;我们新的数学AI&#xff0c;能在IMO数学竞赛达到银牌水平&#xff01; 但就在谷歌发文的几个小时后&#xff0c;OpenAI就偷了谷歌的家&#xff1a; 发布新的搜索方式SearchGPT &#xff0c;剑指挑战谷歌的搜索引擎。 谷歌双模型并用攻克数学难题…

2. 卷积神经网络无法绕开的神——LeNet

卷积神经网络无法绕开的大神——LeNet 1. 基本架构2. LeNet 53. LeNet 5 代码 1. 基本架构 特征抽取模块可学习的分类器模块 2. LeNet 5 LeNet 5: 5 表示的是5个核心层&#xff0c;2个卷积层&#xff0c;3个全连接层.核心权重层&#xff1a;卷积层、全连接层、循环层&#xff…

LCD 横屏切换为竖屏-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

LCD 横屏切换为竖屏 横屏显示如何切换为竖屏显示 LCD 屏默认横屏显示 开发板配套的 LCD 屏默认都是横屏显示&#xff0c;如 4.3 寸、7 寸和 10.1 寸的不同分辨率的 RGB LCD 屏 固定坐标体系 &#xff08;以 800*480 分辨率为例&#xff09;横屏模式下的固定坐标&#xff1a;…

快醒醒,别睡了!...讲《数据分析pandas库》了—/—<5>

一、 1、修改替换变量值 本质上是如何直接指定单元格的问题&#xff0c;只要能准确定位单元地址&#xff0c;就能够做到准确替换。 1.1 对应数值的替换 具体用法如下&#xff1a; replace方法&#xff1a; df.replace(to_replace None :将被替换的原数值&#xff0c;所有…

【Python机器学习】决策树的构造——信息增益

决策树是最经常使用的数据挖掘算法。它之所以如此流行&#xff0c;一个很重要的原因就是不需要了解机器学习的知识&#xff0c;就能搞明白决策树是如何工作的。 决策树的优缺点&#xff1a; 优点&#xff1a;计算复杂度不高&#xff0c;输出结果易于理解&#xff0c;对中间值的…

linux集群架构--高可用--keepalived(13985字详解)

linux架构高可用 a.概述 高可用&#xff1a;HA HighAvailablity —>Keepalived生成VIP&#xff0c;DNS解析到这个IP地址即可 b.原理 keepalived 是基于VRRP协议实现高可用VRRP虚拟路由器冗余协议&#xff0c;最开始是给网络设备实现高可用&#xff0c;目前keepalive实现v…

项目实战1(30小时精通C++和外挂实战)

项目实战1&#xff08;30小时精通C和外挂实战&#xff09; 01-MFC1-图标02-MFC2-按钮、调试、打开网页05-MFC5-checkbox及按钮绑定对象06--文件格式、OD序列号08-暴力破解09-CE10-秒杀僵尸 01-MFC1-图标 这个外挂只针对植物大战僵尸游戏 开发这个外挂&#xff0c;首先要将界面…

GUL图形化界面操作(下部)

目录 ​编辑 前言 Swing 窗口 注意点 新增的组件 进度条组件 开关按钮 多面板和分割面板 多面板 分割面板 ​编辑 选项窗口 对话框带三个选项是&#xff0c;否&#xff0c;取消。 对话框提示输入文本: 前言 修炼中&#xff0c;该篇文章为俺很久前的学习笔记 Swi…

2024钉钉杯A题思路详解

文章目录 一、问题一1.1 问题1.2 模型1.3 目标1.4 思路1.4.1 样本探究1.4.2 数据集特性探究&#xff1a;1.4.3 数据预处理1.4.4 数据趋势可视化1.4.5 ARIMA和LSTM两种预测模型1.4.6 参数调整 二、问题二2.1 问题2.2 模型2.3 目标2.4 思路2.4.1 样本探究2.4.2 数据集特性探究2.4…

C语言系统调用linux文件系统

在C语言中&#xff0c;open、write和read函数是系统调用&#xff08;system calls&#xff09;&#xff0c;它们直接由操作系统提供&#xff0c;用于底层的文件操作。这些函数是UNIX和类UNIX系统&#xff08;如Linux&#xff09;中的标准接口&#xff0c;不同于C标准库中的文件…

Radon(拉当) 变换:超详细讲解(附MATLAB,Python 代码)

Radon 变换 Radon 变换是数学上用于函数或图像的一种积分变换&#xff0c;广泛应用于图像处理领域&#xff0c;尤其是在计算机断层成像 (CT) 中。本文档将详细介绍 Radon 变换的数学含义及其在图像处理中的应用。 数学定义 Radon 变换的数学定义是将二维函数 f ( x , y ) f…

SRTOD

文章目录 AbstractMethodoverviewinnovationsolve Experiment link Abstract 本文主要探讨了在目标检测领域中&#xff0c;如何解决微小物体检测的问题。传统的通用检测器在处理微小物体时性能下降严重&#xff0c;主要是因为难以提取有效的特征。为了解决这个问题&#xff0c…