服务器重启导致无法启动MySQL

今天服务器受到DDOS攻击,笔者脑残重启了一下服务器。结果造成MySQL服务器无法启动
mysql日志见下图。
160803 17:43:47 mysqld_safe Starting mysqld daemon with databases from /application/mysql/data
160803 17:43:47 [Note] /application/mysql/bin/mysqld (mysqld 5.5.49) starting as process 1975 ...
160803 17:43:47 [Warning] Using unique option prefix innodb_purge_thread instead of innodb-purge-threads is deprecated and will be removed in a future release. Please use the full name instead.
160803 17:43:47 [Note] Plugin 'FEDERATED' is disabled.
160803 17:43:47 InnoDB: The InnoDB memory heap is disabled
160803 17:43:47 InnoDB: Mutexes and rw_locks use GCC atomic builtins
160803 17:43:47 InnoDB: Compressed tables use zlib 1.2.3
160803 17:43:47 InnoDB: Using Linux native AIO
160803 17:43:47 InnoDB: Initializing buffer pool, size = 64.0M
160803 17:43:47 InnoDB: Completed initialization of buffer pool
InnoDB: Error: auto-extending data file ./ibdata1 is of a different size
InnoDB: 7296 pages (rounded down to MB) than specified in the .cnf file:
InnoDB: initial 8192 pages, max 0 (relevant if non-zero) pages!
160803 17:43:47 InnoDB: Could not open or create data files.
160803 17:43:47 InnoDB: If you tried to add new data files, and it failed here,
160803 17:43:47 InnoDB: you should now edit innodb_data_file_path in my.cnf back
160803 17:43:47 InnoDB: to what it was, and remove the new ibdata files InnoDB created
160803 17:43:47 InnoDB: in this failed attempt. InnoDB only wrote those files full of
160803 17:43:47 InnoDB: zeros, but did not yet use them in any way. But be careful: do not
160803 17:43:47 InnoDB: remove old data files which contain your precious data!
160803 17:43:47 [ERROR] Plugin 'InnoDB' init function returned error.
160803 17:43:47 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160803 17:43:47 [ERROR] Unknown/unsupported storage engine: InnoDB
160803 17:43:47 [ERROR] Aborting
160803 17:43:47 [Note] /application/mysql/bin/mysqld: Shutdown complete
160803 17:43:47 mysqld_safe mysqld from pid file /application/mysql/data/www.pid ended
实际图片:

曾试过手动启动

启动命令为:mysqld_safe–defaults-file=/data/3306/my.cnf &

停止命令为:mysqladmin -u root -poldboy123 -S /data/3306/mysql.sockshutdown


但是发现一直提示没有pid,百度了一下有一篇文章说需要删除ib_logfile0和ib_logfile1两个文件

就可以启动,对这两个文件进行了一下科普,如下:

文章


mysql的innodb中事务日志ib_logfile
事务日志或称redo日志,在mysql中默认以ib_logfile0,ib_logfile1名称存在,可以手工修改参数,调节
开启几组日志来服务于当前mysql数据库,mysql采用顺序,循环写方式,每开启一个事务时,
会把一些相关信息记录事务日志中(记录对数据文件数据修改的物理位置或叫做偏移量);
作用:在系统崩溃重启时,作事务重做;在系统正常时,每次checkpoint时间点,会将之前写入事务
应用到数据文件中。
引入一个问题:在m/s环境中,innodb写完ib_logfile后,服务异常关闭,会不会主库能用ib_logfile恢复数据,而
binlog没写导致从库同步时少少这个事务?从而导致主从不一致;
redo日志写入方式:
1.ib_logfile写入当前事务更新数据,并标上事务准备trx_prepare
2.写入bin-log
3.ib_logfile当前事务提交提交trx_commit
恢复方式:
如果ib_logfile已经写入事务准备,那么在恢复过程中,会依据bin-log中该事务是否存在恢复数据。
假设:
1)结束后异常,因没有写入bin-log,从库不会同步这个事务,主库上,重启时,在恢复日志中这个

事务没有commit,即rollback这个事务.
2)结束后异常,这会bin-log已经写入,从库会同步这个事务。主库依据恢复日志和bin-log,也正常恢复此事务
综上描述:bin-log写入完成,主从会正常完成事务;bin-log没有写入,主从库rollback事务;不会出现主从库不一致问题.
相关参数(全局&静态):
innodb_log_buffer_size
innodb_log_file_size
innodb_log_files_in_group
innodb_log_group_home_dir
innodb_flush_log_at_trx_commit
innodb_log_buffer_size:事务日志缓存区,可设置1M~8M,默认8M,延迟事务日志写入磁盘,
把事务日志缓存区想象形如”漏斗”状,会不停向磁盘记录缓存的日志记录,而何时写入通过参数
innodb_flush_log_at_trx_commit控制,稍后解释,启用大的事务日志缓存,可以将完整运行大事
务日志,暂时存放在事务缓存区中,不必(事务提交前)写入磁盘保存,同时也起到节约磁盘空间占用;
innodb_log_file_size:控制事务日志ib_logfile的大小,范围5MB~4G;所有事务日志ib_logfile0+
ib_logfile1+..累加大小不能超过4G,事务日志大,checkpoint会少,节省磁盘IO,但是大的事务日
志意味着数据库crash时,恢复起来较慢.
引入问题:修改该参数大小,导致ib_logfile文件的大小和之前存在的文件大小不匹配
解决方式:在干净关闭数据库情况下,删除ib_logfile,而后重启数据库,会自行创建该文件;
innodb_log_files_in_group:DB中设置几组事务日志,默认是2;
innodb_log_group_home_dir:事务日志存放目录,不设置,ib_logfile0…存在在数据文件目录下
innodb_flush_log_at_trx_commit:控制事务日志何时写盘和刷盘,安全递增:0,2,1
事务缓存区:log_buffer;

0:每秒一次事务缓存区刷新到文件系统,同时文件系统到磁盘同步,但是事务提交时,不会触发log_buffer到文件系统同步;
2:每次事务提交时,会把事务缓存区日志刷新到文件系统中去,且每秒文件系统到磁盘同步;
1:每次事务提交时刷新到磁盘,最安全;
适用环境:
0:磁盘IO能力有限,安全方便较差,无复制或复制延迟可以接受,如日志性业务,mysql损坏丢失1s事务数据;
2:数据安全性有要求,可以丢失一点事务日志,复制延迟也可以接受,OS损坏时才可能丢失数据;
1:数据安全性要求非常高,且磁盘IO能力足够支持业务,如充值消费,敏感业务;
文章地址

由于经费原因,没有做CDN,所以扛不住DDOS攻击实属正常
下图是阿里云发监控:
网站流量监控
小结: 
防治DDOS的前提是必须要做好监控!
另外在受到攻击,重启服务器是没有作用的,在实际生产环境是不可以重启的。这点大家一定要冷静!

由于作者手残不小心rm -rf ib* 因为表示Innbodb表,所以导致所有数据全都被删除(已经哭晕在厕所)
 跟我一起忘记rm 命令把!!!!!!!!
ibdata用来储存文件的数据
而库名的文件夹里面的那些表文件只是结构而已

对于DDOS防范可以参考下面文章:
网站DDOS攻击防护实战老男孩经验心得分享
625某电商网站数据库宕机故障解决实录
http://oldboy.blog.51cto.com/2561410/1431161
http://oldboy.blog.51cto.com/2561410/1431172
关于MySQL引擎[innodb文章]
http://www.abcdocker.com/abcdocker/77

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

架构师之DNS实战

架构师 DNS实战 老男孩教育 DNS简介 1. DNS的出现及演化 网络出现的早起是使用IP地址通讯的,那是就几台主机通讯。但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和W…

打包jar文件后的spring部署及hibernate自动建表经验总结

楔子 用springhibernate做一个服务器运行程序,在部署到服务器时(打包成jar,在window server2008下运行),出现了以下两个纠结问题: 1. 加载不了Spring容器 2. hibernate.hbm2ddl.auto 到了服务器不能自动建表…

我是一个线程 [转]

我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里我发现了很多和我一模一样的同伴。 我身边的同伴0x6900 待的时间比较长,他带着沧桑的口气对我说:“我们线程的宿命就是处理包…

自动化运维之–Cobbler

Cobbler 自动化 Cobbler简介 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开发,小巧轻便(才15k行python代码),使用简单的命令即可完成PXE网络安装环境的配置&…

开源jumpserver 堡垒机搭建

一、环境 CentOS 6.x x86_64 mini service iptables stop 关闭SELinux的方法: 修改/etc/selinux/config文件中的SELINUX”” 为 disabled ,然后重启。 如果不想重启系统,使用命令setenforce 0 1.指定yum源 wget -O /etc/yum.repos.d/e…

Shell 变量及函数讲解 [2]

Shell 变量的输入 Shell变量除了可以直接赋值或脚本传参外,还可以使用read命令从标准输入获得,read为bash内置命令,可以通过help read查看帮助【语法格式】read [参数] [变量名]【常用参数】-p prompt:设置提示信息-t timeout&…

java大作业私人管家系统_重庆管家婆软件丨管家婆工贸PRO的E-MES管理详解

其实,ERP和MES在制造操作中扮演着独立而又互补的角色。ERP能将企业所有方面的数据进行实时、可用的全面集成,为管理决策提供高效、准确的业务决策支持;MES则能加强MRP计划的执行,把MRP计划同车间作业现场控制通过执行系统联系起来。这些“现场…

监控体系 [精]

监控体系 zabbix 监控对象:     1. 监控对象的理解:CPU是怎么工作的,原理     2. 监控对象的指标:CPU使用率 CPU负载 CPU个数 上下文切换     3. 确定性能基准线:怎么样才算故障?CPU负载多…

vs 设置起始页不见了_发朋友圈屏蔽爸妈,结果不小心设置成了仅家人可见...场面一发不可收拾哈哈哈哈!...

一提到爸妈的朋友圈,就会想到养生鸡汤,中老年流量谣言,土味表情包而出于保护个人隐私拒绝被爸妈误解而遭受灵魂拷问的考虑很多人选择了两全其美的分组法给家人看到阳光可爱正能量的一面沙雕的一面只展现给沙雕网友们可如果不小心把屏蔽的内容…

KVM 安装

KVM介绍 Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之…

彼聆智能语音机器人_电销行业的人工智能:智能语音电话机器人

随着人工智能的发展,越来越多的机器人出现在我们的日常生活中,用于电话营销公司的自动打电话机器人、快递公司用来送快递的机器人、餐厅里用来上菜的机器人,最近更是有一款会后空翻的机器人。机器人正活跃在各行各业中,代替人类去…

Shell 基础介绍 [1]

本文目录1.什么是Shell?2.脚本语言类型3.其他常用的脚本语句种类4.Shell脚本的建立和执行5.Shell 变量类型6.普通变量7.Shell 特殊重要变量8.Shell进程状态变量9.Parameter Expansion10.扩展:其他变量的替换11.变量的数值(整数)计…

c++创建二叉树_数据结构:查找(4)|| 平衡二叉树

在介绍平衡二叉树之前,应该先了解平衡因子的概念,平衡因子定义为左子树深度减去右子树深度,这个值的绝对值越大,非常容易理解它就对应着越不平衡的情况。一棵平衡的二叉树的平衡因子只能是1,0,-1如何构建一…

华睿相机sdk 开发_索尼发布相机远程操作SDK(软件开发工具包)

索尼从2020年12月9日开始,向开发者免费提供针对索尼数码相机的软件开发工具包“ Camera Remote SDK” 1.03版。“ Camera Remote SDK”开发的软件可以远程更改相机设置、并执行诸如快门释放,实时取景监视(如取景和对焦)之类的操作。支持的操作系统包括Wi…

Linux 字体颜色设置

本文主要介绍Linux 字体颜色的调整,常用于shell脚本当中。我们举一个例子:echo-e"\033[44;37;5m ME \033[0m COOL" 以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符“ME”,然后重新设置屏幕…

利用Unity实现AOP

.NET程序中,可以利用Unity来实现AOP,用来进行日志、缓存或权限的处理。这里我们来写一个简单的程序,让其实现简单的AOP功能。 1.使用NuGet,在项目中获取Microsoft.Practices.Unity。 2.新建一个ITalk类及其实现 public interface …

javascript数组的各种操作

用 js有非常久了,但都没有深究过js的数组形式。偶尔用用也就是简单的string.split(char)。这段时间做的一个项目,用到数组的地方非常多,自以为js高手的自己竟然无从下手,一下狠心,我学!呵呵。学了之后才知道…

老男孩Shell企业面试题30道 [答案]

老男孩Shell企业面试题 shell 2016年9月7日 本文来自于老男孩教育,未经本人同意,禁止转载!否则追究法律责任。 原文:http://oldboy.blog.51cto.com/2561410/1632876 企业面试题1: (生产实战案例)&#x…

深度优化LNMP之Nginx [1]

Nginx基本安全优化 1.调整参数隐藏Nginx版本号信息一般来说,软件的漏洞都和版本有关,因此我们应尽量隐藏或清除Web服务队访问的用户显示各类敏感信息(例如:Web软件名称及版本号等信息),这样恶意的用户就很难…

5阶无向完全图_运动轿跑风 全新上汽名爵5预告图发布

【太平洋汽车网 新车频道】近日,上汽名爵官方发布了一组全新一代名爵5(询底价|查参配)的预告图。从图片可以看出,换代而来的全新名爵5采用最新的家族化设计语言,外观风格与新款名爵6较为接近,采用轿跑式溜背…