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,提高可用性。
分享到:
相关推荐
mysqld got signal 11 是一个关键错误,它暗示了数据库在尝试恢复过程中遇到了不可预期的问题,可能是由于日志文件损坏,导致数据库无法正常完成恢复操作,因此无法启动并提供服务。日志中的错误信息表明,数据库...
如果这些文件损坏或无法访问,也可能导致启动失败。检查日志文件的状态。 6. **数据文件损坏**:`ibdata1`文件可能存在物理损坏,需要使用MySQL的`mysqlcheck`工具进行检查和修复。 在OS X环境下,MySQL的启动方式...
在MySQL服务器的运行过程中,可能会遇到“ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'”这样的错误。这个错误提示表明,客户端试图通过Unix域套接字(socket文件)...
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. [MDEV-9749] InnoDB receives 'Bad file descriptor' error, possibly related to feedback plugin Lost connection to MySQL server at 'handshake- reading initial ...
在使用MySQL时,可能会遇到一个常见的错误:“ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’”。这个错误表明客户端无法通过Unix套接字文件与本地MySQL服务器建立...
首先,要解决这个问题,你需要找到MySQL的日志文件,通常位于`/var/log/mysqld.log`(这取决于你的系统配置)。你可以通过运行`select @@log_error;`命令来确认日志文件的确切位置。然后,使用`grep "password" /var...
在 CentOS 7 操作系统中安装 MySQL 数据库时,可能会出现启动报错的现象,报错信息为 "Job for mysqld.service failed because the control process exited with error code"。这类错误的出现绝大部分是由于 my.cnf ...
在MySQL的使用过程中,有时会遇到异常错误"ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)"。这个错误通常表示客户端无法通过套接字文件与MySQL服务器...
在MySQL服务器运行过程中,如果突然遭遇断电等情况导致服务器非正常关闭,可能会引发数据库无法再次启动的情况。根据提供的日志信息,我们可以看到MySQL在启动时遇到了一系列问题,并最终在尝试恢复未提交的事务时...
如果没有这个文件,MySQL 可能会因为找不到所需的二进制日志文件而启动失败。 - **解决方法**: - 如果有备份的 `mysql-bin.index` 文件,可以从备份中恢复。 - 如果没有备份,可以尝试重新创建一个空的 `mysql-...
本文将深入探讨MySQL中的一个特定错误——ERROR 1786 (HY000),这是在执行某些特定类型的SQL语句时可能会遇到的问题。我们将讨论错误的产生原因、影响以及如何解决。 错误1786 (HY000)主要出现在MySQL 5.6.14及更高...
[mysqld] default_password_lifetime=0 ``` 之后重启MySQL服务使更改生效。 6. **注意安全**:虽然禁用`default_password_lifetime`可以避免频繁的密码更改,但这也降低了系统的安全性。建议定期手动更改敏感...
在本文中,我们将深入探讨如何有效解决“ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (111)”这个错误,它通常发生在尝试连接到本地MySQL服务器时失败的情况。 首先,这个错误代码...
* 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是一个比较常见的连接失败错误。...