在生产环境中,任何架构的建立,必须拥有防止单点故障的存在.
mysql可以拥有主从,或者双主,加上keepalived的VRRP热备切换功能可以实现
还有其他的,MHA,PXC,MMM,heartbeat+DRBD等
-----------------------------------------------------------------------------------
 搭建思路,首先两台mysql互为主从复制关系,通过keepalived的虚拟IP来提供mysql服务
centos7+双mysql
今天要达到的目的是主主复制,都是主也都是从,再用keepalived虚拟IP来提供服务,保证服务器的高可用性
 mysql-双主+keepalived高可用架构_第1张图片
主从复制原理
主服务器将更新事物保存binlog日志文件,
slave将主服务器binlog拷贝到自己的中继日志使用io线程
sql线程重放中继日志中的事物.完成主从复制
--------------------------------------------------------------------------------------
主从复制遇到的问题,从服务器同步延迟
1,5.6之前的版本主从复制是单线程,之后的版本是多线程,可以升级mysql或者mariadb
2,从服务器的硬件配置差距大,无法承载主服务器过大的数据并发,升级配置
3,单一语句或事物执行时间过长,可以使用慢语句一点一点排查优化
4,主从的网络问题,可以配置以太网聚合链路,提高网络带宽.
5,从数据库多,导致延迟
6,待续
---------------------------------------------------------------------------------------- 
主从数据库设置
首先修改my.cnf文件
mysql-双主+keepalived高可用架构_第2张图片
首先开启binlog,然后开启relaylog
auto-increment-increment=2   如果表中有auto自动增长的列,每次增加数是2,因为只用到了2台mysql,如果是3台就用3
auto-increment-offset=1   默认起始位,第二天则用2
预防的问题就是如果第一台宕机,
正好自动序列停在了3,
而另一台还没有同步到数据就切换
新来的数据将会还是延续之前的自动填写,
等第一台修好以后,原本的数据会跟另一台冲突,
如果按照上面的思路,两边增量跟起始位都不一样
例:135     246, 就算中途没有同步到某条数据
等开始同步后是不会有任何冲突的
而且这样做可以让两台服务器都同是运行也不会有干扰
binlog_do_db=库名,加入单条命令就是制定同步哪个,也可以加入多个

开始建立授权用户
dB8BAAAAAAAA&bo=2QJDAAAAAAAFEKs!
查看当前binlog和位置
mysql-双主+keepalived高可用架构_第3张图片
从开始建立连接
dCABAAAAAAAA&bo=1AI8AAAAAAAFENk!
start slave;启动
mysql-双主+keepalived高可用架构_第4张图片
两台电脑都要互相主从复制
关注防火墙,不然连接不到..
搞定之后两边各自创建库表,插入数据,会发现原来设置的意义
------------------------------------------------------------------------------------------------
 keepalived高可用性
keepalived是一个集群管理中保证集群高可用的软件解决方案,类似heartbeat,防止单点故障
VRRP协议为基础,虚拟路由冗余协议
多个相同功能的服务器组成一个组,组里有一个master和多个backup,master拥有vip对外提供服务
组播地址是224.0.0.18,当backup收不到vrrp包就认为是master宕机了.这时候vrrp按照优先级
来选举一个master继续提供服务.
keepalived主要拥有三个模块
core模块是keepalived的核心模块
check是负责健康检查的,常见的是下面几种
    1,tcp_check  工作在四层
    2,http_get 工作在五层,向指定url执行http请求,将得到的md5加密并与之指定的md5匹配,不匹配从服务器池中移除
    3,ssl_get与上一个类似
    4,misc_check 用脚本来检测
    5,smtp_check 检测邮件服务的
vrrp是用来实现vrrp协议的
----------------------------------------------------------------------------------------------------
keepalived的安装配置
首先安装一下keepalived的支持包,
yum -y install kernel-devel openssl-devel popt-devel
 kernel-devel                    内核文件
 openssl-devel                  头文件,头文件参考,某些库文件等跟开发相关的东西
 popt-devel                      popt库文件解析命令等
源码包安装keepalived,
centos7.2以后就不需要再指定内核位置了,安装在/下以后自动在etc中生成mysql-双主+keepalived高可用架构_第5张图片
centos7开防火墙

dB8BAAAAAAAA&bo=IANeAAAAAAAFEE4!
keepalived配置文件选项
mysql-双主+keepalived高可用架构_第6张图片
keepalived配置文件除了,
router_id        
priority      
state      
real_server  这几个地方有可能不一样外,其他的都应该是一样的!