前言
数据库如果只用一个的话,万一出现故障,会影响网页的正常访问。为解决安全问题,我们为服务器搭建集群,保证一台机器挂了,会有另一台站起来。除此之外,如果我们部署一台机器,只是作为备胎,主机挂了才派上用场有点浪费,所以我们想可不一读从机上的数据,可不可以读写从机上的数据,从而提高数据库的性能。
4中架构
主从复制解决方案
这种主从复制是MySql自身提供的。主从同步数据是通过MySql replication 让从机从主机上拉去二进制文件的方式实现的。并且通过keepalived高可用集群软件来管理主从机。如果检测到主机挂了就把web的链接切换到从机上 进行读写。
MMM/MHA高可用解决方案
三M的这种方案很好,已经不是主从机,而是主备机。
master1是主机的时候,masters2也可以进行读操作。
monitor是监控masters的状态,如果master1挂了,monitor会记录masters2同步masters断开的节点,等masters1回复正常后,会继续从节点开始同步master2的数据。
Heartbeat/SAN高可用解决方案
在这个方案中,处理failover的是高可用集群软件Heartbeat.
通过san来存储数据,这个很棒,不用来回复制数据达到数据一致性。但是有两个缺点:
1.费用高 san的存储要求什么列阵,造价高。
2.如果主机没有完全挂,这时备机对数据进行操作容易导致数据不一致和数据损失。
对于缺点2的解决方案是应用IPMI,这个设备可以在检测到主机出故障后使主机关机。
Heartbeat/DRBD高可用解决方案
DRBD是一个用软件实现的,无共享的,服务器之间镜像块设备内容的存储复制解决方案。
与SAN网络不同,它不共享存储,而是通过服务建的网络复制数据。
主机工作的同时可以读备机,如果可以读写备机就完美了,但是会有一致性问题。
经典架构
左边实现了写的高可用。
右边实现了读的负载均衡
小结
以上的这些解决方案都是为解决数据库的安全和高可用(high available)问题。