PostgreSQL16.4搭建一主一从集群

农民  论坛元老 | 2024-11-18 19:42:58 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1022|帖子 1022|积分 3066

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
PostgreSQL搭建一主一从集群的过程主要涉及到基础环境准备、PostgreSQL安装、主从节点设置以及同步验证等步骤。以下是一个具体的搭建过程:
一、基础环境准备


  • 创建虚拟机

    • 准备两台虚拟机,分别作为主节点和从节点。
    • 为每台虚拟机分配独立的IP地址和主机名。

  • 操作体系与依赖安装

    • 确保两台虚拟机上都安装了相同版本的操作体系(如openEuler22.03/Centos7.9)。
    • 安装PostgreSQL运行所需的依赖包,如gcc、gcc-c++、readline-devel等。

  • SSH免密登录

    • 在主节点和从节点上设置SSH免密登录,方便后续的管理操作。

二、PostgreSQL安装


  • 下载与安装

    • 可以选择从PostgreSQL官网下载对应版本的源码包进行编译安装,或者利用包管理器(如yum)进行安装。
    • 以yum安装为例,命令如下:
      1. yum install -y postgresql postgresql-server
      复制代码

  • 初始化与启动

    • 初始化数据库:service postgresql initdb
    • 启动PostgreSQL服务:systemctl start postgresql
    • 设置为开机自启:systemctl enable postgresql.service

  • 开放端口

    • 如果防火墙已开启,须要开放PostgreSQL的默认端口(5432)。

  • 验证安装

    • 切换到pgsql用户,尝试登录psql命令行工具进行验证。

三、主节点设置


  • 创建复制用户

    • 在主节点上创建一个专门用于复制的用户,并赋予其复制权限。
    1. su - pgsql
    2. psql
    3. postgres=# create role repl login replication encrypted password 'repuser@2024';
    复制代码

  • 修改设置文件

    • 修改postgresql.conf文件,设置listen_addresses为'*',答应所有IP毗连。
    • 设置wal_level为hot_standby,启用流复制。
    • 设置其他相关参数,如max_wal_senders、wal_keep_segments等。
    • archive_command=‘test ! -f /postgresql/archive/%f && cp %p /postgresql/archive/%f’
    • wal_keep_size=64MB # pg13之后版本 如果设置时不带单元,则默认为 MB(0 到 2147483647) 0,0 表示 PostgreSQL 不会为流复制环境保留额外的 wal segments
    • 注意:wal_keep_segments=256 是postgresql 12及之前的版本,postgresql 13.0中,将wal_keep_segments重定名为wal_keep_size,让用户指定WAL大小,而不是WAL文件个数。在PG内核不绝演进的过程中,PostgreSQL开辟者在渐渐弱化wal段数量(wal文件个数)的概念,并夸大wal的size,之前就有checkpoint_segments改变为max_wal_size的先例
    • 修改pg_hba.conf文件,添加对复制用户的访问权限设置。
      1. vi /postgresql/pgdata/pg_hba.conf
      2. host    all      all     0.0.0.0/0      md5
      3. host replication repl    0.0.0.0/0      md5
      复制代码

  • 重启PostgreSQL服务

    • 修改设置后,须要重启PostgreSQL服务使设置见效。
      1. pg_ctl stop
      2. pg_ctl start
      复制代码

四、从节点设置


  • 安装PostgreSQL

    • 从节点上也须要安装PostgreSQL,过程与主节点相同。

  • 数据同步

    • 利用pg_basebackup命令从主节点同步基础数据到从节点。
    1. pg_basebackup -h 主节点IP -U repl -D /var/lib/pgsql/data -P -Xs -v
    2. -- 示例
    3. pg_basebackup -D /postgresql/pgdata16.4 -F p -P -R -h 192.168.80.239 -p 5432 -U repl -l /postgresql/backup/backup20240902
    复制代码

  • 修改设置文件

    • 修改从节点的postgresql.conf文件,设置hot_standby为on,开启热备模式。
    • 修改recovery.conf文件(在PostgreSQL 12及以后版本,部门参数可以直接在postgresql.conf中设置),设置恢复模式、主节点信息等。
    • primary_conninfo = ‘host=192.168.80.239 port=5432 user=repl passowrd=repuser@2024’

  • 启动从节点服务

    • 启动从节点的PostgreSQL服务,它将自动进入恢复模式,并从主节点同步数据。
    • [pgsql@pgstandby:/postgresql/pgdata]$ps -ef | grep postgres # 重点关注 startup recovering

五、同步验证


  • 在主节点上创建数据

    • 在主节点上创建一些数据库或表,并插入数据。
      1. [pgsql@pgstandby:/postgresql/pgdata16.4]$pg_controldata
      2. -- OR
      3. [pgsql@pgstandby:/home/pgsql]$pg_controldata /postgresql/pgdata/
      4. --
      5. postgres=# select * from pg_stat_replication;
      复制代码
      1. create table t_replication(id int primary key);
      2. insert into t_replication
      3. select generate_series(1,10);
      复制代码

  • 在从节点上验证数据

    • 登录从节点的psql命令行工具,查询刚才在主节点上创建的数据,确认数据已同步。
      1. [pgsql@pgstandby:/postgresql/pgdata16.4]$pg_controldata
      2. -- OR
      3. [pgsql@pgstandby:/home/pgsql]$pg_controldata /postgresql/pgdata/
      4. -- 检查表数据是否同步
      5. postgres=#  select * from t_replication
      复制代码

通过以上步骤,你可以成功搭建一个PostgreSQL的一主一从集群。在实际摆设时,还须要根据具体环境和需求进行相应的调解和优化。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农民

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表