CentOS7中PotsgreSQL11双机备份

根据搜集的资料安装测试并在安装测试过程中整理的文档,如有不足希望不吝赐教。


目录

​​​​​​​一、环境介绍

二、主节点配置

1.修改配置文件

2.创建超级用户

3.基础备份

三、配置备节点

1.修改配置文件

四、查询主备

1.pg_controldata命令

2.字典表pg_stat_replication

3.进程信息识别

4.通过pg函数


一、环境介绍

系统:两台CentOS7.5

ip:172.17.0.84(主)、172.17.0.86(备)

数据库版本:PotsgreSQL11

主从流复制配置:https://www.cnblogs.com/yjf512/p/4499547.html

 

二、主节点配置

1.修改配置文件

使用postgres用户:su - postgres

进入data目录(实际目录可能不同):cd /var/lib/pgsql/11/data

修改配置文件:vim postgresql.conf

编辑文件内容,找到如下设置项并修改:

wal_level = hot_standby		# 这个是设置主为wal的主机
max_wal_senders = 1		# 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个
wal_keep_segments = 500	  # 设置流复制保留的最多的xlog数目
hot_standby = on
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%a.log’

上边配置项部分需要取消注释,日志配置如果已经有,保持默认即可。修改完成后保存退出。

2.创建超级用户

登录数据库,在主节点数据库中创建一个超级用户,standby数据库会使用这个用户连接到主库上拖WAL日志。

psql

下面创建用户命令是在登录数据库后执行:

create user standby SUPERUSER LOGIN password 'standby';

3.基础备份

开启备份功能

psql -c "select pg_start_backup('backup0001')"

使用scp命令将data目录下数据远程拷贝到备库data目录下:

scp -r /var/lib/pgsql/11/data/* 172.17.0.86:/var/lib/pgsql/11/data/

因为上面的命令会默认使用postgresql创建的用户postgres,因此此处使用了root用户发送,但是需要在发送完成后在备机上修改文件属组,直接递归将整个data目录的用户和组全部修改即可(chown -R postgres:postgres data/)。

scp -r /var/lib/pgsql/11/data/* root@172.17.0.86:/var/lib/pgsql/11/data/

关闭备份功能

psql -c "select pg_stop_backup()"

修改完成后重启主数据库。

 

三、配置备节点

1.修改配置文件

修改data目录下postgresql.conf文件,把其中的hot_standby设置为on。

拷贝示例文件/usr/pgsql-11/share/recovery.conf.sample到/var/lib/pgsql/11/data/目录下,然后改名成recovery.conf:

mv recovery.conf.sample recovery.conf

编辑(vim)recovery.conf修改相关的配置项为如下内容:

standby_mode = 'on'
primary_conninfo = 'host=172.17.0.84 port=5432 user=standby password=standby'

修改完成后保存退出,然后重启从数据库。

 

四、查询主备

1.pg_controldata命令

首先切换到postgres用户(已经切换忽略):su - postgres

然后使用pg_controldata命令查看状态,这里需要注意的是,pg_controldata命令并不一定是在data目录下,也不一定可以直接使用,因此可以用find命令(find / -name pg_controldata)查找pg_controldata位置,然后再使用命令的完整路径查看。

本次完整路径为:/usr/pgsql-11/bin/pg_controldata,执行命令查看:

主机:

备机:

可以看到主机的cluster state是in production,备机的cluster state是in archive recovery。

2.字典表pg_stat_replication

在postgres用户下,登录数据库,然后使用下面查询语句:

select pid,application_name,client_addr,client_port,state,sync_state from pg_stat_replication;

在主机字典表中是能查到记录,备机中是查询不到的。如下:

主机:

备机:

3.进程信息识别

使用命令ps -ef|grep postgres查看进程,可以通过进程信息识别主备机。如下:

主机:

备机:

4.通过pg函数

在postgres用户下,登录数据库,然后使用下面查询语句:

select pg_is_in_recovery();

主机是f,备机是t。

主机:

备机:


END

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值