我的编程空间,编程开发者的网络收藏夹
学习永远不晚

京东MySQL数据库主从切换自动化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

京东MySQL数据库主从切换自动化

1. 产生背景

随着京东业务的高速增长,数据的重要性对于京东来说重要程度不说自明,在信息时代,数据有着比人们更大的力量,数据库的价值可见一斑,数据库的存在为人们提供了更快的查询,那么为了更好地做到数据库的高可用,保证持续提供服务,简化DBA操作,节省数据库故障切换的时间,故开发此数据库主从切换自动化系统。

2. 实现原理

此系统基于MHA做数据库切换,结合京东数据库切换的特点,定制自己的切换系统。MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司Yoshinori Matsunobu开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,同时最大化挽回故障发生后的数据,结合zabbix监控报警,以达到真正意义上的高可用。三重检测,保证切换无误:zabbix检测,任务创建时检测,MHA检测。

3. 实现功能

此系统实现了死切(从库故障切换及回切,主库故障切换),活切(主库活切及主库回切),做到自动化、自助化、可视化切换。

4. 具体实现
4.1. 死切(故障切换)

当Zabbix自动监控系统检测到数据库故障时,会自动调故障切换程序,然后判断是主库故障,还是从库故障,分情况处理,所有的故障信息都可在DBS系统上查看

4.1.1 主库故障:

先在DBS系统上创建切换任务,另外DBA也可在故障切换页面批量添加故障主库IP,创建切换任务。然后相应DBA执行切换按钮,则会判断各种情况

4.1.1.1切换重要步骤及原则

l 探活,探活检测机制由select方式改为insert方式,这样可以包含实例夯住和硬盘只读的情况,如果没有存活的从库,则放弃本次操作并邮件和短信通知DBA手动处理。

l 选择新主库,先本地(先物理机后DOCKER,先连接数少,后QPS负载低),后异地(先物理机后DOCKER,先连接数少,后QPS负载低)原则选择目标实例

l 调MHA接口进行故障切换故障系统信息变更

a.MHA会优先使用上一步选出的从库做为新主库,否则会使用最新数据的从库提升为新主库,然后将所有其他的从库重新指向新主库。之后会调用域名切换接口,将原来故障主库下的域名,全部指向到新的主库IP上。如果MHA切换失败或MHA有告警信息,或者有域名未切换成功,都会使用邮件和短信通知DBA人工处理。

b.当MHA故障切换结束后,系统会将新主库的mysql.cnf配置文件中的read_only=1删除,并在新主库上执行reset salve all或stop slave指令。

c.调用zabbix主机改名接口,修改故障主库及新主库在zabbix监控系统中的名称。

d. 由于域名切换后非实时生效,存在时延,因此系统会对域名生效进行检查,如果2分钟内未生效,则会进行提示,需要DBA进行人工确认。

e. 最后,在资产库中更新集群信息,修改主从关系并进行数据库状态变更,更新故障信息表。同时,发送邮件和短信通知DBA故障切换完成。

f.活切可以支持多集群同时切换。

4.1.1.2 举例

例如有一主四从的集群,主库 10.66.66.66:3366故障,需要切换,如下:

京东MySQL数据库主从切换自动化

1.Zabbix自动创建任务,然后DBA执行切换

京东MySQL数据库主从切换自动化

2.选目标实例

假如例子中的4个从都是存活的,那么在此处会比较根据先本地,选出10.66.66.68:3366,10.66.66.69:3366,然后查连接数,都相同,则去查QPS,

然后比较QPS,选出QPS负载低的10.66.66.69:3366作为目标实例。

京东MySQL数据库主从切换自动化

3.切换完成结果

京东MySQL数据库主从切换自动化

4.切换的详细信息

京东MySQL数据库主从切换自动化

4.1.2从库故障(系统自动完成):4.1.2.1 切换原则

判断是否宕机实例没有域名,宕机实例设置为手动切换,宕机实例所在集群无其他正常运行实例,这些情况下会给相应的DBA发邮件及短信报警,需要DBA手动处理;

其他情况故障系统会自动处理,根据先本地(连接数少,QPS负载低),后异地(连接数少,QPS负载低)原则选择目标实例,进行域名切换,切换成功或失败都会发邮件及短信告知相应的DBA;

切换成功的从库,相应的DBA可以回切该实例。

4.1.2.2 举例

例如有一主四从的集群,从库 10.88.88.89:3366故障,需要切换,如下:

京东MySQL数据库主从切换自动化

zabbix会自动创建任务,并根据先本地后异地,然后查连接数,QPS原则,确定目标实例为10.88.88.88:3366,然后自动切换,DBA会在切换任务列表查看切换结果,鼠标悬停执行状态会显示切换的具体信息

京东MySQL数据库主从切换自动化

切换成功的任务会显示回切按钮,可以执行回切

DBA执行回切,系统会创建回切任务,并可以查看回切的具体信息

京东MySQL数据库主从切换自动化

4.2活切(一般运维停机切换)
4.2.1 批量创建任务:

输入项目里的任一IP,就可以查出该项目下的所有可用集群,然后勾选想要切换的集群,提交批量创建任务。

创建任务时可选择目标实例是本地,还是异地。然后先对目标实例探活,再根据先物理机后DOCKER,先查连接数少,后查QPS负载低的原则推荐实例。如果有异常会提示。

另外可选择切换后新主库是否为read only

4.2.2任务切换

点击切换,会批量切换本次任务,并可以进入子任务查看具体切换的每个步骤,及MHA执行的每个步骤,切换完成,会等待2分钟去校验域名是否真实切换。

切换后会有前后架构的对比。

可以kill旧主库的所有应用链接。

4.2.3 举例

有个Mysql_test项目下有2个集群,如下

集群1

京东MySQL数据库主从切换自动化

集群2

京东MySQL数据库主从切换自动化

1. 批量创建任务

选择原则根据先本地后异地,先物理机后Docker,先连接数后QPS原则,

10.66.66.66:3366选择目标主库为:10.88.88.89:3366

京东MySQL数据库主从切换自动化

10.66.55.55:3366选择目标主库为:10.88.99.91:3366

京东MySQL数据库主从切换自动化

2. 批量执行切换

京东MySQL数据库主从切换自动化

切换子任务详细信息,可查看到每个子任务的切换结果及执行步骤,前后架构

京东MySQL数据库主从切换自动化

京东MySQL数据库主从切换自动化

5. 总结

该系统不管是死切,还是活切,都已服务化,接口化,都只需最多2步(创建任务,执行切换)就可完成切换,也可以完全自动化切换(需要业务方同意,因为有些业务数据库故障后需要业务方确认切换),也可以把活切做成流程化交给业务方自助切换。目前该系统已经运行良好,极大的节省了DBA时间,更好地做到数据库的高可用,保证持续提供服务,简化DBA操作,节省数据库故障切换的时间,为京东的数据库保驾护航。

京东MySQL数据库主从切换自动化

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

京东MySQL数据库主从切换自动化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java自动化测试中多数据源如何切换

这篇文章主要介绍了Java自动化测试中多数据源如何切换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一. 用外部文件做数据驱动的基本写法1.1 我们在做数据驱动时,把数据存储
2023-05-31

怎么使用PHP实现数据库主从复制故障切换

今天小编给大家分享一下怎么使用PHP实现数据库主从复制故障切换的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、主从复制的基
2023-07-06

MySQL数据库备份恢复自动化

MySQL数据库备份恢复自动化是指通过编写脚本或使用现有的备份工具,自动执行数据库备份和恢复的过程。这样可以大大提高数据库管理的效率,减少人为错误,并确保在发生数据丢失或损坏时能够快速恢复。以下是实现MySQL数据库备份恢复自动化的几种方法
MySQL数据库备份恢复自动化
2024-10-20

快速实现数据库的转换,如从Mysql切换到Postgresql【含gif】

快速实现数据库的转换,以数据库从从Mysql切换到Postgresql为例 因为项目的需要,需要将使用的数据库A从Mysql切换到Postgresql并且合并到同一个数据库B中。 使用Navicat 快速将Mysql表快速转为Postgre
2023-08-17

python自动化之pymysql库连接mysql数据库封装成类

import pymysqlif __name__ == ‘__main__‘:host = "被访问数据库的ip地址或者域名"port = 端口号user = "连接数据库的用户名"password = "连接数据库的密码"sql = "要查询的SQL语句
python自动化之pymysql库连接mysql数据库封装成类
2014-08-04

MySQL插入锁与数据库性能调优的自动化

MySQL插入锁是一种锁机制,用于在执行INSERT操作时保护数据的完整性。在MySQL中,插入锁会锁定整个表,以确保在插入数据时不会发生并发冲突。对于数据库性能调优的自动化,可以通过使用MySQL的性能调优工具和脚本来实现。这些工具和脚
MySQL插入锁与数据库性能调优的自动化
2024-08-14

从mysql数据库读取数据表的信息,自动创建模型shell脚本

################################# # 从数据库读取数据表,                # # 并使用php think 命令批量创建模型    # ################################# ###
从mysql数据库读取数据表的信息,自动创建模型shell脚本
2015-07-15

如何利用MySQL触发器实现数据库操作自动化

标题:利用MySQL触发器实现数据库操作自动化在数据库管理中,触发器是一种强大的工具,能够帮助我们实现数据库操作的自动化。MySQL作为一款广泛应用的开源数据库管理系统,也提供了触发器功能,我们可以利用MySQL触发器来实现数据库操作的自
如何利用MySQL触发器实现数据库操作自动化
2024-03-15

visual studio 2019从mysql数据库表通过命令自动生成实体类模型

visual studio2019对sql server的支持是很好,对mysql的话就有很多的坑了,主要是版本的冲突问题,无数次失败后记录下一次成功的2大关键步骤:一、通过Nuget 安装依赖包,命令如下:Install-package mysql.data
visual studio 2019从mysql数据库表通过命令自动生成实体类模型
2021-03-26

优化数据库性能:MySQL主从复制在集群技术中的最佳使用方法

优化数据库性能:MySQL主从复制在集群技术中的最佳使用方法摘要:随着互联网的快速发展,数据库的性能问题成为了各个企业和组织关注的焦点。MySQL主从复制技术在解决数据库性能瓶颈方面发挥着重要作用。本文将介绍MySQL主从复制的概念及原理,
2023-10-22

【从0配置JAVA项目相关环境1】jdk + VSCode运行java + mysql + Navicat + 数据库本地化 + 启动java项目

从0配置JAVA项目相关环境 写在最前面一、安装Java的jdk环境1. 下载jdk2. 配置jdk3. 配置环境变量 二、在vscode中配置java运行环境1. 下载VSCode2. 下载并运行「Java Extension
【从0配置JAVA项目相关环境1】jdk + VSCode运行java + mysql + Navicat + 数据库本地化 + 启动java项目
2023-12-22

漏刻有时数据可视化大屏常见问题(9):mysql数据库.sql文件制作自动安装格式的解决方案

在数据可视化制作的过程中,数据库结构总是在不断的调整和变化中。为了给程序开发者更好的操作体验,简化操作流程,需要在程序测试完毕打包版本的时候,对数据库进行格式操作,以便完成初始化的自动安装。现就如何实现数据库自动安装格式的步骤整理如下: 导出数据 进入phpM
漏刻有时数据可视化大屏常见问题(9):mysql数据库.sql文件制作自动安装格式的解决方案
2018-07-09

编程热搜

目录