postgresql异步方式实现standby
postgres可以利用standby的方式实现数据库的高可用。其中master database或者是primary database可以提供的是读写的功能,而standby实现的是只读的功能,下面简单的介绍下实现方式
环境说明:
master:192.168.8.4
standby:192.168.8.147
首先在两台服务器上面都安装好了postgres软件,之后按照下面的方式修改master上面的配置文件 postgres.conf
wal_level = hot_standby
max_wal_senders = 5
listen_address = ‘*’
下面在postgres中添加文件复制的用户
create user replication password ‘passwd’
\q
修改pg_hba.conf
添加如下的认证
host replication all all md5
开始的时候我的配置是如下的配置
host replication replication 192.168.8.0/24 md5
制定了具体的用户进行连接,但是在连接的过程中总是报错
所以现在采用上面的连接方式
下面对数据库进行restart(在用户为postgre的环境下)
pg_ctl restart –D $PGDATA(后面为自己的数据目录)
之后配置standby服务器
利用pg_basebackup将数据拷贝到standby数据库
pg_basebackup -U replicaiton -h 192.168.8.4 -F p -P -x -R -D/data/postgresdata_backup/ -l backup20170611
-F:format指定格式,p表示的是plain,t表示输出的格式为tar类型。即所有的文件都是以原来的格式进行复制过来,
参数解释:
-D: 指定复制过来的时候,存放的数据目录
-R:当复制完成之后,写入recovery.conf
-x:当复制的时候包括wal文件
-X:同-x,--xlog-method=fetch|stream 指定具体的方法获取wal日志
-z: --gzip生成的日志为tar.gz的压缩方式
-l:设置backup的label
-P:显示压缩的进程信息
-h:指定host
-W:强制密码提示
-w:没有密码提示
设置配置文件(slave-server)
postgres.conf
hot_standby = on
之后重启服务器,pg_ctl start –D path(将数据拷贝过来的时候的文件位置)
好了之后,可以在master database进行测试,创建一个数据库来进行同步情况的查看了。