配置PostgreSQL进行多机热备

 

 

 

 

 

配置PostgreSQL进行多机热备

 

 

 

 

 

 

 

文档控制

l       文档变更记录

 

日期

版本号

作者

备注

2009-9-8

v1.0

陈浩

创建

 

 

 

 

 

 

 

 

 

 

 

 

 


 

1       规划

说明

主机

备机

Linux版本

Debian502

Debian502

IP address

192.168.15.90

192.168.15.91

PostgreSQL版本

8.4

8.4

PostgreSQL安装目录

/usr/local/pgsql/

/usr/local/pgsql/

数据文件目录

/usr/local/pgsql/data/

/usr/local/pgsql/data

归档日志目录

/usr/local/pgsql/backup/archive_log/

 

热备日志目录

 

/usr/local/pgsql/backup/standby_log/

 

2       安装PostgreSQL

下载PostgreSQL8.4版本,安装到主机和备机规划的目录中,并初始化数据库集群,创建standby数据库。

 

3       安装pg_standby

备机进入编译后的/postgresql-8.4.0/contrib./pg_standby目录,执行以下命令

make

make install

这时便安装好pg_standby

 

4       安装设定SCP无密码传送文件

4.1 主机和备机分别安装SSH

apt-get install openssh-server

 

4.2 主机和备机分别创建/home/postgres/.ssh/目录

mkdir –p /home/postgres/.ssh/

 

4.3 主机以postgres用户登录,创建密码文件

ssh-keygen –t rsa,三个回车,密码文件默认会创建在/home/postgres/.ssh/

 

4.4 把主机的id_rsa.pub 传送到备机同目录,命名为authorized_keys

scp /home/postgres/.ssh/id_rsa.pub postgres@192.168.15.91:/home/postgres/.ssh/authorized_keys,出现提示时输入备机postgres用户的密码

 

4.5 输入ssh 192.168.15.91进行测试,无需输入密码即可连接,这时主机向备机传送归档WAL日志文件时就不用输入密码了。

 

5       主机设定WAL归档

vim /usr/local/pgsql/data/postgres.conf

设定如下参数:

archive_mode = on

archive_command = ‘scp %p 192.168.15.91:/usr/local/pgsql/backup/standby_log/%f

archive_timeout = 1200

 

archive_mode参数,开启WAL归档

archive_command参数,设定归档时执行的命令,我们这里通过scp把主机的WAL归档日志传送到备机的/usr/local/pgsql/backup/standby_log/目录下

archive_timeout参数,规定了最多多久执行一次归档,也是发生故障时数据库丢失数据的最长时间。设定很小的话保证了安全性,增加了网络传输量。

 

6       主机进行备份,恢复到备机

6.1 主机开始备份

psql standby

select pg_start_backup(‘baseline’);

 

6.2 主机压缩备份整个data目录

tar –jcv –f /usr/local/pgsql/backup/baseline.tar.bz2 /usr/local/pgsql/data/

 

6.3 主机通过scp复制到备机

scp /usr/local/pgsql/backup/baseline.tar.bz2 192.168.15.90: /usr/local/pgsql/backup/baseline.tar.bz2

 

6.4 备机解压缩备份文件

tar –jxv –f /usr/local/pgsql/backup/baseline.tar.bz2 –C /

 

6.5 备机更改目录权限

chown –R postgres:postgres /usr/local/pgsql/

 

6.6 主机结束备份

psql standby

select pg_stop_backup();

 

7       备机进行设置,启动到恢复模式

7.1 /usr/local/pgsql/data目录内建立recovery.conf文件,设置如下:

restore_command = 'pg_standby -d -s 2 -t /tmp/pgsql.trigger.5432 /usr/local/pgsql/backup/standby_log %f %p %r 2>>standby.log'

recovery_end_command = 'rm -f /tmp/pgsql.trigger.5432'

 

7.2 更改/usr/local/pgsql/data/postgres.conf文件中备份设置

vim /usr/local/pgsql/data/postgres.conf

archive_modearchive_commandarchive_timeout三个参数注释掉,这些参数是主机设置的,由于我们备机暂时不需归档,所以注释掉他。

 

7.3 启动备机postgresql数据库

pg_ctl –D /usr/local/pgsql/data start

备机会一直读取主机传送的WAL归档日志进行恢复,知道/tmp目录下创建pgsql.trigger.5432文件,停止备份后会删除该文件防止错误操作。

 

8       测试

8.1 主机登录standby数据库,创建表并插入相应数据

psql standby

create table tb(a int);

insert into tb(a) values(1);

insert into tb(a) values(2);

insert into tb(a) values(3);

 

8.2 主机归档WAL日志

select pg_switch_xlog();

 

8.3 备机查看/usr/local/pgsql/data/standby.log,确定主机刚发送过来的WAL归档日志已经被应用到备机上。

 

8.4 备机在/tmp目录下创建pgsql.trigger.5432文件

touch /tmp/pgsql.trigger.5432

 

8.5 登录备机standby数据库,查看数据是否恢复

psql standby

select * from tb;

a

---

 1

 2

 3

 

至此,数据已同步到备机。需要切换时只要创建/tmp/pgsql.trigger.5432文件,备机会自动完成切换。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14293419/viewspace-614586/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14293419/viewspace-614586/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值