mysql binlog 丢失_mysql数据库binlog丢失引起的问题
线上某业务需要对日志信息入库并进行分析最后呈现在管理后台上。某天突然发现后台没有前一天的分析数据。首先认为是java程序问题,于是查看应用程序日志,发现数据缺失的那天应用程序日志也没有记录,很是奇怪。接着手动执行jar包,本想看屏幕输出的报错信息,结果程序刚启动运行,执行了3条入库的sql语句(insert)后便卡住不动了,反复尝试了2-3次都是这种情况,接着怀疑是远程的mysql数据库问题导致无法插入新数据。
连接到远程数据库上,首先查看磁盘的分区df-h,果然mysql所在的数据库分区(/data)磁盘空间使用率居然达到了100%,太吓人了。果断du-sch*/data定位到具体的目录下的大文件,发现均为mysql的binlog文件
每个文件均为1.1G,这是mysql数据库binlog的默认值
查看mysql错误日志,如下信息:
131019 3:00:12 [ERROR] /usr/local/mysql/bin/mysqld: Disk is full writing './mysql-bin.000261' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space)
131019 3:00:12 [ERROR] /usr/local/mysql/bin/mysqld: Retry in 60 secs. Message reprinted in 600 secs
131019 3:10:12 [ERROR] /usr/local/mysql/bin/mysqld: Retry in 60 secs. Message reprinted in 600 secs
基本可以断定是应用程序在insert新的数据时,由于磁盘空间不足导致无法写入binlog文件导致无法插入新数据。
情急之下先删除了部分binlog,后设置max_binlog_size=500M,文件被truncate了,然后重启mysql数据库,悲剧的事情发生了,数据无法正常启动,再次查看错误日志:
/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)
有时出现这个错误是文件权限不正确导致,确定了mysql-bin.index文件的权限是没有问题的,属主和属组都是mysql
关闭mysqlbinlog的功能,在/etc/my.cnf中加入log-bin=0,数据库还是无法启动。
最后查看mysql-bin.index文件里的内容,描述的binlog文件都被删除了,问题就在这里。
只有重新初始化数据库,第一次没有指定datadir重启后出错:
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
再次初始化数据库,记得在/etc/my.cnf里把log-bin=0删除或者注释,因为需要开启binlog功能,连同binlog相关参数一起初始化,否则会报错。
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql --datadir=/data/mysql/core
再次重启终于,数据终于起来了,执行应用程序入库也正常了,将之前的测试数据清除,以免插入重复数据,最后执行应用程序入库。
以上为对一次案例的排错主要过程,期间还有一些小的经过,最终把问题解决。
总结:binlog是可以关闭的,但是很少有人这么做,可以通过showvariableslike'expire_logs_days'查看binlog的过期时间;setglobalexpire_logs_days=10设置binlog的过期时间,但是一般都是会对binlog定期删除,比如7天以上的打tar包,一个月以上的删除tar包等,当然重要的需要单独保留。
mysql binlog 丢失_mysql数据库binlog丢失引起的问题相关推荐
- mysql binlog 备份_MySQL的binlog知识梳理
1.binlog概念: binlog是一个二进制格式的文件,用于记录"修改数据或可能引起数据变更"的SQL语句(查询的SQL不会记录). 2.binlog功能: (1)恢复: 利用 ...
- mysql binlog 订阅_数据库binlog订阅和消费组件canal快速入门
一.什么是canal 1.定位 Canal是阿里巴巴开源的一款基于mysql数据库binlog增量日志分析提供数据订阅和消费功能的组件 2.原理 Canal模拟MySQL Slave协议,将自己伪装成 ...
- mysql推binlog流_MySQL中binlog日记清理
以下的文章首要讲述的是对自动清理MySQL binlog日记与手动删去的实际处理完成方案的设置, 我们大家都懂得MySQL数值库从复制(replication)接纳了RBR 模式之后,binlog 的 ...
- mysql xid原理_MySQL数据库分布式事务XA实现原理分析
[IT168 技术]MySQL XA原理 MySQL XA分为两类,内部XA与外部XA;内部XA用于同一实例下跨多个引擎的事务,由大家熟悉的Binlog作为协调者;外部XA用于跨多MySQL实例的分布 ...
- mysql 从库_mysql数据库主从配置
在一篇文章<离线安装mysql数据库>,讲解了离线安装mysql数据库的过程,本文将讲解mysql数据库的主从配置方法.mysql数据库进行主从配置后,可以实现数据库的备份.同时应用也可以 ...
- mysql xa 实现_MySQL数据库分布式事务XA的实现原理分析
1 原理 关于MySQL数据库的分布式事务XA,分布式事务实现的原理,可见[3];关于MySQL XA的说明,可见[1][2]. MySQL XA分为两类,内部XA与外部XA;内部XA用于同一实例下跨 ...
- mysql case默认_MySQL数据库架构和同步复制流程
在分布式系统里面,往往制约整个系统发展的瓶颈点就是数据库,所以数据库的架构和高可用以及数据库的切分都是我们值得花大力气去学习的. 首先我们来说说数据库的架构. 1.mysql主从架构,如图: 这种架构 ...
- mysql调试问题_mysql 数据库调试分析
说明连接失败情况,客户端非法中断连接次数,我们有必要查看错误日志,错误挺多. 到时再整理提交一份错误日志表单. cat show\ status.txt | grep -i aborted | Ab ...
- mysql删除原则_MySQL数据库的增删选查
数据库是专门存储数据对象的容器,这里的数据对象包括表.视图.触发器.存储过程等,其中表是最基本的数据对象. 创建数据库 在 MySQL 数据库中存储数据对象之前,先要创建好数据库. 语法: creat ...
最新文章
- 《中国人工智能学会通讯》——7.4 语义组合
- android 去锯齿
- 美团在Redis上踩过的一些坑-2.bgrewriteaof问题
- (转)JAVA AJAX教程第三章—AJAX详细讲解
- R语言观察日志(part2)--preProcess函数
- C语言 | 内存对齐03 - 内存对齐的公式
- 路由代码WebApi设置namespace路由参数
- bbs.php168,PHP168 下载安装教程
- linux安装chrome_chrome 的安装及出现密钥问题(ubuntu16.04)
- 【SonicUI】 VS2008 SP1 编译错误处理。
- 自己动手,更换光猫,这次是吉比特H2-3换为华为MA5671。(中国移动光纤宽带)
- LikeLib:区块链+云计算的结合技术现在成熟了吗?
- Php绘制棋盘,第二次DIY棋盘,纯手工绘制完美棋盘
- 原始套接字编程——Teardrop
- 【HTML学习笔记】link标签中的href路径
- Redis设计与实现-笔记(一)
- css鼠标点击后取消光标焦点,光标设置透明
- python语言基本语句-Python中的基本语句
- 关于服务端工具gs_guc的部分解读
- realloc函数和malloc函数区别
热门文章
- R语言基于可视化进行多变量离群(Mulltivariate outliers)点检测识别:散点图可视化多变量离群点、模型平滑多变量异常检测、使用平行坐标图查看钻石数据集中的异常值
- R语言ggplot2可视化在散点图中的每个点上绘制两个错误条:常见的是垂直错误条,它对应于Y值点上的错误(error bar),添加与X轴(水平)相关的错误条(error bar)
- R语言glmnet交叉验证选择(alpha、lambda)拟合最优elastic回归模型:弹性网络(elasticNet)模型选择最优的alpha值、模型最优的lambda值,最终模型的拟合与评估
- R语言dplyr包对数据进行超前或者之后处理(lead、lag)实战
- 时间的玫瑰+但斌的投资思维
- jupyter扩展插件Nbextensions的安装、使用
- 自然语言处理NLP之语义相似度、语言模型、doc2vec
- java性能保障技术_狙击P7!阿里大佬亲授“Java性能调优技术宝典”,太完整了!...
- Keras K.switch()用法
- java ado_Java进击C#——语法之ADO.NET