news 2026/7/2 5:17:02

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/7/1 16:15:51

基于SpringBoot的社区老人健康信息管理系统毕业设计源码

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。 一、研究目的 本研究旨在设计并实现一个基于SpringBoot框架的社区老人健康信息管理系统。该系统旨在通过整合现代信息技术与社区养老服务,提高社区老人健康管理…

作者头像 李华
网站建设 2026/7/1 16:02:12

强烈安利9个AI论文软件,专科生轻松搞定毕业论文!

强烈安利9个AI论文软件,专科生轻松搞定毕业论文! AI 工具的崛起,让论文写作不再难 对于专科生来说,撰写毕业论文往往是一道难以逾越的门槛。从选题、查找资料到撰写初稿、反复修改,每一个环节都可能让人感到力不从心。…

作者头像 李华
网站建设 2026/7/1 20:40:47

基于51单片机的智能窗帘晾衣架 WIFI传输 防盗报警

目录基于51单片机的智能窗帘晾衣架系统概述核心功能模块硬件设计要点软件逻辑流程扩展应用场景注意事项源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于51单片机的智能窗帘晾衣架系统概述 该系统结合51单片机作为主控芯片&#xff…

作者头像 李华
网站建设 2026/7/1 21:08:05

基于51单片机的智能药盒 WIFI传输 药量检测 定时吃药

目录 功能概述硬件设计软件设计应用场景扩展功能 源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 功能概述 基于51单片机的智能药盒整合了WIFI传输、药量检测和定时提醒功能,旨在帮助用户规律服药。系统通过传感器监测药量…

作者头像 李华