news 2026/6/11 21:56:26

Linux软件安装 —— PostgreSQL集群安装(主从复制集群)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux软件安装 —— PostgreSQL集群安装(主从复制集群)

文章目录

  • 一、节点说明
  • 二、软件下载
  • 三、安装部署
      • 1、前置准备(两台机器)
      • 2、解压并编译
      • 3、初始化与配置主库(Master)
      • 4、配置从库(Slave)
  • 四、测试
  • 五、高可用集群安装

一、节点说明

IP主机名
192.168.10.102node02
192.168.10.103node03

二、软件下载

下载地址:PostgreSQL: File Browser

本文使用:postgresql-16.10.tar.gz


三、安装部署

1、前置准备(两台机器)

# 安装基础依赖yuminstall-y gcc gcc-c++makelibicu-devel readline-devel zlib-devel openssl-devel# 关闭防火墙和SELinuxsystemctl stop firewalld systemctl disable firewalld setenforce0vim/etc/selinux/config# 修改SELINUX=disabled# 创建postgres用户useraddpostgrespasswdpostgres# 配置postgres sudo权限vim/etc/sudoers# 在%wheel ALL=(ALL) ALL下面添加一行postgresALL=(ALL)NOPASSWD:ALL# 创建安装目录和数据目录mkdir-p /opt/module/pgsql16/pgsqlmkdir-p /opt/module/pgsql16/pgdata# 修改安装包(上传的)目录权限,安装目录权限chown-R postgres:postgres /opt/software/pgsql/chown-R postgres:postgres /opt/module/pgsql16/# 切换到postgres用户su- postgres

2、解压并编译

# 此项两台虚拟机均需操作# 两台服务器上分别执行以下步骤进行编译安装。tar-zxvf postgresql-16.10.tar.gzcdpostgresql-16.10# 配置编译选项 --prefix 指定安装目录./configure --prefix=/opt/module/pgsql16/pgsql# 编译make&&makeinstallcdcontribmake&&makeinstall# 安装成功后,主要文件会出现在 /opt/module/pgsql16/pgsql 目录下# 编辑 postgres 用户环境变量vi~/.bash_profileexportPGHOME=/opt/module/pgsql16/pgsqlexportPGDATA=/opt/module/pgsql16/pgdataexportPATH=$PATH:$PGHOME/binexportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGHOME/lib# 重新加载环境变量source~/.bash_profile# 配置系统环境变量vim/etc/profile.d/my_env.shexportPGHOME=/opt/module/pgsql16/pgsqlexportPGDATA=/opt/module/pgsql16/pgdataexportPATH=$PATH:$PGHOME/binexportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGHOME/lib# 重新加载环境变量source/etc/profile.d/my_env.sh

3、初始化与配置主库(Master)

(1)初始化数据库

# 初始化主库,仅主库initdb -D$PGDATA-E UTF8 --locale=en_US.utf8

(2)conf配置

配置postgresql.conf

# 配置postgresql.confcppostgresql.conf postgresql.conf.bakvimpostgresql.conf# 修改以下内容listen_addresses='0.0.0.0'port=5432max_connections=2000shared_buffers=2048MB dynamic_shared_memory_type=posix wal_level=replica full_page_writes=on wal_log_hints=on max_wal_size=1GB min_wal_size=256MB archive_mode=on archive_command='test ! -f /opt/module/pgsql16/pgdata/pg_archive/%f && cp %p /opt/module/pgsql16/pgdata/pg_archive/%f'restore_command='cp /opt/module/pgsql16/pgdata/pg_archive/%f %p'archive_cleanup_command='pg_archive cleanup /opt/module/pgsql16/pgdata/pg_archive %r'max_wal_senders=10wal_keep_size=320hot_standby=on logging_collector=on log_directory='/opt/module/pgsql16/pgdata/logs'log_filename='postgresql-%Y-%m-%d.log'log_rotation_age=30d log_connections=on log_disconnections=on log_timezone='PRC'datestyle='iso, mdy'timezone='PRC'lc_messages='en_US.utf8'lc_monetary='en_US.utf8'lc_numeric='en_US.utf8'lc_time='en_US.utf8'default_text_search_config='pg_catalog.english'

配置从库IP段

# 配置IP段vi$PGDATA/pg_hba.conf# 添加从库IP段# 这允许 replicator 用户进行流复制连接,并采用 scram-sha-256 加密认证。hostreplication replicator192.168.10.102/32 scram-sha-256hostreplication replicator192.168.10.103/32 scram-sha-256# 用于远程连接hostall all0.0.0.0/0 scram-sha-256

(3)启动主库并创建复制用户

# 启动数据库 pg_ctl -D $PGDATA -l $PGHOME/logfile start # 登录数据库 psql # 先修改postgres用户密码 ALTER USER postgres WITH PASSWORD 'postgres'; # 创建主从复制用户 CREATE USER replicator WITH REPLICATION LOGIN PASSWORD 'replicator';

4、配置从库(Slave)

# 从库同步主库配置,在此之前从库除了编译安装,并没有其他操作,没有初始化,也没有启动pg_basebackup -h192.168.10.102 -p5432-U replicator -D$PGDATA-Fp -Xs -P -R -h:主库IP地址。 -U:复制用户 replicator,执行时会提示输入密码。 -D:目标数据目录。 -Fp:以普通文件格式备份。 -Xs:在备份开始后启动流式传输WAL日志。 -P:显示进度。 -R:关键参数,自动在从库$PGDATA目录下生成 standby.signal 文件(声明此实例为备库),并更新 postgresql.auto.conf 文件,写入连接主库的信息。# 通常 -R 参数已自动完成配置。可以检查并确认 $PGDATA/postgresql.auto.conf 文件内容类似如下(主从同步配置信息):primary_conninfo='user=replicator password=replicator channel_binding=disable host=192.168.10.102 port=5432 sslmode=disable sslcompression=0 sslcertmode=disable sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=disable krbsrvname=postgres gssdelegation=0 target_session_attrs=any load_balance_hosts=disable'# 修改从库pgdata权限chmod-R750/opt/module/pgsql16/pgdata/# 启动从库pg_ctl -D$PGDATA-l$PGHOME/logfile start

四、测试

1、在主库上查询复制状态

SELECTapplication_name,client_addr,state,sync_state,sync_priorityFROMpg_stat_replication;

2、在从库上验证数据同步

# 主库操作CREATETABLEtest_repl(idint,nametext);INSERTINTOtest_replVALUES(1,'Hello from Master');# 从库查询SELECT*FROMtest_repl;# 此外,从库是只读状态,进行增删改会报错INSERTINTOtest_replVALUES(2,'Hello from Slave');

五、高可用集群安装

有需求的小伙伴可以参考本人下篇文章:
Linux软件安装 —— PostgreSQL高可用集群安装(postgreSQL + repmgr主从复制 + keepalived故障转移)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 12:45:30

2026年实测有效!4款强力降AI工具对比,教你如何有效降低文章AI率

毕业论文降AI率这件事,真的是每年毕业季的“硬核话题”。不少同学都经历过这种情况:辛辛苦苦改了一百遍,AI检测率还是不降,眼看交稿日期越来越近,自己都快抓狂了,到底该怎么办? 不要急&#xff…

作者头像 李华
网站建设 2026/6/10 15:53:48

什么是 Spring IOC?

Spring IOC(控制反转)详解 一、什么是 IOC IOC(Inversion of Control,控制反转) 是一种设计思想,不是什么技术实现。它指的是将对象的创建、管理和依赖关系的控制权从程序代码本身转移到外部容器&#xf…

作者头像 李华
网站建设 2026/6/10 15:37:47

Java计算机毕设之基于springboot的种植基地农业信息管理系统的设计与实现基于springboot的农企信息管理平台设计与开发(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/10 13:38:22

基于51单片机的水质检测 PH 浊度 温度 蓝牙 报警

目录 基于51单片机的水质检测系统设计硬件组成模块软件设计要点系统调试注意事项扩展功能方向 源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 基于51单片机的水质检测系统设计 系统概述 该系统以51单片机为核心,集成PH值传…

作者头像 李华
网站建设 2026/6/10 12:49:39

基于SpringBoot的乡村政务办公系统毕业设计源码

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。 一、研究目的 本研究旨在设计并实现一个基于SpringBoot框架的乡村政务办公系统,以提升乡村政务工作的效率与质量。具体研究目的如下: 提高政务办公…

作者头像 李华