PostgreSQL16.4搭建一主一从集群

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

一、基础环境准备

  1. 创建虚拟机

    • 准备两台虚拟机,分别作为主节点和从节点。
    • 为每台虚拟机分配独立的IP地址和主机名。
  2. 操作系统与依赖安装

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

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

二、PostgreSQL安装

  1. 下载与安装

    • 可以选择从PostgreSQL官网下载对应版本的源码包进行编译安装,或者使用包管理器(如yum)进行安装。
    • 以yum安装为例,命令如下:
      yum install -y postgresql postgresql-server
      
  2. 初始化与启动

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

    • 如果防火墙已开启,需要开放PostgreSQL的默认端口(5432)。
  4. 验证安装

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

三、主节点配置

  1. 创建复制用户

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

    • 修改postgresql.conf文件,设置listen_addresses'*',允许所有IP连接。

    • 设置wal_levelhot_standby,启用流复制。

    • 配置其他相关参数,如max_wal_senderswal_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文件,添加对复制用户的访问权限配置。

      vi /postgresql/pgdata/pg_hba.conf
      host    all      all     0.0.0.0/0      md5
      host replication repl    0.0.0.0/0      md5
      
  3. 重启PostgreSQL服务

    • 修改配置后,需要重启PostgreSQL服务使配置生效。

      pg_ctl stop
      pg_ctl start
      

四、从节点配置

  1. 安装PostgreSQL

    • 从节点上也需要安装PostgreSQL,过程与主节点相同。
  2. 数据同步

    • 使用pg_basebackup命令从主节点同步基础数据到从节点。
    pg_basebackup -h 主节点IP -U repl -D /var/lib/pgsql/data -P -Xs -v
    -- 示例
    pg_basebackup -D /postgresql/pgdata16.4 -F p -P -R -h 192.168.80.239 -p 5432 -U repl -l /postgresql/backup/backup20240902
    
  3. 修改配置文件

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

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

五、同步验证

  1. 在主节点上创建数据

    • 在主节点上创建一些数据库或表,并插入数据。

      [pgsql@pgstandby:/postgresql/pgdata16.4]$pg_controldata
      -- OR 
      [pgsql@pgstandby:/home/pgsql]$pg_controldata /postgresql/pgdata/
      -- 
      postgres=# select * from pg_stat_replication;
      
      
      create table t_replication(id int primary key);
      insert into t_replication
      select generate_series(1,10);
      
  2. 在从节点上验证数据

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

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

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建PostgreSQL集群,你可以按照以下步骤进行操作: 1. 首先,你需要在每个节点上安装PostgreSQL数据库软件。你可以从官方网站下载并安装适合你操作系统的版本。\[3\] 2. 在主节点上,你需要修改数据库密码。你可以使用以下命令来修改密码:su - postgres psql -U postgres ALTER USER postgres WITH ENCRYPTED PASSWORD '新密码'; \du \q \[1\] 3. 在从节点上,你需要使用pg_rewind命令将从节点的数据目录回滚到与主节点一致的状态。你可以使用以下命令来执行回滚操作:pg_rewind --target-pgdata=/opt/pgsql11/data --source-server='host=主节点IP地址 port=5432 user=postgres dbname=postgres password=主节点密码' \[2\] 4. 在每个节点上,你需要配置数据库集群的参数。你可以编辑每个节点上的postgresql.conf文件来进行配置。 5. 最后,你需要启动每个节点上的PostgreSQL服务,并确保它们能够相互通信。 通过以上步骤,你就可以成功搭建一个PostgreSQL集群。请注意,这只是一个简单的概述,具体的操作步骤可能会因为你的环境和需求而有所不同。建议你参考官方文档或者其他可靠的资源来获取更详细的指导。 #### 引用[.reference_title] - *1* *3* [搭建PostgreSQL高可用集群(基于Pacemaker+Corosync)](https://blog.csdn.net/mengshicheng1992/article/details/123612431)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [postgressql数据库集群搭建](https://blog.csdn.net/dragonsmile/article/details/100041279)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值