Tags: 数据库
[toc]
postgresql在windows 环境下的热备hot standby
标签(空格分隔): 未分类
虚拟主机2台
MASTER: 192.16.41.114(这个看实际情况来修改),后面简称M
SLAVE: 192.16.41.112(这个看实际情况来修改),后面简称S
Step1:安装PG数据库
slave端可以只装数据库,不初始化数据库(安装好就不用动它了,要记得账号密码),因为后面需要把data文件家替换掉。
程序位置:C:\Program Files\PostgreSQL\ ,位置没有具体的要求,可以随改。
Step2:创建流复制用户
master端执行:
CREATE USER 用户名 replication LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD '密码';
提供一下查询方法:
SELECT rolname FROM pg_roles; 查询用户信息
DROP ROLE 用户名 ; 删除某个用户
Step3:配置Master端的访问文件pg_hba.conf,我的路径为:C:\Program Files\PostgreSQL\9.4\data
增加一行:
host replication repuser 192.16.41.112/16 md5
说明:repuser是上面新建的用户,后面的ip地址是该用户的地址,改成任何地址都可以过来访问。
后期安全起见可以指定访问的ip
Step4:配置MASTER端配置文件 C:\Program Files\PostgreSQL\9.4\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也可以选择关闭,归档是定时恢复用的,流复制不是必须的
Step5:主库备份(Master端)
5.1:开启文件备份,前提是wal_level参数值必须是archive或者hot_standby,
select pg_start_backup('Replition work');
5.2:拷贝C:\Program Files\PostgreSQL\9.4\data文件夹,并复制到Slave端上,是data下面的所有的文件哦
Slave端如果已经安装了postgres数据库,可以先停掉Slave端数据库(不停止有文件不能操作),将data文件夹中内容清空。将master中data文件夹中内容拷贝到slave中相同文件夹下。
5.3:上述步骤完成后,结束master端的备份
select pg_stop_backup(),current_timestamp;
Step6:修改Slave端配置信息
6.1 :postgresql.conf
这个文件由于是拷贝了的,所以可以不用修改
6.2:recovery.conf文件
将C:\Program Files\PostgreSQL\9.4\share\recovery.conf.sample文件拷贝到C:\Program Files\PostgreSQL\9.4\data文件夹下,重命名为recovery.conf
在该文件末尾新增以下内容:
standby_mode ='on'
primary_conninfo='host=192.16.41.114 port=5432 user=repuser password=repuser keepalives_idle=60'
说明:上面的地址 host= 是master的地址,端口也是,user和password是第step 2创建的用户。
6.3:配置.pgpass文件(slave端)
该文件的默认地址在:C:\Users\Administrator\AppData\Roaming\postgresql。这个文件里面可以放入连接远程数据库的默认账号密码,免去手动连接输入账号密码。
在该文件后面新增一行:
192.16.41.114:5432:postgres:repuser:repuser
6.4:删除slave端(从master端拷过来的)的postmaster.pid文件和pg_xlog文件夹中内容。在C:\Program Files\PostgreSQL\9.4\data里面
Step7:启动Slave库
打开Slave上面的数据库,可以看到slave和master上面的数据库是一样的。
Step8:测试!
网友评论