postgresql主从复制的文档

本文详细介绍如何在两台虚拟机之间配置PostgreSQL的主从复制环境,包括安装设置、主库配置、从库配置及验证步骤。

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

postgresql主从复制的文档

注意注意:

如何虚拟机中已安装有postgresql ,删除如下:

yumerase postgresql*

rm-rf /var/lib/pgsql

a.准备两个ip,如下:

(主库)192.168.1.40,(从库)192.168.1.41

b.安装postgresql(主从)

1.添加RPM
    yum install
https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm

若安装过,则显示不更新,不影响。

2.安装PostgreSQL 9.5
    yum install postgresql95-serverpostgresql95-contrib

3.初始化数据库
   /usr/pgsql-9.5/bin/postgresql95-setup initdb

4.设置开机自启动
    systemctl enablepostgresql-9.5.service

5.启动服务
    systemctl startpostgresql-9.5.service  systemctl statuspostgresql-9.5.service

 

Active(running)出现表示成功

c.主库的配置

1.mkdir /opt/pgsql/pg_archive

若存在就不需要在创建了。

2.创建用户 replica 密码是replica

su - postgres  切换用户,执行后提示符会变为 '-bash-4.2$'
   psql -U postgres 登录数据库,执行后提示符变为 'postgres=#'
   首先需要创建一个数据库用户进行主从同步。创建用户replica,并赋予登录和复制的权限。postgres# CREATE ROLE replica loginreplication encrypted password 'replica'

\du 可以查看角色,和他的功能。

3.修改pg_hba.conf,允许replica用户来同步。(可以进入xftp5,复制到桌面进行更改 /var/lib/pgsql/9.5/data/pg_hba.conf)

  

(去掉其前#/var/lib/pgsql/9.5/data/pg_hba.conf 可通过xftp5中进行修改

4.修改postgresql.conf

listen_addresses = '*'   # 监听所有IP
archive_mode = on  # 允许归档
archive_command = 'cp %p /opt/pgsql/pg_archive/%f'  # 用该命令来归档logfile segment
wal_level = hot_standby 
max_wal_senders = 32 # 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个wal_keep_segments = 256 # 设置流复制保留的最多的xlog数目
wal_sender_timeout = 60s # 设置流复制主机发送数据的超时时间
max_connections = 100 # 这个设置要注意下,从库的max_connections必须要大于主库的
(去掉其前#/var/lib/pgsql/9.5/data/postgresql.conf 可通过xftp5中进行修改
5.重启数据库

  systemctlrestart postgresql-9.5.service

 

6.测试41能否连接40数据库。在41上运行如下命令:
      psql -h 192.168.1.40 -U postgres


(表示已经连上主库,显示信息和主库一样)
d.从库的配置
  1. su - postgres
 手动进入xftp5 删除 /var/lib/pgsql/data/下的数据
pg_basebackup -h 192.168.1.40 -U replica -D /var/lib/pgsql/9.5/data -X stream -P  # 从40拷贝数据到41(基础备份)


   (这是个大坑,是先进入postgres 在进行复制的,不然是root权限)
mkdir /opt/pgsql/pg_archive


2.配置recovery.conf 
 复制/usr/pgsql-9.5/share/recovery.conf.sample  /var/lib/pgsql/9.5/data/recovery.conf
cp /usr/pgsql-9.5/share/recovery.conf.sample /var/lib/pgsql/9.5/data/recovery.conf
3.修改配置recovery.conf 
standby_mode = on    # 说明该节点是从服务器
primary_conninfo = 'host=192.168.1.40 port=5432 user=replica password=replica'  # 主服务器的信息以及连接的用户
recovery_target_timeline = 'latest'
 
(去掉其前#/var/lib/pgsql/9.5/data/recovery.conf 可通过xftp5中进行修改
4.配置postgresql.conf
wal_level = hot_standby
max_connections = 1000 # 一般查多于写的应用从库的最大连接数要比较大
hot_standby = on # 说明这台机器不仅仅是用于数据归档,也用于数据查询
max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间
wal_receiver_status_interval = 10s # 多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
hot_standby_feedback = on # 如果有错误的数据复制,是否向主进行反馈
 
(去掉其前#/var/lib/pgsql/9.5/data/postgresql.conf 可通过xftp5中进行修改
5.重启数据库
 systemctl restart postgresql-9.5.service

Ok
e.验证是否成功
主节点:select client_addr,sync_state from pg_stat_replication;(;一定要加) 


还可以在主从节点中分别用ps aux | grep postgres 进行查看
主节点:


从节点:


你还可以验证通过在主库中创建表,添加,删除数据,在从库中查看,会发现是同步的,但是从库中只能查看数据,不能对数据进行删除和添加,修改,例子如下:
主库:


从库:


主从复制配置完成,撒花嗷嗷嗷嗷嗷!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值