测试环境:
PC1:192.168.13.129(主库)
PC2:192.168.13.130(从库)
1、两台服务器分别安装PostgreSQL(版本最好一致)
2、主库配置
#创建复制数据库用户
CREATE ROLE replica login replication encrypted password '123456'
#修改配置文件pg_hba.conf,增加replica用户,进行同步
host replication replica 192.168.13.130/24 md5
#修改配置文件postgresql.conf,修改以下几个地方
wal_level = hot_standby # 这个是设置主为wal的主机
max_wal_senders = 32 # 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个
wal_keep_segments = 256 # 设置流复制保留的最多的xlog数目
wal_sender_timeout = 60s # 设置流复制主机发送数据的超时时间
max_connections = 100 # 这个设置要注意下,从库的max_connections必须要大于主库的
#重启主库数据库
systemctl restart postgresql-9.6.service
3、从库配置
#登录postgre用户,测试连接主库数据库是否正常
psql -h 192.168.13.129
#若链接正常,删除从库data目录下文件
rm -rf data/*
#通过pg_basebackup命令行在从库上生成基础备份
pg_basebackup -h 192.168.111.101 -U repl -F p -x -P -R -D /usr/local/postgresql/data/ -l replbackup20161122
#参数说明:
# -h:指定连接的数据库的主机名或IP地址,这里就是主库的ip
# -U:指定连接的用户名,此处是我们刚才创建的专门负责流复制的repl用户
# -F:指定了输出的格式,支持p(原样输出)或者t(tar格式输出)
# -x:表示备份开始后,启动另一个流复制连接从主库接收WAL日志
# -P:表示允许在备份过程中实时的打印备份的进度
# -R:表示会在备份结束后自动生成recovery.conf文件,这样也就避免了手动创建
# -D:指定把备份写到哪个目录
# -l:表示指定一个备份的标识,运行命令后看到如下进度提示就说明生成基础备份成功
#修改从库数据目录下的postgresql.conf文件,将hot_standby改为启用状态
hot_standby=on
#重启从数据库
4、测试。主库创建数据库,表,写入数据,从库进行查看。