准确!!!在 CentOS 8 上配置 PostgreSQL 14 的主从复制

在 CentOS 8 上配置 PostgreSQL 14 的主从复制,并设置 WAL 归档到特定路径 /home/postgres/archive 的步骤如下:

主服务器配置(主机)

  1. 配置 PostgreSQL:

    • 编辑 postgresql.conf 文件:
     vim /data/postgres/pgdata/postgresql.conf
    
    • 设置以下参数:
     listen_addresses = '*'          # 允许所有地址连接
     wal_level = replica             # 设置 WAL 级别为 replica
     max_wal_senders = 10            # 设置最大 WAL 发送者数量
     archive_mode = on               # 打开归档模式
     archive_command = 'cp %p /home/postgres/archive/%f'  # 设置 WAL 归档命令
    
  2. 配置客户端认证文件(pg_hba.conf):

    • 允许从服务器连接到主服务器:
     vim /data/postgres/pgdata/pg_hba.conf
    
    • 添加以下行:
     host    replication     replica_user     slave_ip/32      trust
    

    其中 replica_user 是复制用户,slave_ip 是从服务器的 IP 地址。

  3. 创建复制用户:

    psql -c "CREATE USER replica_user REPLICATION LOGIN CONNECTION LIMIT 5;"
    
  4. 创建归档目录:

    sudo mkdir -p /home/postgres/archive
    sudo chown postgres:postgres /home/postgres/archive
    sudo chmod 700 /home/postgres/archive
    
  5. 重启 PostgreSQL 服务:

    sudo systemctl restart postgresql-14
    

从服务器配置(从机)

  1. 停止 PostgreSQL 服务:

    sudo systemctl stop postgresql-14
    
  2. 清空数据目录:

    • 确保 /data/postgres/pgdata/ 目录是空的。
    sudo rm -rf /data/postgres/pgdata/*
    
  3. 使用 pg_basebackup 复制数据:

    sudo -u postgres pg_basebackup -h master_ip -D /data/postgres/pgdata/ -U replica_user -v -P -R --wal-method=stream
    

    其中 master_ip 是主服务器的 IP 地址。这里要加-R 会自动创建standby.signal文件

  4. 配置 postgresql.conf

    vim /data/postgres/pgdata/postgresql.conf
    
    • 添加或修改以下行:
     primary_conninfo = 'host=master_ip user=replica_user'
     hot_standby = on
    
  5. 启动 PostgreSQL 服务:

    sudo systemctl start postgresql-14
    

验证复制和归档状态

  1. 在主服务器上验证复制状态:

    psql -c "SELECT * FROM pg_stat_replication;"
    
  2. 在从服务器上验证是否处于恢复模式:

    psql -c "SELECT pg_is_in_recovery();"
    
  3. 检查 WAL 归档:

    • 确认 /home/postgres/archive 目录中是否有 WAL 文件被归档。

注意事项

  • 确保归档目录 /home/postgres/archive 有足够的磁盘空间。
  • 定期监控和管理归档目录,以防止其过度增长。
  • 在生产环境中,考虑实施更复杂的归档策略。

这些步骤涉及基本的主从复制和 WAL 归档配置,具体需求和环境可能需要额外的调整和优化。


hot_standby = on 这个配置在 PostgreSQL 中 postgresql.conf用于启用热备服务器(Hot Standby)的功能,这是在只读模式下运行的备份服务器。这个功能通常用于以下情况:

示例场景:故障转移和负载平衡

假设您有一个生产数据库环境,其中包含一个主服务器(Primary Server)和一个或多个备份服务器(Standby Servers)。在这个设置中,hot_standby = on 会在备份服务器上使用。

故障转移(Failover)
  • 主服务器故障:如果主服务器出现故障,您可以迅速切换到热备服务器。由于热备服务器一直在接收并应用主服务器的 WAL 记录,因此它能够快速升级为新的主服务器,几乎不中断服务。
  • 维护期间:在主服务器进行维护或升级期间,可以将流量切换到热备服务器,以保持服务的可用性。
负载平衡(Load Balancing)
  • 读取操作分流:在高负载情况下,为了减轻主服务器的压力,可以将读取请求(如报告生成、数据分析等)重定向到热备服务器,从而实现读取操作的负载平衡。

如何工作

  • hot_standby 设置为 on 时,备份服务器以只读模式运行,可以接受用户的查询请求,但不允许任何写操作。
  • 备份服务器通过流复制(Streaming Replication)或者定期应用 WAL 日志文件来保持与主服务器的数据一致。

优点

  • 高可用性:在主服务器不可用时,可以快速切换到热备服务器,保证服务的持续运行。
  • 减少主服务器负载:将读取操作重定向到备份服务器,减轻主服务器的负载。
  • 即时数据恢复:因为备份服务器持续同步主服务器的数据,所以在需要时可以快速恢复数据。

总之,hot_standby = on 是 PostgreSQL 中用于提高数据库可用性和灵活性的重要配置,特别是在需要高可用性和负载平衡的生产环境中。


报错解决:
在这里插入图片描述

要修改 PostgreSQL 中已经创建的用户的连接限制数,您可以使用 ALTER USER 命令。在您的案例中,如果您想将 replica_user 用户的连接限制从当前值更改为 5,您应该执行以下命令:

ALTER USER replica_user CONNECTION LIMIT 5;

这个命令将更新用户 replica_user 的连接限制数为 5。请确保在执行此命令时您有足够的权限来修改用户设置。
如果您需要在 psql 命令行工具中执行此命令,可以使用以下格式:

psql -c "ALTER USER replica_user CONNECTION LIMIT 5;"

请确保在适当的数据库环境中执行这个命令,或者在命令中指定需要连接的数据库。


相关结果说明:
在这里插入图片描述
这个命令 SELECT * FROM pg_stat_replication; 在 PostgreSQL 中用于显示关于当前正在进行的复制进程的信息。这是一种监控和管理数据库复制状态的方法。输出的每一行代表一个活动的复制进程。我将解释每个字段的含义:

  1. pid: 这是负责复制的进程的进程ID。

  2. usesysid: 用户的系统ID。

  3. usename: 正在进行复制的用户的名称。

  4. application_name: 连接到数据库的应用程序的名称。

  5. client_addr: 正在进行复制的客户端的IP地址。

  6. client_hostname: 客户端的主机名(如果可用)。

  7. client_port: 客户端连接到服务器的端口号。

  8. backend_start: 后台进程开始的时间。

  9. backend_xmin: 用于复制的事务ID的最小值(如果可用)。

  10. state: 复制的当前状态,例如 “streaming” 表示正在进行流式复制。

  11. sent_lsn, write_lsn, flush_lsn, replay_lsn: 这些是日志序列号(LSN),分别表示服务器发送的最后一个日志位置、写入的、刷新的和重放的。

  12. write_lag, flush_lag, replay_lag: 这些字段表示写入延迟、刷新延迟和重放延迟。

  13. sync_priority: 同步复制的优先级。

  14. sync_state: 同步状态,例如 “async” 表示异步复制。

  15. reply_time: 最后一次收到复制确认的时间。

在您提供的输出中,有两个复制进程正在进行,都是由用户 replica_user 发起的,分别连接自IP地址 192.168.197.130 和 192.168.197.128。两个进程都处于 “streaming” 状态,表明它们正在活跃地进行数据复制。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java二阶知识点总结(一)Maven

一、Maven概念 Maven是一个项目管理工具,其主要作用有2点 依赖管理:管理项目依赖的各种jar包自动构建:项目构建的过程,从编译、测试、运行、打包到安装的过程可以一键执行 二、Maven工程的目录结构 src/main/java:…

H5ke13-1浏览器处理异常

window对应的error没有event对象 window对应的error他接收三个参数,msg,url,行号 return false return true 1就不会返回错误 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Title</title>&…

使用 MITRE ATTCK® 框架缓解网络安全威胁

什么是MITRE ATT&CK框架 MITRE Adversarial Tactics&#xff0c; Techniques&#xff0c; and Common Knowledge&#xff08;ATT&CK&#xff09;是一个威胁建模框架&#xff0c;用于对攻击者用来入侵企业、云和工业控制系统&#xff08;ICS&#xff09;并发起网络攻击…

探索人工智能领域——每日20个名词详解【day10】

目录 前言 正文 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如需转载&#xff0c;请事先与我联系以…

正则表达式(5):常用符号

正则表达式&#xff08;5&#xff09;&#xff1a;常用符号 小结 本博文转载自 在本博客中&#xff0c;”正则表达式”为一系列文章&#xff0c;如果你想要从头学习怎样在Linux中使用正则&#xff0c;可以参考此系列文章&#xff0c;直达链接如下&#xff1a; 在Linux中使用正…

Leetcode刷题详解——最长湍流子数组

1. 题目链接&#xff1a;978. 最长湍流子数组 2. 题目描述&#xff1a; 给定一个整数数组 arr &#xff0c;返回 arr 的 最大湍流子数组的长度 。 如果比较符号在子数组中的每个相邻元素对之间翻转&#xff0c;则该子数组是 湍流子数组 。 更正式地来说&#xff0c;当 arr 的子…

简单易懂:Axios 如何取消请求的两种方法

在前端开发中&#xff0c;网络请求是非常常见的操作。而有时候&#xff0c;我们可能需要在发送请求后取消它&#xff0c;比如用户在请求还未完成时离开了当前页面或者执行了其他操作&#xff0c;本文将介绍如何在使用 Axios 发送请求时取消这些请求。 基本概念 在 Axios 中&am…

WindowsServer服务器系列:定时备份 MySQL

一、编写脚本 echo 取日期、时间变量值 set yy%date:~0,4% set mm%date:~5,2% set dd%date:~8,2% if /i %time:~0,2% lss 10 set hh0%time:~1,1% if /i %time:~0,2% geq 10 set hh%time:~0,2% set mn%time:~3,2% set ss%time:~6,2% set date%yy%%mm%%dd% set time%hh%%mn%%ss…

DAPP开发【10】express.js的使用

Express.js 是一种流行、轻量级的开源 Web 应用程序框架&#xff0c;用于开发基于 Node.js 的服务器端 Web 应用程序。它提供了强大的功能集&#xff0c;适用于 Web 和移动应用程序。Express.js 旨在支持单页、多页和混合式 Web 应用程序的开发。Express.js 提供了广泛的功能&a…

2022年第十一届数学建模国际赛小美赛A题翼龙如何飞行解题全过程文档及程序

2022年第十一届数学建模国际赛小美赛 A题 翼龙如何飞行 原题再现&#xff1a; 翼龙是翼龙目中一个已灭绝的飞行爬行动物分支。它们存在于中生代的大部分时期&#xff1a;从三叠纪晚期到白垩纪末期。翼龙是已知最早进化出动力飞行的脊椎动物。它们的翅膀是由皮肤、肌肉和其他组…

python学习之JSON数据处理在Python中的应用:从解析到生成

JSON文件是一种轻量级的数据交换格式&#xff0c;它采用了一种类似于JavaScript语法的结构&#xff0c;可以方便地在不同平台和编程语言之间进行数据交换。在Python中&#xff0c;我们可以使用内置的json模块来读取和写入JSON文件。 下面是一个简单的示例&#xff0c;展示了如…

【基于openGauss5.0.0简单使用DBMind】

基于openGauss5.0.0简单使用DBMind 一、环境说明二、初始化tpch测试数据三、使用DBMind索引推荐功能四、使用DBMind实现SQL优化功能 一、环境说明 虚拟机&#xff1a;virtualbox操作系统&#xff1a;openEuler 20.03 TLS数据库&#xff1a;openGauss-5.0.0DBMind&#xff1a;d…

短剧分销小程序/APP开发:开启短剧收益时代

今年&#xff0c;短剧火爆出圈&#xff0c;市场规模将达至200亿元至300亿元。国内全全平台付费短剧日充值金额为6000万元&#xff0c;短剧作为一种“快餐式”文化迅速爆火。 短剧契合了观众娱乐时间碎片化的发展趋势&#xff0c;相比于传统的电视剧&#xff0c;短剧节奏快、剧…

【链表Linked List】力扣-114 二叉树展开为链表

目录 题目描述 解题过程 官方题解 题目描述 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应…

Android View的 getHeight 和 getMeasuredHeight 的区别

前言 先简单复习一下Android View 的 绘制顺序&#xff1a; 1、onMeasure&#xff08;测量&#xff09;&#xff0c;先根据构造器传进来的LayoutParams&#xff08;布局参数&#xff09;&#xff0c;测量view宽高。 2、onLayout&#xff08;布局&#xff09;&#xff0c;再根…

Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像高速保存到电脑内存(C#)

Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像高速保存到电脑内存&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机图像保存到电脑内存的技术背景代码分析注册SDK回调函数BufferEvent声明可以存储相机图像的内存序列和名称在图像回调函数中将图像保存在内存序…

C#核心笔记——(三)在C#中创建类型

3.1 类 类是最常见的一种引用类型&#xff0c;最简单的类的声明如下&#xff1a; class MyClass{}而复杂的类可能包含如下内容&#xff1a; 1.在class关键字之前&#xff1a;类的特性&#xff08;Attribute&#xff09;和修饰符。非嵌套的类修饰符有&#xff1a; public、int…

【计算机网络笔记】物理层——基带传输基础

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

kyuubi整合flink yarn session mode

目录 概述配置flink 配置kyuubi 配置kyuubi-defaults.confkyuubi-env.shhive 验证启动kyuubibeeline 连接使用hive catlogsql测试 结束 概述 flink 版本 1.17.1、kyuubi 1.8.0、hive 3.1.3、paimon 0.5 整合过程中&#xff0c;需要注意对应的版本。 注意以上版本 配置 ky…

互联网Java工程师面试题·Spring Cloud篇

目录 1、什么是 Spring Cloud&#xff1f; 2、使用 Spring Cloud 有什么优势&#xff1f; 3、服务注册和发现是什么意思&#xff1f;Spring Cloud 如何实现&#xff1f; 4、负载平衡的意义什么&#xff1f; 5、什么是 Hystrix&#xff1f;它如何实现容错&#xff1f; 6、什么是…