PostgreSQL集群和复制standby
操作系统 : windws
数据库 :PostgreSQL 9+ ,下面简称PG
虚拟主机2台
MASTER: 192.16.41.114(这个看实际情况来修改),后面简称M
SLAVE: 192.16.41.112(这个看实际情况来修改),后面简称S
确定ip之后,请相互ping一下,看看是否可以pingt通,如果不能ping通,很有可能是防火墙的问题,请关闭防火墙。
Step1:安装PG数据库
略,slave端可以只装数据库,不初始化数据库(安装好就不用动它了,要记得账号密码),因为后面需要把data文件家替换掉。
程序位置:C:\Program Files\PostgreSQL\ ,位置没有具体的要求,可以随改。
Step2:创建流复制用户
master端执行:
这些sql在这个地方执行:
CREATE USER 用户名 replication LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD ‘密码';
请注意上面的中文,后面需要用这个用户来进行热备 LIMIT 3可以进行修改,有几个用户用就改成几。
现在额外提供一下查询方法:
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
这些数据是描述master端的ip和端口要是master的,repuser:repuser是账号密码,是step2 创建的。
6.4:删除slave端(从master端拷过来的)的postmaster.pid文件和pg_xlog文件夹中内容。在C:\Program Files\PostgreSQL\9.4\data里面
Step7:启动Slave库
打开Slave上面的数据库,可是看到slave和master上面的数据库是一样的。
ksii
开始测试吧!!!
修改master里面的数据,看看slave上面的数据是否跟着改变。
- 点赞
- 收藏
- 关注作者
评论(0)