MySQL高可架构设计方案(4)

2018-12-17 15:50

MySQL高可用架构设计方案

2、详细架构

连接管理器,连接不可用,或者监控到Zookeeper中的主备地址变化时(通过事件的方式可以获得,无需定时检查),从zookeeper获取新的数据库Master地址,建立新的连接APP/basedbZooKeeper master----Master ---10.10.10.1:5000 -----lock={10.10.10.1:5000} -----servers ---10.10.10.1:5000 ---10.10.10.2:5001AgentAgent半同步复制业界测试,性能损失20%,用的比较多监控Master状态,定期更新Zookeeper上的锁的时间,声明自己可用。Master10.10.10.2Slave定期检查Zookeeper上的锁更新时间,如果Master更新超时,那么把Slave状态变成master,readonly属性关闭同时更新zookeeper上的Master地址,为原来Slave的地址10.10.10.1管理工具1.监控主从状态2.主动主从切换(当主恢复的时候,需要此功能)

3、整体思路

??主备库构成分布式环境,但是有状态

—确保Agent可以重启,可以任意次重启,但是有超时限制

??主库切换逻辑可以通过Zookeeper实现

—锁的升级实现

??切换时,MySQL的read-only的设置很重要

MySQL高可用架构设计方案

??切换时,需要将异常的故障节点+App数据源一起切换

1、首先在Zookeeper初始化,创建对应的节点,写入模块信息、数据库源名称、数据库IP、数据库端口信息等,然后写入下面的数据库子节点中,并添加watcher,增加监视事件。

2、创建lock子节点,不需要设置watcher,如果当前client的id是当前最小的节点,则获得了lock,退出。否则继续等待,如果id不存在,则创建子节点

3、当发生异常master宕机后,则watcher事件触发,然后从当前id序列中得到最小的id,将该节点置为新的master,同时将DB的read-only置为on,保证可以读写

6.2.2.流程设计

流程1:Agent启动

满足

启动数据库监视器 注册成功 告警,等待手工处理 根据传入的参数在Zookeeper上注册节点 退出 检查工作环境是否满足工作要求 MySQL高可用架构设计方案

流程2:数据库监控正常

开始修改本地监控状态是否Master节点检查是否有lock节点创建Lock节点更新实例节点数据结束

流程3:数据库监控数据库Down

开始修改本地监控状态If pre_stat = active then now_stat = active2downIf pre_stat = running then now_stat = running2downElse now_stat = down是否为Active2down是否删除lock节点更新实例节点数据结束

MySQL高可用架构设计方案

流程4:Master库正常停止

开始删除Master节点停止Master数据库结束

流程五:应用启动,初始化数据库连接池

dfd Data Flow 开始读取数据源组信息zookeeper是从ZK读取数据源信息建立ZK LOCK节点的监听否构建数据源组结束

MySQL高可用架构设计方案

流程六:应用监听到Active数据库宕机

6.2.3.应用层切换设计

目前我们连接池重建连接的过程是当在连接上执行DB操作时发生特定异常时触发连接池关闭不可用连接,重新向数据源获取连接。在使用Oracle的RAC配置特性时,Oracle在驱动层会自行判断数据源是否可用,若不可用则尝试从另外一个数据源获取连接,Oracle的这个特性可以理解为对等数据源的优先选择。但MYSQL的复制机制(非共享存储)决定了其驱动层不能支持当主库出问题时自动连接到从库上,因此我们考虑使用GroupDataSource来实现类似Oracle驱动做的事情,即数据源组中的首选数据源不可用时,我们尝试同组中的其他数据源来获取连接,对于连接池来说这个过程是透明的。连接池还是保持之前当连接异常时,触发执行关闭不可用连接并重新获取连接即可。

主备切换和按权重选择、按优先级选择数据源的选择策略是不一样的,因此设计DbSelector来描述数据源的选择策略,不同的选择策略在同一数据源组中会同时存在,一个GroupDataSource包括写数据源选择策略、读数据源选择策略和运行时切换策略,使用何种具体策略取决于组数据源的配置。待选择的数据源要求是对等的,即读数据源选择策略只针对标识为读的数据源,不能把读写数据源混在一起选择。

引入了Zookeeper之后,我们可以通过Zookeeper感知到主数据库的状态。Zookeeper在完成主备切换后会通知应用程序主数据库发生了变更,应用程序收到通知后,需要关闭连接池中之前已建立的主数据库连接,重新创建新的主库连接。基于Zookeeper的通知机制,我们在AtomDataSource中接收数据源配置变化的信息,收到变化通知后更新数据源本身的状态,同时建立listner机制,把数据源状态变化发布给连接池等对象进行相应的处理。


MySQL高可架构设计方案(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:信用证常用条款中英文对照

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: