`

非正常关机;[ERROR 2002 (HY000);mysqld无法启动;innodb recovery失败

阅读更多
os:ubuntu 11.10
db: mysql 旧5.1.61 新安装5.1.69

数据库服务器非正常关机(虚拟机重置时有数据插入或在对大表建索引),重启机器后命令行执行mysql -uusr -ppwd连接,报错[ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)],经查未启动mysql。/usr/sbin/mysqld start --user=root尝试启动mysql失败,error.log中显示innodb recovery失败。解决步骤:
0. 创建虚拟机快照(这样才能放心改)。
1. 在/etc/mysql/my.cnf中设置innodb_force_recovery=3 即可启动(我遇到的情况只有设置为3才能启动),此时只能查询和truncate表,不能执行insert、update、delete操作。
2. 将每个库依次导出(我使用了Navicat将每个库都转储成单个sql文件,然后放到/root/mysql.data-sql.bak/之下了)
3. cp -r /var/lib/mysql/* ~/mysql.bak(ibdata1和frm也备一份)
4. 删除现有mysql,清空相关目录
按照网络上的说明autoremove再安装,不成功
冲心autoremove,删掉mysql相关文件,安装 OK
5. 修改/etc/mysql/my.cnf 重启mysql service mysql restart
  字符集:(这个很重要,我就是导了一个库之后,开发连上发现乱码,只好删掉设置后重导)
    http://blog.knowsky.com/254652.htm
  默认存储引擎: 
    http://blog.csdn.net/iamduoluo/article/details/7847448
  修改InnoDB为独立表空间模式:http://linuxfun.me/?p=1263
   http://www.php-oa.com/2012/04/20/mysql-innodb_file_per_table.html
  涉及参数
    default-storage-engine=INNODB
    default-character-set = utf8
    character_set_server = utf8
    lower_case_table_names = 1
    innodb_file_per_table=1
    innodb_flush_log_at_trx_commit=0

6. 对步骤2中得到的每个sql文件创建对应数据库,再对每个数据库执行对应sql文件中的sql语句。
  mysql对特定库执行文本文件中的sql语句:
mysql -uusr -ppwd dbname</root/mysql.data-sql.bak/abc.sql


p.s.
5.1.69中不能使用ab-cd作为库名,ab_cd的库名则可以。

设置权限举例:
 grant all privileges on *.* to root@'%' identified by 'pwd' with grant option;


该虚拟机上的数据库都是开发在用,一直未做备份,导致恢复时被动。
最近打算对该虚拟机上的数据库设置备份计划;设置master-slave,提高可用性。
分享到:
评论

相关推荐

    使用innodb_force_recovery解决MySQL崩溃无法重启问题

    mysqld got signal 11 是一个关键错误,它暗示了数据库在尝试恢复过程中遇到了不可预期的问题,可能是由于日志文件损坏,导致数据库无法正常完成恢复操作,因此无法启动并提供服务。日志中的错误信息表明,数据库...

    MySQL启动报错问题InnoDB:Unable to lock/ibdata1 error

    如果这些文件损坏或无法访问,也可能导致启动失败。检查日志文件的状态。 6. **数据文件损坏**:`ibdata1`文件可能存在物理损坏,需要使用MySQL的`mysqlcheck`工具进行检查和修复。 在OS X环境下,MySQL的启动方式...

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'

    在MySQL服务器的运行过程中,可能会遇到“ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'”这样的错误。这个错误提示表明,客户端试图通过Unix域套接字(socket文件)...

    mysql error 1130 hy000:Host’localhost’解决方案

    ERROR 1130 (HY000): Host ‘localhost’ is not allowed to connect to ...” 尝试另一个mysql库中的user表,覆盖,不行,估计是版本不同 解决: 编辑 my.ini 在[mysqld]的段中加上一句:skip-grant-tables 例如: Ja

    InnoDB Operating system error number 9 Bad file descriptor

    InnoDB Operating system error number 9. [MDEV-9749] InnoDB receives 'Bad file descriptor' error, possibly related to feedback plugin Lost connection to MySQL server at 'handshake- reading initial ...

    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’

    在使用MySQL时,可能会遇到一个常见的错误:“ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’”。这个错误表明客户端无法通过Unix套接字文件与本地MySQL服务器建立...

    mysql出现ERROR 1819 (HY000)的解决方法

    首先,要解决这个问题,你需要找到MySQL的日志文件,通常位于`/var/log/mysqld.log`(这取决于你的系统配置)。你可以通过运行`select @@log_error;`命令来确认日志文件的确切位置。然后,使用`grep "password" /var...

    centos7安装数据库MySQL启动报错Job for mysqld

    在 CentOS 7 操作系统中安装 MySQL 数据库时,可能会出现启动报错的现象,报错信息为 "Job for mysqld.service failed because the control process exited with error code"。这类错误的出现绝大部分是由于 my.cnf ...

    mysql中异常错误ERROR:2002的解决方法

    在MySQL的使用过程中,有时会遇到异常错误"ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)"。这个错误通常表示客户端无法通过套接字文件与MySQL服务器...

    mysql 断电不能启动

    在MySQL服务器运行过程中,如果突然遭遇断电等情况导致服务器非正常关闭,可能会引发数据库无法再次启动的情况。根据提供的日志信息,我们可以看到MySQL在启动时遇到了一系列问题,并最终在尝试恢复未提交的事务时...

    mysql启动-连接失败两例.txt

    如果没有这个文件,MySQL 可能会因为找不到所需的二进制日志文件而启动失败。 - **解决方法**: - 如果有备份的 `mysql-bin.index` 文件,可以从备份中恢复。 - 如果没有备份,可以尝试重新创建一个空的 `mysql-...

    mysql错误处理之ERROR 1786 (HY000)

    本文将深入探讨MySQL中的一个特定错误——ERROR 1786 (HY000),这是在执行某些特定类型的SQL语句时可能会遇到的问题。我们将讨论错误的产生原因、影响以及如何解决。 错误1786 (HY000)主要出现在MySQL 5.6.14及更高...

    MySQL服务器登陆故障ERROR 1820 (HY000)的解决方法

    [mysqld] default_password_lifetime=0 ``` 之后重启MySQL服务使更改生效。 6. **注意安全**:虽然禁用`default_password_lifetime`可以避免频繁的密码更改,但这也降低了系统的安全性。建议定期手动更改敏感...

    有效解决ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (111)

    在本文中,我们将深入探讨如何有效解决“ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (111)”这个错误,它通常发生在尝试连接到本地MySQL服务器时失败的情况。 首先,这个错误代码...

    MySQL Error Code文档手册

    * Error 1009:SQLSTATE: HY000 (ER_DB_DROP_DELETE) Message: Error dropping database (can't delete '%s', errno: %d) * Error 1010:SQLSTATE: HY000 (ER_DB_DROP_RMDIR) Message: Error dropping database (can...

    MySQL错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket

    MySQL数据库是我们日常运维工作中经常会使用的一个重要组件,它在运行过程中可能会出现各种问题,而错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket是一个比较常见的连接失败错误。...

Global site tag (gtag.js) - Google Analytics