赞
踩
主从复制请看:[PostgreSQL高可用(一)主从流复制]
在上一节中,配置好了流复制结构,接下来模拟主库宕机,进行测试。
1.主库宕机
在master上执行
pg_ctl stop
会发现测试库报错,连接不上主库。
这时我们创建触发文件。
touch /tmp/trigger_file0
也可以放在别的目录,记得要给postgres权限。
这时,测试库会变成主库。我们在slave上的测试库中新建测试表,并插入数据。
create database test;
create teble test_1 (id int);
insert into test_1 valuse (1);
将主库的recover.done变为recovery.conf
mv recovery.done recovery.conf
启动主库
pg_ctl start
主库会自动的发现时间线的差异,并拷贝过来。
登录主库查询,可以查到数据。
如果你们更改recovery.done,或者进行了别的操作,你会发现数据是不一样的。
这是你需要停掉被恢复的库,手动同步时间线。
pg_rewind --target-pgdata=/home/postgres/data --source-server='host=slave port=5432 user=postgres dbname=postgres'
将主库的recover.done变为recovery.conf
mv recovery.done recovery.conf
再次启动主库。数据就已经同步了。
你可以多次手动切换进行测试,但是你会发现一个问题。
触发文件trigger_file0每次在即创建完成后并不会存在,他在切换完成后就消失了。每次都要手动创建文件的话很麻烦,所以使用pgpool进行自动切换。
下载地址:http://www.pgpool.net/mediawiki/images/
tar -zxvf pgpool-II-3.6.0.tar.gz -C /opt/
cd /opt/pgpol-II/
./configure –prefix=/opt/pgpool -with-pgsql=path -with-pgsql=/home/postgres
make
make install
vim /etc/profile
PGPOOL_HOME=/opt/pgpool
export PGPOOL_HOME
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin:$PGPOOL_HOME/bin
export PATH
#使之生效
source /etc/profile
增加一下内容
host all all 0.0.0.0/0 md5
[postgres@pool etc]$ pwd
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。