til*_*ryj 23 mysql innodb crash
我们的生产 mysql 服务器刚刚崩溃并且无法恢复。它给出了段错误。我尝试了重新启动,只是不知道还能尝试什么。这是堆栈跟踪:
140502 14:13:05 [注意] 插件“联邦”被禁用。 InnoDB:日志扫描已通过检查点 lsn 108 1057948207 140502 14:13:06 InnoDB:数据库没有正常关闭! InnoDB:启动崩溃恢复。 InnoDB:从 .ibd 文件中读取表空间信息... InnoDB:从双写恢复可能的半写入数据页 InnoDB:缓冲... InnoDB:进行恢复:扫描到日志序列号 108 1058059648 InnoDB:必须回滚或清理的 1 个事务 InnoDB:总共需要撤消 15 行操作 InnoDB:Trx id 计数器为 0 562485504 140502 14:13:06 InnoDB:开始将一批日志记录应用到数据库... InnoDB:百分比进度:4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 3 4 3 4 3 4 3 4 3 4 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 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 InnoDB:应用批处理已完成 InnoDB:在后台启动未提交事务的回滚 140502 14:13:06 InnoDB:回滚 ID 为 0 562485192 的 trx,要撤消 15 行 140502 14:13:06 InnoDB:开始;日志序列号 108 1058059648 140502 14:13:06 InnoDB:文件 ../../../storage/innobase/fsp/fsp0fsp.c 行 1593 中的线程 1873206128 中的断言失败 InnoDB:失败断言:frag_n_used > 0 InnoDB:我们故意生成一个内存陷阱。 InnoDB:向 http://bugs.mysql.com 提交详细的错误报告。 InnoDB:如果你重复断言失败或崩溃,即使 InnoDB:在mysqld启动后,可能会出现 InnoDB:InnoDB 表空间损坏。请参阅 InnoDB:http://dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html InnoDB:关于强制恢复。 140502 14:13:06 - mysqld 得到信号 6 ; 这可能是因为您遇到了错误。这个二进制文件也有可能 或者它链接的库之一已损坏,构建不当, 或配置错误。此错误也可能由硬件故障引起。 我们将尽最大努力收集一些信息,希望能帮助诊断 问题,但既然我们已经崩溃了,肯定是出了什么问题 这可能会失败。 key_buffer_size=16777216 read_buffer_size=131072 max_used_connections=0 最大线程数=151 线程连接=0 mysqld 最多可以使用 key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 345919 K 内存字节 希望没问题;如果不是,减少方程中的一些变量。 第:0x0 试图回溯。您可以使用以下信息来了解 mysqld 死的地方。如果您在此之后没有看到任何消息,则说明发生了一些事情 大错特错... stack_bottom = (nil) thread_stack 0x30000 140502 14:13:06 [注意] 事件调度程序:加载了 0 个事件 140502 14:13:06 [注意] /usr/sbin/mysqld:准备好连接。 版本:'5.1.41-3ubuntu12.10' 套接字:'/var/run/mysqld/mysqld.sock' 端口:3306 (Ubuntu) /usr/sbin/mysqld(my_print_stacktrace+0x2d) [0xb7579cbd] /usr/sbin/mysqld(handle_segfault+0x494) [0xb7245854] [0xb6fc0400] /lib/tls/i686/cmov/libc.so.6(abort+0x182) [0xb6cc5a82] /usr/sbin/mysqld(+0x4867e9) [0xb74647e9] /usr/sbin/mysqld(btr_page_free_low+0x122) [0xb74f1622] /usr/sbin/mysqld(btr_compress+0x684) [0xb74f4ca4] /usr/sbin/mysqld(btr_cur_compress_if_useful+0xe7) [0xb74284e7] /usr/sbin/mysqld(btr_cur_pessimistic_delete+0x332) [0xb7429e72] /usr/sbin/mysqld(btr_node_ptr_delete+0x82) [0xb74f4012] /usr/sbin/mysqld(btr_discard_page+0x175) [0xb74f41e5] /usr/sbin/mysqld(btr_cur_pessimistic_delete+0x3e8) [0xb7429f28] /usr/sbin/mysqld(+0x526197) [0xb7504197] /usr/sbin/mysqld(row_undo_ins+0x1b1) [0xb7504771] /usr/sbin/mysqld(row_undo_step+0x25f) [0xb74c210f] /usr/sbin/mysqld(que_run_threads+0x58a) [0xb74a31da] /usr/sbin/mysqld(trx_rollback_or_clean_all_without_sess+0x3e3) [0xb74ded43] /lib/tls/i686/cmov/libpthread.so.0(+0x596e) [0xb6f9f96e] /lib/tls/i686/cmov/libc.so.6(clone+0x5e) [0xb6d65a4e] http://dev.mysql.com/doc/mysql/en/crashing.html 的手册页包含 应该可以帮助您找出导致崩溃的原因的信息。
有什么建议吗?
小智 29
哎哟。
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html
InnoDB: about forcing recovery.
Run Code Online (Sandbox Code Playgroud)
检查建议的网页:http : //dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html。
基本上,尝试以恢复模式启动 MySQL 服务器并备份崩溃的表。
编辑您的/etc/my.cnf
并添加:
innodb_force_recovery = 1
Run Code Online (Sandbox Code Playgroud)
...查看是否可以进入数据库并获取数据/找到损坏的表。
通常,发生这种情况时是重新构建(至少是损坏的一两个表)。
从http://chepri.com/mysql-innodb-corruption-and-recovery/:
mysqld
( service mysql stop
)。/var/lib/mysql/ib*
将以下行添加到/etc/my.cnf
:
innodb_force_recovery = 1
Run Code Online (Sandbox Code Playgroud)
(他们建议 4,但最好从 1 开始,如果不开始则递增)
重新启动mysqld
( service mysql start
)。
mysqldump -A > dump.sql
mysqld
( service mysql stop
)。/var/lib/mysql/ib*
innodb_force_recovery
在/etc/my.cnf
mysqld
。查看mysql错误日志。默认情况下,应该/var/lib/mysql/server/hostname.com.err
查看它如何创建新ib*
文件。mysql < dump.sql
归档时间: |
|
查看次数: |
100054 次 |
最近记录: |