首先,我的 MySQL DB 和 Linux 技能不太好。我花了好几天时间寻找解决方案,并尝试了几种方法。以下方法是我最常用的方法。
安装 MariaDB 的 SD 卡已损坏。但是,我能够恢复 /var/lib/mysql 目录。
我设置了一个新的 Ubuntu 安装和一个干净的 MySQL 数据库。将恢复的数据库目录复制到新文件夹(不带 ibdata)并重新启动数据库后,我可以看到表,但收到错误“1146 表不存在”。
然后我还复制了文件 ibdata 并更改了权限(chmod、chown、chgrp)。但之后我无法再启动 MySQL 服务。我收到以下错误:
[注意] InnoDB:如果 mysqld 执行用户被授权,则可以更改页面清理线程优先级。请参阅 setpriority() 的手册页。
[错误] InnoDB:无法以只读模式创建日志文件
[错误] InnoDB:插件初始化因错误而中止只读事务
[错误] 插件‘InnoDB’初始化函数返回错误。
[错误] 插件“InnoDB”注册为存储引擎失败。
[错误] 无法初始化内置插件。
[错误] 正在中止
我尝试了 innodb_force_recovery 0-6,但没有成功。
有人可以提示我这个错误意味着什么以及我如何恢复我的数据库吗?
答案1
看来您的 MySQL 目录处于只读模式:[ERROR] InnoDB: Cannot create log files in read-only mode
。请确保对该目录及其内部文件具有写权限。
也就是说,如果您的 SD 卡出现故障,数据本身很可能已损坏且无法修复。