如何轻松搭建PostgreSQL高可用
在金融、电信等领域,数据库通常要做高可用部署。本文讨论了postgresql的双机热备部署方案,通过部署脚本轻松完成pg的高可用搭建。...
在金融、电信等领域,用户交易数据不能因为电缆被挖了一铲而丢失,服务不能因此中断。在这类系统中,数据库的高可用通常要达到99.9%以上。99.9%的高可用性是有多高的要求呢?换算下来,也就是一年内发生故障不能提供服务的时间要小于(1-99.9%)*365*24=8.76小时。这要求我们在部署系统时,要提供一套高可用方案,在系统出现故障时,能保证持续提供服务或者尽快恢复服务,同时每年的故障时间要低于8个多小时。什么样的高可用方案才能达到这类标准呢?对于数据库,采用双机热备是其中一个常见的、有效的高可用方案。本文主要讨论PostgreSQL的双机热备高可用解决方案。
使用 Pacemaker和DRBD 的双节点主备方案作为一种经济的解决方案被很多高可用环境所采用。如下图:
共享失效备援模式
Pacemaker可以让多个主备模式的集群集成起来并共享一个备用节点,从而大幅度的减少硬件成本。如下图:
N to N模式
当有共享存储设备是,每个节点都成为潜在的备援节点。 Pacemaker甚至可以在不同的节点上跑相同的服务来负载均衡。在了解了Pacemaker的基础概念后,让我们回头看看我们的需求:需要对PostgreSQL实现双机热备,两台服务器之间通过VIP对外提供服务。开始时,VIP落在master主机上,master主机对外提供读写服务,slave主机定时完成数据同步。当master主机故障时,VIP自动漂移到slave主机上,这时slave主机的身份切换成为master。当我们修复故障后,需要恢复原来的双机热备状态。
环境准备
- 两台CentOS 7 主机,分别为Master和Slave。
- 防火墙使用firewalld,打开如下端口: tcp端口:22 5432 55284 2224 21 25 60403 udp端口: 48294 5405 53055 323 60801 27103 39458 68 35525 61447 5859 38150 36135 54705 43639 34979 42772
- 两个未被占用的虚拟IP,要求虚IP和主机在同一子网段。
- PostgreSQL使用5432端口,IP使用VIP_PG_MASTER对外提供服务
- 将所有安装脚本及压缩包上传到master/slave主机的/root目录下解压缩 tar xvf pg_ha_install.tar,最后目录结构如下:
[root@localhost pg_ha_install]# pwd
/root/pg_ha_install
[root@localhost pg_ha_install]# tree
.
├── auto_change.sh
├── check_pg.sh
├── come_over.sh
├── config.sh
├── create_repo.sh
├── ha.conf
├── install_pacemaker.sh
├── install_pg_master.sh
├── install_pg_slave.sh
├── open_port.sh
├── readme.md
├── yum_pacemaker.tar
└── yum.tar
0 directories, 13 files
安装步骤
(1) 在master和slave主机上都要执行。检查安装环境、配置master、salve的IP
cp -r pg_ha_install /root
cd /root/pg_ha_install
./config.sh MASTER_IP=1.2.3.4 SLAVE_IP=1.2.3.5 VIP_PG_MASTER=1.2.3.6 VIP_PG_SLAVE=1.2.3.7 NET=1.2.0.0/16 PG_DIR=/data/postgresql
说明:MASTER_IP/SLAVE_IP分别为pg_master/pg_slave主机的真实IP. VIP_PG_MASTER/VIP_PG_SLAVE分别为pg_master/pg_slave的虚拟IP,这些虚拟IP需要确保是同一网段,未被占用的IP。NET为MSATER_IP/SLAVE_IP所在的子网。PG_DIR为数据库的启动路径。
(2) 在master和slave主机上都要执行。打开所需端口
./open_port.sh
(3) 在master和slave主机上都要执行。创建repo离线安装包
./create_repo.sh
(4) 在master和slave主机上都要执行。安装pacemaker和pg
./install_pacemaker.sh
(5) 在master主机上执行。初始化pg master。注意,必须先在master主机上执行pg初始化,再到slave主机上执行pg初始化。
./install_pg_master.sh
(6) 在salve主机上执行。初始化pg salve。需要输入postgres密码:postgres
./install_pg_slave.sh
(7) 在master主机上执行。配置主备自动切换
./auto_change.sh
二、检验安装结果
(1) 在master或slave主机上执行。大约需要等待30秒后,数据库启动完成,执行以下脚本检查安装是否正确。
./check_pg.sh
三、模拟master故障、检验切换效果
(1) 查看数据库主从同步状态
pcs status
crm_mon -Afr -1
(2) 杀掉master主机上的postgres进程,然后查看数据库主从同步状态
killall postgres
pcs status
crm_mon -Afr -1
四、修复故障,恢复双机热备
./come_over.sh
通过运行以上脚本,可以轻松快捷完成高可用的搭建、结果检测、故障恢复。更加详细的信息,可以访问
http://blog.csdn.net/qguanri/article/details/51151974
关注 OpenRestyFans
微信扫一扫关注公众号