postgresql主从模式安装部署

本文详细描述了如何在Linux系统中安装PostgreSQL,包括下载、解压、创建目录、生成makefile、编译安装、设置环境变量、初始化数据库、配置pg_hba.conf和postgresql.conf,以及主库与备库的切换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备工作

首先安装依赖包

yum   -y  install   readline-devel zlib-devel

1.安装postgresql

将postgresql的包上传到(/tmp)文件夹中进行解压

 postgresql的离线包到官方网站下载:https://www.postgresql.org/

命令:tar -xzvf postgresql-13.3.tar.gz

2.创建postgresql的安装目录

PS:请注意你的创建路径,可以是不同的路径后面会用到

PS:请注意你的创建路径,可以是不同的路径后面会用到

PS:请注意你的创建路径,可以是不同的路径后面会用到

命令:mkdir /data01/postgresql   //data01目录下创建postgresql

3.生成makefile

PS:需要到解压的目录下操作

命令:./configure --prefix=/data01/postgresql   //需要到解压的目录下操作

4.编译安装

PS:在解压的目录下执行

命令:make && make install     //在解压的目录下执行

5.安装工具集

PS:进入到解压后的目录下的contrib文件夹

    命令:cd /data01/postgresql-11.7/contrib  //进入到解压后的目录下的contrib文件夹

    命令:make && make install

6.创建postgresql用户

    命令:groupadd postgres

    命令:useradd -g postgres postgres

    为了安全考虑,postgresql不允许使用root用户操作数据库,我们在系统中为了使用postgresql添加一个用户postgres:

    也可以是其他用户名,但是习惯上大家都是创建postgres用户作为数据库的超级用户。

    初始化数据库时,就以这个用户作为数据库的超级用户

7.修改data目录的用户为postgres

    命令:cd /data01/postgresql      //进入到安装的postgresql目录

    命令:mkdir data     //在postgresql目录下创建data文件夹

    命令:chown -R postgres:postgres /data01/postgresql/data

8.修改环境变量

    命令:su - postgres

命令:vim /home/postgres/.bash_profile

添加环境变量:

export PGHOME=/data01/postgresql

export PGDATA=/data01/postgresql/data

export PATH=$PGHOME/bin:$PATH

export MANPATH=$PGHOME/share/man:$MANPATH

export LANG=en_US.utf8

export DATE=`date +"%Y-%m-%d %H:%M:%S"`

export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH

alias rm='rm  -i'

alias ll='ls -lh'

保存后使环境变量立即生效,否则initdb命令会找不到:

命令:source /home/postgres/.bash_profile

9.初始化数据库

命令:initdb -D /data01/postgresql/data/

10.启动数据库

    命令:su - postgres    //使用postgres用户

    命令:cd /home/postgres  //logfile需要在postgres的用户目录下创建

    命令:pg_ctl -D /data01/postgresql/data/ -l logfile start

查看5432端口是否已经启动

命令:netstat -nltp|grep 5432

1-10,主库备库服务器上都要操作

11.主库修改/data01/postgresql/data/pg_hba.conf文件,允许备库IP通过复制用户访问数据库

host    all             all             0.0.0.0/0               md5

host    replication     postgres        192.168.153.196/32       trust

(配置为从节点ip即可)

12.主库修改/data01/postgresql/data/postgresql.conf

listen_addresses= '*'

wal_level = replica

max_connections = 10000

archive_mode = on

archive_command = 'cp %p /data01/postgresql/archive/%f'

max_wal_senders= 10

wal_keep_size = 1000 # in megabytes; 0 disables

max_slot_wal_keep_size = 10 # in megabytes; -1 disables

wal_sender_timeout = 120s # in milliseconds; 0 disables

hot_standby = on

13.修改完后重启主库服务

pg_ctl -D /data01/postgresql/data/ -l logfile restart

14.备库使用pg_basebackup命令将主节点的data同步过来

pg_basebackup -h 192.168.153.208 -p 5432 -U postgres  -P -X stream -D /data01/postgresql/data -R

执行会报错,需要将data目录下文件全部移走再执行上面命令,然后将postmaster.pid和postmaster.opts两个文件再移回去,最后重启即可。

在主库查看集群状态

psql -x -c "select * from pg_stat_replication" -d postgres

15.主库停止,模拟故障

将备库提升为新主库,对外提供服务

psql -c "select pg_is_in_recovery()"

PG判断主库与备库的方式可参考:https://blog.51cto.com/u_7548043/5463830

### PostgreSQL 主从部署的最佳实践 #### 1. 配置主服务器 为了实现高可用性和数据冗余,配置主服务器是至关重要的第一步。确保主服务器上的`postgresql.conf`文件中的参数设置如下: ```plaintext wal_level = replica # 设置WAL级别为replica或更高 max_wal_senders = 10 # 允许的最大并发复制连接数 hot_standby = on # 启用热备模式 archive_mode = on # 开启归档模式 archive_command = 'cp %p /path/to/archive/%f' # 归档命令路径 ``` 这些配置项有助于为主从架构提供必要的支持[^1]。 #### 2. 初始化备用服务器 初始化备用服务器时,通常采用物理备份的方式创建一个新的实例作为副本。可以使用`pg_basebackup`工具来完成这一过程: ```bash pg_basebackup -h primary_host -D /var/lib/postgresql/13/main -U replication_user -P --checkpoint=fast --xlog-method=stream ``` 此命令会在目标目录下建立一个完整的数据库拷贝,并通过流复制保持与主服务器的数据同步状态[^2]。 #### 3. 复制槽位管理 建议启用逻辑复制槽位以防止主节点提前回收WAL日志段,在`recovery.conf`中添加以下内容: ```plaintext primary_conninfo='host=primary_ip port=5432 user=replication_user password=your_password' restore_command = 'cp /path/to/archivedir/%f "%p"' slot_name = my_slot_name # 定义唯一的复制槽名称 ``` 这一步骤对于维持稳定可靠的复制链路至关重要[^3]。 #### 4. 监控与维护 定期监控主从之间的延迟情况非常重要,可以通过查询系统视图`pg_stat_replication`获取实时统计信息;同时也要注意检查磁盘空间利用率、CPU负载等因素,及时调整资源分配策略以优化性能表现[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值