postgresql 双机热备实现

目录

说明:

1.准备两个主机 

2.分别安装pgsql数据库

3.主库配置:

  ①.初始化数据:

  ②.创建用于主从同步的账户:

  ③.修改pg_hba.conf文件:

  ④.修改postgresql.conf文件: 

  ⑤.重启主库:

4.从库配置:

  ①.同步主库目前所有数据:

  ②.启动从库:

 5.验证是否同步:

6.主从切换准备:

  ①.创建网卡(主从相同操作):

  ②.重启网络服务(主从相同操作):

  ③.关闭从库的新建的网络:

7.利用ip飘逸实现主从切换:

  ①.关闭主库、网卡:

  ②.开启从库网卡:

  ③.主库配置recovery.conf文件(host为原从库ip):

  ④.配置从库为主库:

  ⑤.启动原主库:


说明:

  /var/opt/rh/rh/rh-postgresql10/lib/pgsql/data/  此地址为数据库安装地址。
  /opt/rh/rh-postgresql10/root/usr/bin/  此地址为数据库命令sh文件地址

1.准备两个主机 

250 主库
  251 从库
  (主从切换后则主从关系调换)

2.分别安装pgsql数据库

  安装完成后,分别配置两个数据库可被哪些网段访问(从库需要在4.①步骤完成后执行此操作)
  vi /var/opt/rh/rh-postgresql10/lib/pgsql/data/pg_hba.conf
  在ipv4下增加
  host    all     all         192.168.254.0/24          md5

以下步骤,除非必要,都在postgres用户下操作,如果使用root用户操作,
需要注意将data目录下所有文件chown给postgres用户

3.主库配置:

  ①.初始化数据:

    /opt/rh/rh-postgresql10/root/usr/bin/postgresql-setup initdb

  ②.创建用于主从同步的账户:

    postgre用户进入psql模式su - postgres 
    创建用户 create role testrep login replication encrypted password 'pwd@123';

  ③.修改pg_hba.conf文件:

    vi /var/opt/rh/rh-postgresql10/lib/pgsql/data/pg_hba.conf  
    # 在配置文件中追加从库访问限制,允许从库发起流复制
    host    replication     testrep         192.168.254.251/32          trust

  ④.修改postgresql.conf文件: 

    vi /var/opt/rh/rh-postgresql10/lib/pgsql/data/postgresql.conf
    listen_address = '*'       # 监听所有ip
    port = 5432                # 端口
    max_connections = 500      # 最大连接时间,必须要小于从库的配置
    wal_level = replica        # 该级别支持wal归档和复制
    max_wal_senders = 5        # 并发的从库数量
    wal_keep_segments = 500    # 默认是0,代表主库wal日志文件保存的个数,设置数量多一点可以防止主库生成日志太快而被覆盖的情况发生
    wal_sender_timeout = 3min  # 流复制超时时间

  ⑤.重启主库:

    systemctl start rh-postgresql10-postgresql

4.从库配置:

  ①.同步主库目前所有数据:

    切换到postgres用户:
    pg_basebackup -h 192.168.254.250 -U testrep -F p -X stream -P -R -D /var/opt/rh/rh-postgresql10/lib/pgsql/data/ -l backup0001 -W
    输入testrep用户的密码
    
    参数说明:
    -h指定连接的数据库的主机名或 IP 地址。
    -U指定连接的用户名。
    -F指定了输出的格式,支持p(原样输出)或者t(tar格式输出)。
    -X表示备份开始后,启动另一个流复制连接从主库接收WAL日志。
    -P表示允许在备份过程中实时的打印备份的进度。
    -R表示会在备份结束后自动生成recovery.conf文件。
    -D指定备份写入的数据目录,需要与数据库配置的数据库目录一致,初次备份之前从库的数据目录需要手动清空。
    -l表示指定一个备份的标识。
    -W强制密码提示输入

  ②.启动从库:

    systemctl restart rh-postgresql10-postgresql

 5.验证是否同步:

  主库:
    postgres用户进入psql模式,输入sql查询:
    SELECT client_addr,sync_state FROM pg_stat_replication
    查询结果是否有从库ip进同步状态  
    在主库创建库表,插入数据。
  从库:
    postgres用户进入psql模式
    查看主库创建的库表及数据是否已经同步到从库

6.主从切换准备:

  ①.创建网卡(主从相同操作):

    cd /etc/sysconfig/network-scripts/
    cp ifcfg-eth0 ifcfg-eth0:1
    vi ifcfg-eth0:1
    修改DEVICE 与NAME为新网卡名字
    修改ip地址为需要飘逸的ip(保持主从两库一致)

  ②.重启网络服务(主从相同操作):

    service network restart

  ③.关闭从库的新建的网络:

    ifdown eth0:1  

7.利用ip飘逸实现主从切换:

  ①.关闭主库、网卡:

    systemctl stop rh-postgresql10-postgresql
    ifdown eth0:1

  ②.开启从库网卡:

    ifup eth0:1

  ③.主库配置recovery.conf文件(host为原从库ip):

    cd /var/opt/rh/rh/rh-postgresql10/lib/pgsql/data/
    vi recovery.conf
    recovery_target_timeline = 'latest'
    standby_mode = on
    primary_conninfo = 'host=192.168.254.251 port=5432 user=testrep password=pwd@123'

  ④.配置从库为主库:

    使用postgre用户执行命令
    /opt/rh/rh-postgresql10/root/usr/bin/pg_ctl promote -D /var/opt/rh/rh-postgresql10/lib/pgsql/data/
    修改原从库pg_hba.conf文件
    vi /var/opt/rh/rh-postgresql10/lib/pgsql/data/pg_hba.conf 
    将允许流复制的ip改为192.168.254.250(原主库ip)
    host    replication     testrep         192.168.254.250/32          trust

  ⑤.启动原主库:

    使用postgre用户执行命令
    /opt/rh/rh-postgresql10/root/usr/bin/pg_ctl start -D /var/opt/rh/rh-postgresql10/lib/pgsql/data/  

以上完成pgsql主从热备,并且通过ip飘逸实现主从切换

上述步骤是手工实现,可自行编写脚本配合ip漂移处理关机、开机、等情况的主备切换;目前经过测试,只有在两台都关机然后先启动备机的情况下会造成问题。

大致原因应该是在都都关机的时候,原主机比原备机后关闭,在备机被关闭后,有了变动导致。可自行解决

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值