mysql ibdata1坏了,无法启动服务

时间:2017-12-08 17:02:13

标签: mysql innodb recovery

我正在将旧的sql导入现有架构。但是mysql服务突然停止了。现在我无法启动该服务。似乎ibdata1文件以某种方式被破坏了。这是我得到的日志。我尝试了几种方法,比如在my.cnf中添加innodb_force_recovery,杀死所有的mysql进程。它们都不起作用。

有人可以帮忙吗?在此先感谢!!

我想我发布了错误的日志。这是真正的日志:

=======================

2017-12-08T17:56:24.927955Z 0 [注意] InnoDB:使用CPU crc32指令
2017-12-08T17:56:24.929802Z 0 [注意] InnoDB:初始化缓冲池,总大小= 128M,实例= 1,块大小= 128M
2017-12-08T17:56:24.942256Z 0 [注意] InnoDB:完成缓冲池的初始化
2017-12-08T17:56:24.961017Z 0 [注意] InnoDB:最支持的文件格式是Barracuda。
2017-12-08T17:56:24.962154Z 0 [注意] InnoDB:日志扫描过程超过检查点lsn 16417491586
2017-12-08T17:56:24.962169Z 0 [注意] InnoDB:执行恢复:扫描到日志序列号16417493278
2017-12-08T17:56:24.963433Z 0 [注意] InnoDB:数据库没有正常关机!
2017-12-08T17:56:24.963443Z 0 [注意] InnoDB:开始崩溃恢复。
2017-12-08T17:56:24.996387Z 0 [注意] InnoDB:启动一批日志记录到数据库...
InnoDB:进展百分比:70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
2017-12-08T17:56:25.501869Z 0 [注意] InnoDB:申请批量完成
2017-12-08T17:56:25.626479Z 0 [注意] InnoDB:删除了临时表空间数据文件:" ibtmp1"
2017-12-08T17:56:25.626508Z 0 [注意] InnoDB:为临时表创建共享表空间
2017-12-08T17:56:25.626637Z 0 [注意] InnoDB:设置文件' ./ ibtmp1'大小为12 MB。物理地写文件;请稍候...
2017-12-08T17:56:25.649790Z 0 [注意] InnoDB:文件' ./ ibtmp1'大小现在是12 MB 2017-12-08T17:56:25.650460Z 0 [注意] InnoDB:找到96个重做回滚段。 96个重做回滚段处于活动状态 2017-12-08T17:56:25.650469Z 0 [注意] InnoDB:32个非重做回滚段处于活动状态。
2017-12-08T17:56:25.650670Z 0 [注意] InnoDB:等待清洗开始
2017-12-08T17:56:25.655806Z 0 [ERROR] InnoDB:文件操作中的操作系统错误编号13。
2017-12-08T17:56:25.655825Z 0 [错误] InnoDB:错误表示mysqld没有该目录的访问权限。
2017-12-08 12:56:25 0x7000049f8000 InnoDB:文件fil0fil.cc第896行中的线程123145379872768中的断言失败
InnoDB:失败的断言:成功
InnoDB:我们故意生成记忆陷阱

InnoDB:向http://bugs.mysql.com提交详细的错误报告 InnoDB:如果你反复断言失败或崩溃,即使是 InnoDB:在mysqld启动后,可能会有 InnoDB:InnoDB表空间中的损坏。请参阅
InnoDB:http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html
InnoDB:关于强制恢复。
17:56:25 UTC - mysqld得到信号6;
这可能是因为你遇到了一个bug。这个二进制文件也可能是这样的 或者其中一个与之相关的图书馆是腐败的,不正确的建筑, 或配置错误。硬件故障也可能导致此错误 试图收集一些有助于诊断问题的信息 因为这是一次崩溃而且肯定是错误的,信息是 收集过程可能会失败
的key_buffer_size = 8388608
read_buffer_size = 131072
max_used_connections = 0
max_threads的= 151
THREAD_COUNT = 0
connection_count = 0
mysqld有可能最多使用 key_buffer_size +(read_buffer_size + sort_buffer_size)* max_threads = 68218 K字节的内存
希望没问题;如果没有,减少等式中的一些变量
线程指针:0x7f9792000000
试图回溯。您可以使用以下信息查找
mysqld去世的地方。如果你在此之后没有看到任何消息,那么事情就会发生 非常错误...
stack_bottom = 7000049f7e20 thread_stack 0x40000
0 mysqld 0x000000010caa714a my_print_stacktrace + 58
1 mysqld 0x000000010ca039d0 handle_fatal_signal + 688
2 libsystem_platform.dylib 0x00007fffb8d52b3a _sigtramp + 26
3 mysqld 0x000000010d3bac17 _ZZN10binary_log4Uuid9to_stringEPKhPcE11byte_to_hex + 41879
4 libsystem_c.dylib 0x00007fffb8bd7420 abort + 129
5 mysqld 0x000000010ccfd9c1 _Z23ut_dbg_assertion_failedPKcS0_m + 161
6 mysqld 0x000000010cb623bc _ZL18fil_node_open_fileP10fil_node_t + 3948
7 mysqld 0x000000010cb6d962 _ZL23fil_node_prepare_for_ioP10fil_node_tP12fil_system_tP11fil_space_t + 194
8 mysqld 0x000000010cb6e418 _Z6fil_ioRK9IORequestbRK9page_id_tRK11page_size_tmmPvS8_ + 1096
9 mysqld 0x000000010cb27073 _ZL17buf_read_page_lowP7dberr_tbmmRK9page_id_tRK11page_size_tb + 387
10 mysqld 0x000000010cb27288 _Z13buf_read_pageRK9page_id_tRK11page_size_t + 56
11 mysqld 0x000000010cb0bb7a _Z16buf_page_get_genRK9page_id_tRK11page_size_tmP11buf_block_tmPKcmP5mtr_tb + 1290
12 mysqld 0x000000010cae91e8 _Z27btr_cur_search_to_nth_levelP12dict_index_tmPK8dtuple_t15page_cur_mode_tmP9btr_cur_tmPKcmP5mtr_t + 4008
13 mysqld 0x000000010cc97824 _Z21row_search_on_row_refP10btr_pcur_tmPK12dict_table_tPK8dtuple_tP5mtr_t + 164
14 mysqld 0x000000010cc956a6 _ZL34row_purge_remove_clust_if_poss_lowP12purge_node_tm + 438
15 mysqld 0x000000010cc93a68 _Z14row_purge_stepP9que_thr_t + 1944
16 mysqld 0x000000010cc55919 _Z15que_run_threadsP9que_thr_t + 937
17 mysqld 0x000000010ccd9c4d _Z9trx_purgemmb + 2973
18 mysqld 0x000000010ccc2d57 srv_purge_coordinator_thread + 2871
19 libsystem_pthread.dylib 0x00007fffb8d5c93b _pthread_body + 180
20 libsystem_pthread.dylib 0x00007fffb8d5c887 _pthread_body + 0
21 libsystem_pthread.dylib 0x00007fffb8d5c08d thread_start + 13

试图得到一些变数 某些指针可能无效并导致转储中止 查询(0):是无效指针
连接ID(线程ID):0
状态:NOT_KILLED

1 个答案:

答案 0 :(得分:0)

在我的开发环境中,将innodb_file_format_max设置为Antelope而不是默认的Barraccuda,并将innodb_force_recovery设置为2 (SRV_FORCE_NO_BACKGROUND)之后,mysqld 10.2.17-MariaDB可以正常运行。

mysqld --innodb-force-recovery=2 --innodb-file-format-max=Antelope

innodb_force_recovery中所述,在生产中使用这种方法是不明智的。