pgsql的主备数据库 standby数据库搭建

一.原理

PITR原理
使用wal日志来备份数据库

配置完成后,实时备份,备库只能读取,不能写入

二.操作

主机名 ip地址 角色 数据目录
pg0 110.0.0.100 主库 /home/postgres/data
pg1 110.0.0.101 standby /home/postgres/data

1.主数据配置

/home/postgres/data/pg_hba.conf 中做配置

# md5 也可以是 sha加密
host  replication    all  0/0   md5

此语句保证任何网络都可以发起到本数据库的流复制连接

另外还有几个参数

listen_addresses = '*'
max_wal_senders = 10
wal_level = replica
#  max_wal_size 默认为 80 MB,该值很小容易导致备库失效
max_wal_size = 800MB

max_wal_senders 一定要设置大于 0
同时 wal_level 参数设置为 replica 或 logical

最后重启数据库

2.备库配置
pg_basebackup 工具在 /home/postgres/bin目录下

# 110.0.0.100 是主库的ip
# $PGDATA 是环境变量为  /home/postgres/data 可以自定义一个目录
#  osdaback 是备份的标识码 可以自定义一个
# -F p 输出格式为原样输出   -P 执行过程中输出备份进度
# -X stream 备份过程中产生的xlog文件也备份出来
pg_basebackup -h 110.0.0.100 -U postgres -F p -P -X stream -R -D $PGDATA -l osdaback

然后输入服务器的数据库的密码

因为使用了 -R 所以会自动生成 standby.signal (在 /home/postgres/data目录下 ) 文件,所以不需要在自己去生成此文件。
12版本前则是自动生成 recovery.conf

启动备库数据库

pg_ctl start

3.检测是否连接
如果备库已经连接主库上,那么在 pg_stat_replication 上可以查询到

select client_addr,state,sync_state from  pg_stat_replication 

查询到的 state 不是 streaming 也说明有问题,可以查看备库的日志文件查询原因

三.备库还原

1.关闭数据库
2.删去备库的 standby.signal
3.重新启动数据库

猜你喜欢

转载自blog.csdn.net/qq_33253054/article/details/130712055