双机热备的原理:
从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。
从我本次的环境中为公司搭建实现两套mysql的双机热备,就是使两台mysql互为主备,在一套服务出现故障的时候即使切换另一台备份服务器,即使对外提供服务 ,双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换。使用Keepalived,可以通过虚拟IP,实现双主对外的统一接口以及自动检查、失败切换机制,从而实现MySQL数据库的高可用方案。下面说下Mysql+keeoalived双主热备高可用方案的实施。
整个系统架构中最为重要的就是keepalived的VRRP(虚拟路由冗余协议)协议,是实现故障转移最为重要的基础,由VRRP所创建出来的虚拟路由器由主路由器和备份路由器组成,是路基概念的,一组虚拟路由器协同工作共同架构一套虚拟路由器,VRRP协议选举机制,选举出主路由器,其他为备份路由器,当主路由器宕机以后,会选举出新的主路由器,来继续工作从而保障服务不间断地进行。
(1)实现mysql的双主备份:先实现主从同步,再反过来实现主从同步,从而实现双主备份。
(2)再结合Keepalived的使用,通过VIP实现Mysql双主对外连接的统一接口。即客户端通过Vip连接数据库;当其中一台宕机后,VIP会漂移到另一台上,这个过程对于客户端的数据连接来说几乎无感觉,从而实现高可用
环境描述:
Ubuntu16.04
Master1:192.168.30.20 安装mysql keepailved
Master2:192.168.30.2 安装mysql keepailved
Vip: 192.168.30.22(这个可以改成公网,实现对外连接)
要实现主主同步,可以先实现主从同步,即master1->master2的主从同步,然后master2->master1的主从同步.
这样,双方就完成了主主同步。
注意下面几点:
1)要保证同步服务期间之间的网络联通。即能相互ping通,能使用对方授权信息连接到对方数据库(防火墙开放3306端口)。在这里我是将防火墙全部关闭 iptables -F
2)同步前,双方数据库中需要同步的数据要保持一致。这样,同步环境实现后,再次更新的数据就会如期同步了。
一、Mysql主主同步环境部署
Mysql下载mysql二进制包安装
wgethttps://dev.mysql.com/downloads/file/?id=473335
tar -xvfmysql-server_5.7.20-1ubuntu16.04_amd64.deb-bundle.tar
解压后得到一系列的.deb文件。依次为:
libmysqlclient20_5.7.20-1ubuntu16.04_amd64.deb
libmysqlclient-dev_5.7.20-1ubuntu16.04_amd64.deb
libmysqld-dev_5.7.20-1ubuntu16.04_amd64.deb
mysql-client_5.7.20-1ubuntu16.04_amd64.deb
mysql-common_5.7.20-1ubuntu16.04_amd64.deb
mysql-community-client_5.7.20-1ubuntu16.04_amd64.deb
mysql-community-server_5.7.20-1ubuntu16.04_amd64.deb
mysql-community-source_5.7.20-1ubuntu16.04_amd64.deb
mysql-community-test_5.7.20-1ubuntu16.04_amd64.deb
mysql-server_5.7.20-1ubuntu16.04_amd64.deb
mysql-server_5.7.20-1ubuntu16.04_amd64.deb-bundle.tar
mysql-testsuite_5.7.20-1ubuntu16.04_amd64.deb
3.安装文件
这里这些文件存在着依赖关系,如果一个一个安装,要安装顺序来安装:
dpkg -imysql-common_5.7.20-1ubuntu16.04_amd64.deb
dpkg -ilibmysqlclient20_5.7.20-1ubuntu16.04_amd64.deb
dpkg -ilibmysqlclient-dev_5.7.20-1ubuntu16.04_amd64.deb
dpkg -ilibmysqld-dev_5.7.20-1ubuntu16.04_amd64.deb
注意在安装mysql-community-server会要求输入