首页
学习
活动
专区
工具
TVP
发布

深入排查 MySQL 宕机的事故

原理如下图所示: 添加描述 节点崩了,部分流量打到主节点 但是最近遇到一个问题,MySQL 节点上的服务无缘无故的崩了,查看日志也找不到什么端倪。...为了保证节点的可用性,我们使用了 Keepalived 软件来监测节点存活状态,如果节点崩了,则自动重启 MySQL 容器。...我们项目采用的是第二种方案,涉及到 I/O 密集型的查询工作就交给 MySQL 库去处理。 添加描述 部分读写分离 三、节点的高可用如何保证?...3.1 保证节点的可用性 采用 keepalived 自动检测 MySQL 服务是否正常,如果不正常,自动重启 MySQL 容器。...这次的节点只作为备库,没有切换到主库的要求,所以在主库宕机后,不需要接管读写的流量。 4.1 启动 keeaplived 服务以及开机自启动 安装好 keepalived 之后,执行以下命令启动。

49231
您找到你想要的搜索结果了吗?
是的
没有找到

Mysql宕机临时处理方案

在日常开发中,难免会遇到业务高峰期,到时mysql不可用,但是这个时候领导肯定要求的最低限度,就是让业务跑起来,今天我们就说说有哪些方案可以临时解决这种问题 短连接 正常的短连接就是连接数据库后,执行少量的...sql,下次在使用的时候,再次连接,但是这种情况,当遇到业务高峰期的时候,就有可能导致mysql不可用,我们在之前的文章中知道,连接是一个很复杂的过程,成本很高,不但要进行权限的验证,还要获取这个连接数据的读写权限...看到 trx_mysql_thread_id=4,就是上面id=4线程在事务中....就是我们在服务端进行kill connections+id 的时候,客户端是不知道的,如果客户端在拿着断开的连接操作sql,就会报错ERROR 2013 (HY000): Lost connection to MySQL...,导致性能问题 QPS突增导致性能问题 慢查询性能问题 数据导致性能问题,一般有三类 索引设计错误 sql没有写好 数据库索引选择错误 我们按照上面三类情况,分别给出解决方案 索引设计错误 我们在mysql5.6

1.3K20

GDB 验证MYSQL异常宕机恢复

当用户发出commit的时候, mysql服务器宕机了, 下次启动的时候是回滚还是恢复呢....图片 强制kill掉mysqld 图片 启动mysqld 验证数据 发现有数据, 说明启动的时候恢复了数据 图片 结论 说明binlog写完之后宕机, 下次启动就能正常恢复. binlog未写宕机,下次启动就会回滚...主要是因为binlog要用来做主从,一但写了binlog,那么库就可能已经有数据了, 此时回滚的话,主从数据就不一致了, 所有得提交....其实还可以模拟下binlog写一半的时候宕机会咋样, 有兴趣的自己去试试吧....下面的刷redo时间均指的在刷binlog前 宕机点 相关代码 下次重启回滚还是提交 刷redo前 MYSQL_BIN_LOG::process_flush_stage_queue 回滚 刷redo后

1.2K160

Redis中主、宕机如何恢复?

来源 | 程序员老鬼 正文 1、什么是哨兵 哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个: 监控主数据库和数据库是否运行正常; 主数据出现故障后自动将从数据库转化为主数据库...9059917216012421e8e89a4aa02f15b75346d2b7 为master数据库添加了一个监控 发现了2个slave(由此可以看出,哨兵无需配置slave,只需要指定master,哨兵会自动发现slave) 5、宕机及恢复...20:09:33.509 # +sdown slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6379 说明已经监控到slave宕机了...6、主宕机及恢复 哨兵控制台打印出如下信息: 2989:X 05 Jun 20:16:50.300 # +sdown master taotaoMaster 127.0.0.1 6379  说明master...服务已经宕机 2989:X 05 Jun 20:16:50.300 # +odown master taotaoMaster 127.0.0.1 6379 #quorum 1/1  2989:X 05

52420

Redis中主、宕机如何恢复?

1、什么是哨兵 哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个: 监控主数据库和数据库是否运行正常; 主数据出现故障后自动将从数据库转化为主数据库; 2、原理 单个哨兵的架构:...9059917216012421e8e89a4aa02f15b75346d2b7 为master数据库添加了一个监控 发现了2个slave(由此可以看出,哨兵无需配置slave,只需要指定master,哨兵会自动发现slave) 5、宕机及恢复...20:09:33.509 # +sdown slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6379 说明已经监控到slave宕机了...6、主宕机及恢复 哨兵控制台打印出如下信息: 2989:X 05 Jun 20:16:50.300 # +sdown master taotaoMaster 127.0.0.1 6379 说明master...服务已经宕机 2989:X 05 Jun 20:16:50.300 # +odown master taotaoMaster 127.0.0.1 6379 #quorum 1/1 2989:X 05

81820

Redis中主、宕机如何恢复?

1、什么是哨兵 哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个: 监控主数据库和数据库是否运行正常; 主数据出现故障后自动将从数据库转化为主数据库; 2、原理 单个哨兵的架构:...9059917216012421e8e89a4aa02f15b75346d2b7 为master数据库添加了一个监控 发现了2个slave(由此可以看出,哨兵无需配置slave,只需要指定master,哨兵会自动发现slave) 5、宕机及恢复...20:09:33.509 # +sdown slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6379 说明已经监控到slave宕机了...6、主宕机及恢复 哨兵控制台打印出如下信息: 2989:X 05 Jun 20:16:50.300 # +sdown master taotaoMaster 127.0.0.1 6379 说明master...服务已经宕机 2989:X 05 Jun 20:16:50.300 # +odown master taotaoMaster 127.0.0.1 6379 #quorum 1/1 2989:X 05

95320

语雀文档宕机聊聊 CAP 定理

背景 最近蚂蚁集团旗下的在线文档产品-《语雀文档》突发数据故障,导致系统宕机近 8 个小时。所有用户的在线文档及重要资料都无法打开。...图中我们逐个分析。 首先是应用程序 bug,任何程序员都不能保证一辈子不写一两个 bug。这就导致图中应用程序 s1 或者 s2 故障。...官方通报的事件故障处理过程来看,系统发生故障的根本原因是图中的 D1 或者 D2 出问题了。直接导致数据存储服务器故障。这时候已经别无选择了,只能停服修数据了。...开始恢复到最终恢复完成并通过数据校验,耗时近 7 个小时,很有可能是系统缺少热备数据,不能及时切换,只能从定时备份的冷备中恢复数据。...前 3 点都是保证系统操作流程的规范性,第 4 点是架构设计出发,增加系统的高可用性。

529172

操作系统宕机MySQL数据找回记录

一、概述 如果Linux操作系统宕机,启动不了,救援模式(rescue installed system)也行不通的时候,那么该机器上的MySQL数据还能恢复吗?如果能,怎么恢复呢?...二、环境介绍 准备两台虚拟,虚拟软件为virtualbox。 IP 192.168.56.81 该虚拟机上面运行了MySQL,后面模拟这个机器崩溃,然后将MySQL数据抢救回来。...“81”上的MySQL数据库: ? IP 192.168.56.71 该虚拟为新机器,后面需要将“81”上的数据库迁移到“71”这台机器上。...关闭故障虚拟“81”,选择强制退出。 ? 将故障虚拟“81”的硬盘挂载到新的虚拟“71”上,启动新的虚拟“71”。 ? 通过lsblk能看到sdb就是新挂载的磁盘。 ?...首先在新的虚拟“71”上面安装跟故障虚拟中相同版本的MySQL(安装过程略……)。 查看原MySQL的参数文件,确定MySQL日志文件和数据文件的目录。

91250

操作系统宕机MySQL数据找回记录

一、概述 如果Linux操作系统宕机,启动不了,救援模式(rescue installed system)也行不通的时候,那么该机器上的MySQL数据还能恢复吗?如果能,怎么恢复呢?...二、环境介绍 准备两台虚拟,虚拟软件为virtualbox。 IP 192.168.56.81 该虚拟机上面运行了MySQL,后面模拟这个机器崩溃,然后将MySQL数据抢救回来。...“81”上的文件: “81”上的MySQL数据库: IP 192.168.56.71 该虚拟为新机器,后面需要将“81”上的数据库迁移到“71”这台机器上。...关闭故障虚拟“81”,选择强制退出。 将故障虚拟“81”的硬盘挂载到新的虚拟“71”上,启动新的虚拟“71”。 通过lsblk能看到sdb就是新挂载的磁盘。...首先在新的虚拟“71”上面安装跟故障虚拟中相同版本的MySQL(安装过程略……)。 查看原MySQL的参数文件,确定MySQL日志文件和数据文件的目录。

1.4K50

MySQL - 高可用性:少宕机即高可用?

另外,我们上面给可用性定义成了 “宕机时间”,但实际上可用性还应该包括应用是否能以足够好的性能处理请求。对于一个大型服务器而言,重启 MySQL 后,可能需要几个小时才能预热数据以保证请求的响应时间。...另外一个导致宕机的主要原因是缺少严格的评估。例如因为疏忽没有确认备份是否是可恢复的。 还有就是可能没有准确的监控 MySQL 的相关信息。...因此,只要我们多做些针对性的工作,就可以避免很多宕机时间。具体可以以下措施着手: 测试恢复工具和流程,包括备份中恢复数据。 遵从最小权限原则。 保持系统干净、整洁。...可以以下措施着手: 共享存储或磁盘复制 MySQL 同步复制 2) 如何保证系统的故障转移和恢复能力? 在开始这个话题之前,我们先来认识下什么是 “故障转移”。...4 总结 可用性用宕机时间 n 个 9 来衡量。 实现可用性平均失效时间和平均恢复时间入手。

1.5K20

知乎宕机说起,闲聊设计原则与优化方法

闲言碎语说几句,一点个人不成熟的看法,想哪写哪,没有逻辑 今天中午知乎又一次宕机,访问返回502错误,有网友提问:知乎作为一个问答内容管理系统,技术上有什么难点?为啥叕崩了?...对于系统和架构,没有最好的,只有最合适的,这个合适从哪里来,就是随着项目的不断发展而逐渐演变而来的,所以好好做好当下的系统架构设计即可,遵循简单原则,快速迭代 体验优化 对于一些中小型的网站该如何降低宕机概率...,单台nginx的处理能力都能达到数万并发,如果带宽管够,是不太会被打挂的 页面静态化,动静分离的方式面临着一个至关重要的问题,就是当动态服务宕机时,页面没有数据显示不完整,更进一步的优化是将静态页面+...动态数据做整合直接生成纯静态的页面,实际上很多新闻网站就是这么做的,这样的话即便是动态服务宕机用户依然可以正常查看已经生成好的数据,只是例如回复、点赞之类动态交互功能无法使用了,体验可以得到进一步提升...我们知道保证系统不宕机不太可能,但致力于提供稳定的服务,减少宕机的次数和时间理应作为一个重要指标受到所有工程师的重视

42720

博文|Zabbix单点到无宕机集群,质的改变!

例如,使用proxy代理将被动检查“转变”为主动检查,或Zabbix server向proxy代理移动部分负载。 通常情况下如图所示: ?...这意味着,即使设法在一秒内更新Proxy配置,仍然必须以某种方式将每个主机Proxy 1-a移动到Proxy 1-b,以便进行监控。...步骤四:将所有主机故障proxy移动到对应切换到对应的proxy 一旦步骤二中得知ProxyID,应在步骤四内进行以下步骤: 获取proxy本代理本身的HostID 使用函数host.get并过滤proxy...数组中移除HostID 步骤4.2构建的数组中移除步骤4.1的宿主机以获得干净的列表。 完成所有步骤后,将得到一个由所有主机所组成的数组。...如果步骤4.3开始循环该数组,结果将是所有主机故障proxy切换到运行的proxy。

68420

在 Laravel 中当 MySQL 异常宕机时强制返回空数据

起因 之前线上遇到一个问题, 就是当MySQL挂了, 然后导致整个服务崩塌, Redis在前面完全没分担任何压力....业务常规的查询逻辑如下: redis中获取数据, 有则返回 当第一步redis无数据, 去MySQL查询数据 把第二步查询到的数据写入redis 返回数据 问题分析 redis当然不会有问题, 问题是在第二步的时候...去MySQL查询数据,数据库服务已经宕机, 这时候请求阻塞住 阻塞超时,然后抛出异常,导致无法走到第三步 下一次请求来, 又继续去连接MySQL,无限阻塞,把业务服务器也拖垮 解决方案 这是我们的解决方案...当MySQL宕机强制缓存空数据到redis,允许部分页面为空.而不是无法提供服务 解决思路 设置好合理的MySQL连接超时时间 mysqlnd.net_read_timeout = 3 当数据库连接超时之后

10010

故障分析 | MySQL 故障重启后主从同步报错案例分析

故障现象 MySQL 库所在主机故障重启后,sql_thread 线程报错: root@3306 (none)> show slave status\G -- 摘取有用信息如下: Slave_IO_Running...表是 MySQL 5.7 后引入的,在 MySQL 5.6 中,库要使用 GTID ,必须要先设置 log_bin=on,log_slave_updates=on ,因为库执行过的 GTID 只保留在...变量值 mysql.gtid_executed 表读取。...MySQL 重启后,在默认参数 binlog_gtid_simple_recovery=1 时,gtid_executed 变量值最后一个 binlog 文件计算获得。...测试验证 搭建一主一测试环境,通过 sysbench 模拟主库并发插入,库主机暴力关机后,故障复现: root@mysql.sock][(none)]> select * from performance_schema.replication_applier_status_by_worker

77310

MySQL慢日志占满磁盘空间导致业务主库宕机解决

MySQL的日常维护中,我们总会遇到这样或那样的问题,对于那些经常发生且有处理经验的事故,不论是新手还是老司机都能在故障规定的容错时间内解决。...知识储备还是工作经验,可能老司机比新手强一点,但如果一个新司机没有日志排错的意识,不具备日志排错的经验,那怎么能学会弯道超车、漂移的快感。...然而当开发上线的程序有问题,SQL执行效率不高,且执行的频率非常高,这些慢SQL被记录就会存在磁盘空间被撑爆的安全隐患,从而导致数据库宕机并尝试重启且多次尝试失败,严重影响业务。...[ERROR] /opt/app/mysql/bin/mysqld: Error writing file '/opt/app/mysql/tmp/mysqld.pid' (Errcode: 28 -...[root@172-16-3-190 shells]# bash clean_mysql_slow_log.sh 1746208 5 [root@172-16-3-190 shells]# bash clean_mysql_slow_log.sh

80910

MYSQL 8 MYSQL SHELL 开始

基于mysql 5.x 大家一般都是通过mysql 客户端来管理MYSQL ,但基于ORACLE 对于MYSQL 8 整体的规划,如果仅仅基于 mysql 客户端命令来操作MYSQL 8 则就有点,不与时俱进了...,上个系列performance_schema说起还差一篇关于MYSQL 索引的问题,然后就告一段落了,那么后面会围绕着 MYSQL SHELL ,以及MYSQL 锁,锁的探查,以及问题的解决产生一个新的系列...基于MYSQL 8 后ORACLE 加大在MYSQL 各个方面的周边产品的研发,MYSQL SHELL 作为最新的控制和管理MYSQL 的一个方式的选择。...首先我们的安装我们的MYSQL SHELL ,mysql shell 一个有意思的地方是他与我们的MYSQL 的版本同时发布,如果有MYSQL 8.027 就有MYSQL shell 8.027 这个版本...-D mysql –vertical 5 通过SQL方式连入到MYSQLSHELL 后我们通过第一个简单的命令就可以获得我们的MYSQL上的一些统计信息,\status 6 在MYSQL 中运行一些

1.9K60
领券