配置PostgreSQL数据库流复制(replication stream)环境

查看原文:http://www.sijitao.net/1764.html
在配置之前准备两台服务器环境。

第一步:在两个环境中分别安装postgresql数据库

推荐使用源码编译安装,安装步骤可以参考之前写的文章“通过源码编译安装PostgreSQL步骤及问题总结” 。备库可以不做初始化数据的操作。

在主库中修改postgresql.conf,把listen_addresses改成"*",默认只有localhost能登陆数据库。

第二步:在主库中创建流复制用户

CREATE USER repuser replication LOGIN CONNECTION LIMIT 5 ENCRYPTED PASSWORD '123456';

第三步:修改主库pg_hba.conf文件

在最后添加如下行。

host    replication     repuser         0.0.0.0/0               md5

第四步:修改主库postgresql.conf文件

修改如下几个参数

wal_level = hot_standby

max_wal_senders = 1

hot_standby = on

max_wal_senders是Slave库的节点数,有多少个slave库就设多少。
wal_level是write ahead log参数值,设置流复制务必将此值更新成hot_standby。

修改后记得重启数据库。

第五步:创建主库基础备份

开启文件备份

select pg_start_backup('Replition work');

拷贝$PGDATA文件,并复制到Slave服务器上,排除pg_xlog内容,因为在slave还是要被清掉的。

tar czvf pgsql.tar.gz pgsql --exclude=/data/pgsql/pg_xlog

拷贝备份文件至slave端并在备机端解压

主:scp pgsql.tar.gz postgresql@192.168.2.102:~

备:tar xzvf pgsql.tar.gz -C /data/pgsql

结束master端的备份

select pg_stop_backup(), current_timestamp;

或者也可以使用这个备份脚本,脚本是开启archive_mode的例子。

[code language="shell"]

#!/bin/bash

bkpath=/home/postgres/dbbk/pgsql/dump
log_path=/home/postgres/dbbk/pgsql/logarch

find $log_path -mtime +15 -name "*.gz" -exec rm -f {} \;

export PATH=/opt/PostgreSQL/93/bin:$PATH
export PGDATA=/data/pgsql
export PGHOME=/opt/PostgreSQL/93
export PGPORT=5432

echo ""
echo "PostgreSQL_backup"
echo "----------------------"
echo "* Rotating backups..."
rm -rf $bkpath/base/02
mv $bkpath/base/01 $bkpath/base/02
mkdir $bkpath/base/01
chmod 750 $bkpath/base/01

label=`date "+%Y%m%d"`

echo `date` "backup started."
pg_basebackup -D $bkpath/base/01 -l $label -F t -z
rc=$?
mv $bkpath/base/01/base.tar.gz $bkpath/base/01/base_$label.tar.gz
cp -p $log_path/*.backup.gz $bkpath/base/01
chmod 640 $bkpath/base/01/*.backup.gz
echo `date` "backup completed with rc $rc"
exit $rc

[/code]

第六步:修改备库配置信息

添加recovery.conf文件。

$ cp $PGHOME/share/postgresql/recovery.conf.sample $PGDATA/recovery.conf
$ vi recovery.conf  --新增以下三行
standby_mode = 'on'
trigger_file = '/data/pgsql/pg.trigger'
primary_conninfo = 'host=192.168.2.101 port=5432 user=repuser password=123456 keepalives_idle=60'

配置.pgpass文件。

192.168.2.101:5432:postgres:repuser:123456

第七步:启动备数据库,检查是否启动成功。

查看主库是否有类似这个进程:

postgres: wal sender process repuser 192.168.2.102(45446) streaming 0/C01EDB8

查看备库是否有类似这个进程:

postgres: wal receiver process   streaming 0/C01ED28

如果都有就可以在主库新建一个数据库测试下,一切没问题后流复制环境就算搭建好了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值