news 2026/5/11 7:01:43

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/5/4 13:55:50

LLM 裁判(LLM-as-a-judge)

LLM 裁判(LLM-as-a-judge) 是指利用强大的大语言模型(如 GPT-4, Claude 3.5, Gemini 1.5 Pro 等)作为“考官”,去评估其他模型生成的回复质量。 所谓的 “五维评分量规” 并没有一个绝对统一的国际标准,但在…

作者头像 李华
网站建设 2026/5/11 3:53:30

关于火的古典诗歌:扑火非是愚昧行,追求光明是本心

卷四 火部(二十首) 1. 燧人氏 钻木取星火,光明出燧巢。 焚荒开沃野,煮海化佳肴。 夜破妖魔遁,文明由此交。 至今炊烟起,犹念圣功昭。 2. 观焊工 电弧光裂夜幕开,铁水金花溅玉台。…

作者头像 李华
网站建设 2026/5/3 9:43:54

【课程设计/毕业设计】基于SpringBoot+Vue农企信息管理平台设计与开发基于springboot的农企信息管理平台设计与开发【附源码、数据库、万字文档】

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

作者头像 李华
网站建设 2026/5/9 14:22:24

计算机Java毕设实战-基于springboot的农企商品产品信息管理平台设计与开发【完整源码+LW+部署说明+演示视频,全bao一条龙等】

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

作者头像 李华