首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql ibdata1腐败

mysql ibdata1腐败
EN

Database Administration用户
提问于 2013-07-09 10:08:00
回答 1查看 32K关注 0票数 4

我不知道这是否是mysql(版本5.6.11)的错误,情况如下。今天,当我更新mysqld和kill -9并重新启动mysqld时,我发现它不能再重新启动了。在查看错误日志之后,我发现以下内容:

代码语言:javascript
复制
2013-07-09 17:04:21 7872 [ERROR] InnoDB: Tried to read 1048576 bytes at offset 2097152. Was only able to read 917504.

然后,我做了一个字符串,以跟踪哪个文件有问题。结果是ibdata1。

代码语言:javascript
复制
-rw-rw----. 1 mysql mysql   79691776 7月   9 16:51 ibdata1

为了提高性能,我将按以下方式更改日志提交。

代码语言:javascript
复制
innodb_flush_log_at_trx_commit = 2

但我不认为这会导致数据丢失,因为操作系统在mysql重新启动时不会重新启动。所以有谁能帮我找出原因(也许是杀-9?)这使得数据损坏,以及如何恢复数据,非常感谢。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2013-07-09 10:47:02

如果你没有后援。

我认为恢复数据库的推荐方法是使用MySQL =4(或更高的值)启动innodb_force_recovery,然后将数据库转储到SQL.Then,删除数据库并从备份中恢复。与其删除原始数据库,我更喜欢使用另一个名称或在另一个服务器中创建新数据库,并首先检查内容。

要遵循的

步骤

  1. 在my.cnf的mysqld部分,添加一行innodb_force_recovery = 4,然后使用/etc/init.d/mysql restart重新启动MySQL服务器。
  2. 做后援。
  3. 在其他服务器上还原并验证内容。

也请看一下迫使InnoDB恢复.

更新:关于您的评论,如何在此方面取得进展,使其不再发生,

您不应该杀死MySQL --这不是一个可能导致MySQL服务器崩溃的良好实践,每当您进行任何配置更改时,都应该按照以下步骤进行。

  1. 使用MySQL安全停止/etc/init.d/mysql stop服务器
  2. 做出改变
  3. 重启MySQL服务器
票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/45991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档