1、 Windows热备环境
操作系统 : win10 数据库 :PostgreSQL 10.3
服务器两台 : master(主库):192.168.4.119, slave(备库):192.168.4.135,
2、安装postgresql 10.3
1、master端和slave端安装PostgreSql10.3数据库,程序位置:C:\Program Files\PostgreSQL\,位置没有要求,根据自己实际情况安装,安装完成后(安装完成不用做其他配置,记得账户密码),通过pgAdmin工具测试两端的数据库是否可以相互连接通。
2、打开C:\Program Files\PostgreSQL\data目录下的pg_hba.conf文件,添加host all all 0.0.0.0/0 md5,如图所示
3、创建流复制用户
1、master端执行:
CREATE USER jggreplication LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD 'jgg';
如下图:
4、配置master端的访问文件pg_hba.conf
1 、pg_hba.conf文件在C:\Program Files\PostgreSQL\10.3\data路径下,请根据自己的实际安装路径查询。 打开pg_hba.conf文件,在文件最后面添加: host replication jgg 192.168.4.135/16 md5 如图:
5、配置master端postgresql.conf文件
1、 postgresql.conf文件中C:\ProgramFiles\PostgreSQL\10.3\data路径下,请根据自己的实际安装路径查询。打开postgresql.conf文件,在文件最后面添加以下配置,配置完成,需重新启动数据库
max_wal_senders = 1
wal_level = hot_standby
archive_mode = on
archive_command = 'cd ./'
hot_standby = on wal_keep_segments = 64
如图:
注: max_wal_senders是slave库的节点数,有多少个slave库就设多少, wal_level是write ahead log参数值,设置流复制务必将此值更新成hot_standby wal_keep_segments默认值是16,是PG_XLOG下的日志文件数相关参数 archive也可以选择关闭,归档是定时恢复用的,流复制不是必须的
6、配置master端主库备份
1、开启文件备份,前提是wal_level参数值必须是archive或者host_standby,第四步已经配置过。
执行语句:select pg_start_backup('Replitionwork');
如图:
2、拷贝master端C:\Program Files\PostgreSQL\10.3\data文件夹下面的所有内容,并复制到slave端的data文件夹下面slave端的postgres数 据库需要先停止,然后清空slave端:C:\Program Files\PostgreSQL\10.3\data的内容,注意是清空data文件下面的内容,不是删除整个data文件夹在master端复制``data文件夹下面的所有文件,然后粘贴到slave端的data```文件夹下面。
3、上述步骤完成后,结束掉master端的备份
执行语句:
select pg_stop_backup(),current_timestamp; 如图:
7、配置slave端recovery.conf文件
1、将slave端:C:\Program Files\PostgreSQL\10.3\share\recovery.conf.sample文件拷贝到C:\Program Files\PostgreSQL\10.3\data文件夹下,重命名为recovery.conf 在该文件末尾新增以下内容:standby_mode ='on' primary_conninfo='host=192.168.4.119 port=5432 user=jgg password=jgg keepalives_idle=60'
如图:
2、删除salve端postmaster.pid
8、启动slave 端数据库
1、打开slave端的数据库, 可以看到slave端和master端上面的数据库是一样的,当对master端数据库进行insert,update,delete操作时,slave端也会同步更新数据,且slave端的会话为只读,不能进行insert,update,delete操作。
9、主热备切换
主切备
recovery.done 重命名为recovery.conf
备切主
recovery.conf 重命名为recovery.done