postgresql 热备份平台搭建
环境:pg 9.x, centos 7
主机名 | 角色 | 数据目录 | ip |
---|---|---|---|
服务器 | 主库 | /opt/PostgreSQL/9.6/data/ | *.*.*.174 |
VMware | Standby(从) | /opt/PostgreSQL/9.6/data/ | *.*.*.176 |
pg 9.x 版本
第一步
- 对主库进行操作,首先要对 pg_hba.conf 中增加一条配置
####### 允许用户postgres从176的网络上发起到本数据库的流复制(replication)链接。
host replication postgres *.*.*.176 md5
主库重启生效以上变更
-
其次要对 postgresql.conf 中修改配置
listen_addresses = “*”
max_wal_senders = 5
wal_level = replica (9.6之后的replica = 9.6之前的hot_standby) -
第三,需要用pg_basebackup命令在从机上生成基础备份。
/opt/PostgreSQL/9.6/bin/pg_basebackup -R -h 192.168.3.174 -D /opt/PostgreSQL/9.6/data/ -U postgres -W
-R 参数,会自动传教 recover.conf
-h 要备份的主机
-p 指定端口
-D 指定备份文件将要写入的目录
-U 指定链接用户名
-W 强制让pg_basebackup出现密码输入提示
-
接下来要启动Stanby数据库。
在启动之前需要修改从机的postgresql.conf里的配置。
hot_standby = on- 接着,需要启动从机的 pg,就可以自动进入Hot Standby状态,查看进程。
- 查看主机进程变化
- 接着,需要启动从机的 pg,就可以自动进入Hot Standby状态,查看进程。
出现的问题
- number of requested standby connections exceeds max_wal_senders (currently 0)
未对主库的max_wal_senders进行连接数量设置,即:max_wal_senders=1 - starting up waiting for xxxxxxxxxxxxxxxxxxxxxxxxx
此问题是因为在从机启动数据库之前没有进行hot_standby=on设置。遇上此问题需要重新进行pg_basebackup。
pg 为10.x版本
配置流复制,主库只要开启 replication 权限(pg_hba.conf)
然后再从库,
1、先形成一个主库的基本备份
2、配置 recover.conf ,开启流复制
更改从机的文件权限。
chown -R postgres data
3、重新启动
1 和2 可以通过 pg_basebackup -R -h -U -D 一步到位