首页 > 解决方案 > 在新的 MySQL 安装上使用以前的 MySQL 数据文件夹

问题描述

如果我能做一个正确的SQL dump/backup,我会做的,但OS放弃了,只能登录SafeMode,我无法启动MySQL server. 因此,我只能手动备份文件目录。

我现在正在新安装的服务器上运行Windows并尝试启动这台旧服务器几分钟,这样我就可以登录Workbench并制作一个正确的SQL database dump,稍后我将import在新MySQL安装上进行安装。

因此,将上述文件移动到各自的位置 -Program FilesProgramData.

打开PowerShell(具有管理员权限)并执行:

mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0" --console

我在屏幕上看到了几百行,其中包含以下内容:

2020-04-10T05:28:56.725818Z 0 [ERROR] [MY-011972] [InnoDB] Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB log files. Please refer to http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html for information about forcing recovery.
2020-04-10T05:28:56.734460Z 0 [ERROR] [MY-011971] [InnoDB] Tablespace 'innodb_undo_001' Page [page id: space=4294967279, page number=5] log sequence number 1339677380 is in the future! Current system log sequence number 19081380.

其次是:

2020-04-10T05:28:56.740834Z 0 [ERROR] [MY-011972] [InnoDB] Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB log files. Please refer to http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html for information about forcing recovery.
2020-04-10T05:28:56.757259Z 0 [System] [MY-010229] [Server] Starting crash recovery...
2020-04-10T05:28:56.769215Z 0 [System] [MY-010232] [Server] Crash recovery finished.
2020-04-10T05:28:57.695386Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2020-04-10T05:28:57.765911Z 0 [System] [MY-010931] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: ready for connections. Version: '8.0.13'  socket: ''  port: 3306  MySQL Community Server - GPL.
2020-04-10T05:28:57.926850Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060

太好了,至少它正在运行。

我现在可以connect但不行databases

更新:

从数据目录中删除了 innodb_undo_001 和 innodb_undo_002 文件并重新启动。

得到这个:

PS C:\Program Files\MySQL\MySQL Server 8.0\bin> .\mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console                                                               2020-04-10T05:55:29.555478Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2020-04-10T05:55:29.558313Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.13) starting as process 3028
2020-04-10T05:55:31.394427Z 1 [Warning] [MY-012351] [InnoDB] Tablespace 1, name 'sys/sys_config', file '.\sys\sys_config.ibd' is missing!
2020-04-10T05:55:32.808645Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2020-04-10T05:55:32.856154Z 0 [System] [MY-010931] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: ready for connections. Version: '8.0.13'  socket: ''  port: 3306  MySQL Community Server - GPL.
2020-04-10T05:55:32.898055Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060

正在运行但不存在数据库。

尝试了 Innodb-force-recovery 方法 - 没有任何反应。和之前一样。

标签: mysql

解决方案


好的,假设所有文件都没有损坏,您可以尝试以下操作:

  1. 创建一个新文件夹(如果可能,在不同的驱动器中)。将其命名为test或其他名称。然后将目录中的所有文件复制C:\Program Files\MySQL\MySQL Server 8.0到新文件夹中。

在此处输入图像描述

*注意:如果文件夹中没有 my.ini 文件,请将其从C:\ProgramData\MySQL\MySQL Server 8.0目录复制到文件夹中。

  1. 打开 my.ini 文件并更改以下内容: 在此处输入图像描述

  2. 回到 my.ini 文件的顶部并更改: 在此处输入图像描述 在上面更改后,将整行复制mysqld --install MySQLXY ..到末尾。不要#在开头复制第一个。然后保存 my.ini 文件。

  3. 以管理员身份打开命令提示符 (cmd),然后执行以下操作: 在此处输入图像描述

*使用 cmd 手动安装服务。

  1. 转到服务(键盘快捷键窗口按钮+R然后键入services.msc然后按ENTER或确定),找到新安装的MySQL服务并单击start

  2. 尝试连接到数据库。


推荐阅读