PostgreSQL 主从实现之同步流复制

测试环境:
        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必须要大于主库的

synchronous_standby_names = 'mydb_standby1'(与异步流复制区别!!!)

#重启主库数据库
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

#编辑recovery.conf配置文件(与异步流复制区别)
在primary_conninfo中加入application_name=mydb_standby1,例如
primary_conninfo = 'host=10.211.55.4 port=5432 user=repuser password=123456 application_name=mydb_standby1'

#重启从数据库
systemctl restart postgresql-9.6.service

4、测试。主库创建数据库,表,写入数据,从库进行查看。

你可能感兴趣的:(PostgreSQL 主从实现之同步流复制)