mysql crash 如何导出数据库_XAMPP中MySQL数据库崩溃无法启动的探索及批量导出

本文主要介绍在XAMPP中数据库突然出现崩溃后无法启动,本人对处理方法的探索。并提供一个windows下批量导出数据库的脚本。

尝试处理流程

1. 先备份/xampp/mysql/data文件夹,如备份为databackup

2. 检查mysql错误日志。看其中的提示,如果没有error类报错,尝试A:

A1. 把原data文件夹删除,新建一个空白的data文件夹

A2. 复制/xampp/mysql/backup中所有文件(包括文件和文件夹)复制到data文件夹中

A3. 将databackup里面的所有文件夹和idatadb1文件复制到新的data文件夹中

A4. 尝试启动mysql。

3. 若有Error报错log sequence number xxx is in the future!,则尝试B:

B1. 打开my.ini在[mysqld]下面添加innodb_force_recovery=1,保存后,尝试启动mysql

B2. 如果无效,则逐个尝试2 ~ 6 ,从2开始,直到启动成功为止。

B3. 启动成功后,导出所有数据库删除原有数据库。

4. 如果1 ~ 6 全部启动失败。尝试:

C1. 从A1做到A2

C2. 将databackup里面你需要的数据库那一个文件夹和idatadb1文件复制到新的data文件夹中

C3. 尝试启动mysql,如果启动失败,更换另外一个数据库文件夹。

C4. 此步骤可排查出是哪个数据库出现问题。

探索过程

我是一个版本控,从来有新版本不用旧版本。2020年3月左右,我更新了xampp的版本到7.4.2(内置的MariaDB 10.4.11)。但是使用一段时间以后,我偶尔会发现一个问题。当进入PhpMyAdmin后,总有一个报错:

Warning in .\libraries\classes\Dbi\DbiMysqli.php#199

mysqli::query(): (HY000/1034): Index for table 'global_priv' is corrupt; try to repair it

......

......

这个错误我简单看了一下,他说是一个table需要修复,但是这个table名字明显不是我起的,所以我估计可能是phpmyadmin的某个表出现了问题。我自认为无大碍,因为其它表的处理没有问题。

数日以后,早上打开电脑,点击启动XAMPP里面的MySQL,发现启动失败,报错:

12:52:58 [mysql] Error: MySQL shutdown unexpectedly.

12:52:58 [mysql] This may be due to a blocked port, missing dependencies,

12:52:58 [mysql] improper privileges, a crash, or a shutdown by another method.

12:52:58 [mysql] Press the Logs button to view error logs and check

12:52:58 [mysql] the Windows Event Viewer for more clues

12:52:58 [mysql] If you need more help, copy and post this

12:52:58 [mysql] entire log window on the forums

首先我分析,肯定不是端口问题,然后果断看一下日志。日志里面竟然没有任何Error,只有几个Note:

InnoDB: using atomic writes.

2020-05-30 12:54:25 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions

2020-05-30 12:54:25 0 [Note] InnoDB: Uses event mutexes

2020-05-30 12:54:25 0 [Note] InnoDB: Compressed tables use zlib 1.2.11

2020-05-30 12:54:25 0 [Note] InnoDB: Number of pools: 1

2020-05-30 12:54:25 0 [Note] InnoDB: Using SSE2 crc32 instructions

2020-05-30 12:54:25 0 [Note] InnoDB: Initializing buffer pool, total size = 16M, instances = 1, chunk size = 16M

2020-05-30 12:54:25 0 [Note] InnoDB: Completed initialization of buffer pool

2020-05-30 12:54:26 0 [Note] InnoDB: Starting crash recovery from checkpoint LSN=300288

我想,几个note竟然能导致无法启动?那是不是小问题而已?

我找到xampp目录下的mysql,打开data文件夹,看到里面一堆乱七八糟的文件:

aria_log.00000001

│ aria_log_control

│ ibdata1

│ ib_buffer_pool

│ ib_logfile0

│ ib_logfile1

│ master-2020@002d05@002d11@002017@003a48@003a32@00200@0020@005bnote@005d@0020added@0020new@0020master_info@0020@0027@0027@0020to@0020hash@0020table@000d.info

│ master-2020@002d05@002d11@002017@003a48@003a32@00200&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值