MySQL8.0数据因掉电导致无法使用问题处理

周末自用的EXSI服务器因电源问题导致硬盘故障,换了新盘之后,开机发现JIRA服务器的数据库断电的时候,有个事务没做完就断电了,正常情况下再次启动数据库的时候,会进行事务恢复,但是,好巧不巧有个表的 page 坏了,重做事务的时候做不了。
官方的意思:大概是没救了!只能导出数据重新安装,问题是已经无法正常启动了,MySQLDump无法备份;

解决步骤

1、为了减少对数据库造成更大的损耗,彻底停止数据库;

[root@houyuxi]# systemctl stop mysqld

2、编辑MySQL的配置文件并在配置文件中的[mysqld]中添加:innodb_force_recovery = 6,将MySQL启动模式修改为只读,

[root@houyuxi]# vim /etc/my.cnf.d/mysql.server.cnf


[mysqld]
innodb_force_recovery = 6

3、重新启动MySQL数据库

[root@houyuxi]# systemctl start mysqld

4、使用MySQLDump导出你需要的库

[root@houyuxi]# mysqldump -uroot -p密码 [database name] > [dump file]

5、重新安装数据库;

6、导入备份的数据库

[root@houyuxi]# mysqldump -uroot -p密码 [database name] < [dump file]

 innodb_force_recovery参数说明 

innodb_force_recovery影响整个InnoDB存储引擎的恢复状况,默认值为0,表示当需要恢复时执行所有的恢复操作!!
当不能进行有效的恢复操作时,Mysql有可能无法启动,并记录下错误日志。
 
innodb_force_recovery可以设置为1-6,大的数字包含前面所有数字的影响。
当该参数的数值设置大于0后,可以对表进行select,create,drop操作,但insert,update或者delete这类操作是不允许的。
 
innodb_force_recovery=0   表示当需要恢复时执行所有的恢复操作;
innodb_force_recovery=1   表示忽略检查到的corrupt页;
innodb_force_recovery=2   表示阻止主线程的运行,如主线程需要执行full purge操作,会导致crash;
innodb_force_recovery=3   表示不执行事务回滚操作;
innodb_force_recovery=4   表示不执行插入缓冲的合并操作;
innodb_force_recovery=5   表示不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交;
innodb_force_recovery=6   表示不执行前滚的操作,强制重启!

在主从库出现这种情况时,如果配置文件里之前就有这个参数,则尝试将该参数值修改为0或6,依次尝试重启。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
简单性 Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持goto语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。 面向对象 Java是一个面向对象的语言。对程序员来说,这意味着要注意其中的数据和操纵数据方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据方法的集合。数据方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。 Java还包括一个类的扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。 分布性 Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。 网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。 编译和解释性 Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-time system)的系统上运行。 在一个解释性的环境中,程序开发的标准“链接”阶段大大消失了。如果说Java还有一个链接阶段,它只是把新类装进环境的过程,它是增量式的、轻量级的过程。因此,Java支持快速原型和容易试验,它将导致快速程序开发。这是一个与传统的、耗时的“编译、链接和测试”形成鲜明对比的精巧的开发过程。 稳健性 Java原来是用作编写消费类家用电子产品软件的语言,所以它是被设计成写高可靠和稳健软件的。Java消除了某些编程错误,使得用它写可靠软件相当容易。 Java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显式的方法声明,它不支持C风格的隐式声明。这些严格的要求保证编译程序能捕捉调用错误,这就导致更可靠的程序。 可靠性方面最重要的增强之一是Java的存储模型。Java不支持指针,它消除重写存储和讹误数据的可能性。类似地,Java自动的“无用单元收集”预防存储漏泄和其它有关动态存储分配和解除分配的有害错误。Java解释程序也执行许多运行时的检查,诸如验证所有数组和串访问是否在界限之内。 异常处理是Java中使得程序更稳健的另一个特征。异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。
### 回答1: 当MySQL 8.0宕机导致数据文件损坏时,可以通过以下步骤进行数据文件恢复: 1. 停止MySQL服务:首先,停止MySQL数据库服务,以确保在恢复过程中没有新的写入操作。 2. 备份数据文件:在通过文件恢复之前,应该先备份损坏的数据文件,以防止进一步的数据丢失。 3. 检查错误日志:查看MySQL错误日志,它会记录关于宕机和数据文件损坏的信息。根据错误日志中的提示,了解具体的数据文件损坏情况。 4. 使用数据文件恢复工具:MySQL提供了一些内置工具来恢复损坏的数据文件,如"mysqlcheck"和"myisamchk"。根据错误日志的提示,选择合适的工具对损坏文件进行修复。 5. 修复数据文件:根据提示使用相应的工具对损坏的数据文件进行修复。这些工具会尝试自动修复损坏的数据文件,并恢复它们的完整性。在修复之前,建议先进行数据文件备份。 6. 启动MySQL服务:完成数据文件修复后,重新启动MySQL数据库服务。 7. 数据一致性检查:在启动MySQL服务之后,建议对数据库中的数据进行一致性检查,确保数据的完整性和正确性。 8. 数据恢复验证:通过执行一些测试语句或查询来验证数据文件恢复的结果,确保数据库的功能正常并且数据已经正确恢复。 在进行MySQL 8.0宕机数据文件恢复时,要小心操作,确保对数据进行适当的备份,并参考MySQL官方文档和手册以获得更详细的指导和建议。同时,为了避免宕机和数据文件损坏的情况发生,建议定期备份数据库使用可靠的硬件设备和监控系统性能。 ### 回答2: MySQL 8.0 宕机后,进行数据文件恢复的步骤如下: 首先,需要确定数据文件的完整性。可以使用MySQL内置的工具如MySQLcheck或者InnoDB crash recovery检查数据文件是否完整。如果数据文件有损坏,需要修复损坏的文件。 其次,为了减少数据丢失的可能性,在宕机恢复之前,需要进行数据备份。可以使用MySQL的备份工具如mysqldump或者MySQL Enterprise Backup。 接下来,根据宕机原因来决定具体的恢复方法。如果是由于崩溃引起的宕机,可以使用InnoDB crash recovery工具进行自动恢复。如果宕机是由于硬件故障或者其他原因引起的,则需要使用冷备份或者热备份进行恢复。 在进行恢复过程中,可以使用MySQL内置的日志文件来回滚未完成的事务,并恢复到宕机前的状态。如果没有进行事务日志的备份,可以参考binlog来进行数据恢复。 最后,当数据库恢复完成后,需要进行一些额外的步骤,如更新MySQL的配置文件,重启MySQL服务等。 总结起来,MySQL 8.0 宕机数据文件的恢复过程包括确定数据文件完整性、数据备份、根据宕机原因选择恢复方法使用日志文件回滚事务、进行数据恢复、完成后的一些额外操作。有时候可能需要专业人士的帮助来处理复杂的情况。 ### 回答3: 当MySQL 8.0宕机时,进行数据文件恢复主要包括几个步骤。 首先,需要通过查看数据库的错误日志文件来确定宕机的原因。错误日志通常位于MySQL数据目录下,其命名通常为hostname.err。通过查看错误日志可以了解到宕机原因,并进一步确定后续操作。 接下来,需要进行MySQL实例的恢复。可以通过运行MySQL提供的备份工具mysqldump进行备份数据,或者使用复制功能(如主从复制)来实现数据的冗余。恢复时,可以运行启动命令"mysqld --skip-slave-start"来跳过启动slave线程。 在MySQL宕机后,将其重启到恢复模式下(也称为恢复状态)。 1. 首先,运行启动命令"mysqld --skip-grant-tables",此时MySQL不会验证用户登录信息,可以直接以超级用户(root)身份登录。 2. 接着,登录到MySQL服务器,运行以下命令:ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';来修改root用户的密码。 3. 运行FLUSH PRIVILEGES;来刷新权限。 4. 最后,再次重新启动MySQL服务器。 接下来,可以通过使用mysqldump等工具将备份的数据重新导入到MySQL中,或者使用复制功能来重建冗余数据。当恢复完成后,可以正常启动MySQL服务器,用户可以继续使用数据库服务。 需要注意的是,在MySQL宕机后,及时与数据库管理员或专业人员联系,以便获得更准确和专业的恢复指导和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值