質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

3回答

11712閲覧

MySQLがサーバ再起動時にクラッシュして起動しなくなってしまった

chapter

総合スコア36

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

2グッド

0クリップ

投稿2016/11/10 01:07

編集2016/11/10 01:31

いつもお世話になっております。

標記の件につきまして、phpのあるスクリプトの不具合で
MySQLでトランザクションのロックが大量に発生してしまい、
手動でプロセスを削除したのですが、削除し切れず
MySQL自体をいったん停止させようとしたところ、
何回かトライしても停止に失敗してしまったので、
サーバの方で再起動をかけてみました。

OS: CentOS6.4
mysql Ver 14.14 Distrib 5.5.47, for Linux (x86_64) using readline 5.1

その後、MySQLが正常に起動せず、エラーログに以下のように
出力されております。

Bash

1161110 10:04:01 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 2161110 10:04:01 [Warning] Using unique option prefix thread_cache instead of thread_cache_size is deprecated and will be removed in a future release. Please use the full name instead. 3161110 10:04:01 [Note] /usr/libexec/mysqld (mysqld 5.5.47-log) starting as process 6785 ... 4161110 10:04:01 [Note] Plugin 'FEDERATED' is disabled. 5161110 10:04:01 InnoDB: The InnoDB memory heap is disabled 6161110 10:04:01 InnoDB: Mutexes and rw_locks use GCC atomic builtins 7161110 10:04:01 InnoDB: Compressed tables use zlib 1.2.3 8161110 10:04:01 InnoDB: Using Linux native AIO 9161110 10:04:01 InnoDB: Initializing buffer pool, size = 1000.0M 10161110 10:04:01 InnoDB: Completed initialization of buffer pool 11161110 10:04:01 InnoDB: highest supported file format is Barracuda. 12InnoDB: The log sequence number in ibdata files does not match 13InnoDB: the log sequence number in the ib_logfiles! 14161110 10:04:01 InnoDB: Database was not shut down normally! 15InnoDB: Starting crash recovery. 16InnoDB: Reading tablespace information from the .ibd files... 17InnoDB: Restoring possible half-written data pages from the doublewrite 18InnoDB: buffer... 19InnoDB: Last MySQL binlog file position 0 1065103915, file name ./mysql-bin.002966 20161110 10:04:01 InnoDB: Waiting for the background threads to start 21161110 10:04:02 InnoDB: 5.5.47 started; log sequence number 6110248889894 2201:04:02 UTC - mysqld got signal 11 ; 23This could be because you hit a bug. It is also possible that this binary 24or one of the libraries it was linked against is corrupt, improperly built, 25or misconfigured. This error can also be caused by malfunctioning hardware. 26We will try our best to scrape up some info that will hopefully help 27diagnose the problem, but since we have already crashed, 28something is definitely wrong and this may fail. 29 30key_buffer_size=8388608 31read_buffer_size=131072 32max_used_connections=0 33max_threads=2000 34thread_count=0 35connection_count=0 36It is possible that mysqld could use up to 37key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 4383254 K bytes of memory 38Hope that's ok; if not, decrease some variables in the equation. 39 40Thread pointer: 0x0 41Attempting backtrace. You can use the following information to find out 42where mysqld died. If you see no messages after this, something went 43terribly wrong... 44stack_bottom = 0 thread_stack 0x40000 45/usr/libexec/mysqld(my_print_stacktrace+0x2e)[0x78e06e] 46/usr/libexec/mysqld(handle_fatal_signal+0x493)[0x6765d3] 47/lib64/libpthread.so.0[0x3a1d40f710] 48The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains 49information that should help you find out what is causing the crash. 50161110 10:04:02 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

エラー内容を元に検索してみたのですが、キーワードが悪いのか
解決に至るような事例にたどり着けませんでした。

なお、my.cnfの設定は以下のようになっており、
サーバの再起動前は特に問題なく動いておりました。

Bash

1[mysqld] 2datadir=/var/lib/mysql 3socket=/var/lib/mysql/mysql.sock 4 5symbolic-links=0 6character-set-server = utf8 7 8user=mysql 9 10max_connections = 2000 11thread_cache = 600 12thread_cache_size = 50 13table_open_cache = 512 14wait_timeout = 300 15max_connect_errors = 10000 16query_cache_type = 0 17query_cache_size = 0 18tmp_table_size = 1024M 19max_heap_table_size = 1024M 20innodb_buffer_pool_size = 1000M 21 22slow_query_log=1 23slow_query_log_file=mysql-slow.log 24long_query_time=10 25 26log-bin=mysql-bin 27expire_logs_days=3 28 29[mysqld_safe] 30log-error=/var/log/mysqld.log 31pid-file=/var/run/mysqld/mysqld.pid

つきましては、何か解決のヒントになるようなことがございましたら、
ご教授いただけると助かります。

それでは、よろしくお願いいたします。

KiyoshiMotoki, yodel👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

ざっくり検索した感じだと、以下の事案に類似しているかなぁと...
記事内では自己解決しているようですが、自分では解決方法を読んでも意味がよくわかりませんでした...。
mysqld got signal 11 - it's my fault but how do I fix it?

※ロック絡みだし、ログの出力(backtrace)が同じなので、参考になれば幸いです...

投稿2016/11/10 03:21

popobot

総合スコア6586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chapter

2016/11/10 09:05

icchiiさん、ご回答ありがとうございます。 ご提示いただいたリンク先から、下記ページの内容を試してみました。 http://notesonit.blogspot.jp/2013/05/innodb-unable-to-lock-ibdata1-error-11.html 上記に書かれているように、「ibdata1」と「ib_logfile* (実際にはib_logfile0, ib_logfile1の2つ)」のファイルをバックアップフォルダに移してから、 cpコマンドで-aを付けて元のフォルダに戻したところ、 起動はしなかったのですが、試しに「ibdata1」だけ戻して、 「ib_logfile0」「ib_logfile1」がない状態でMySQLを起動したところ、 データも全て復旧して稼働させることができました! アドバイスありがとうございました。
popobot

2016/11/10 12:11

リカバリできてよかったです。 cp -aにどんな意味があるのかよくわからないですが... logfileがなければ動いたのであれば、logfileが壊れていたんですかね もしかしたら、完全にはクラッシュリカバリできていなかったかもしれませんが、 確認する範囲でデータに問題なければ大丈夫な気がします。
chapter

2016/11/10 13:28

icchiiさん、ありがとうございました。 確かにcp -aは機能的に見ても、あまり意味はなさそうな気はしますね。 icchiiさんが仰るようにlogfileが壊れていたのが原因だと私も思いますので、 恐らく今回はibdata1をcp -aで戻したことより、logfileを削除したことが 復旧の鍵なのかなと思っています。 なので、ibdata1はそのままで、ib_logfileだけバックアップフォルダに 移動させて、MySQLを再起動するだけで復旧できたのかも知れません。 また、データの方は重要なものは全て問題ないことが確認できました。 細かい更新データはリカバリできていないものもあると思われますが、 数時間で更新処理が一周りする感じなので、すぐに新しい更新データに 置き換わるので問題ない感じです。 アドバイスありがとうございました。
guest

0

有償サポートに問い合わせるか、環境を再構築するのが早そうな気がします。

参考となりそうな情報
http://dev.mysql.com/doc/refman/5.6/ja/crashing.html
http://www.ark-web.jp/sandbox/wiki/228.html

innodb_force_recoveryについて、コメントがあったので参考までに補足します。
5でUNDOログの未参照、6でREDOログのロールフォワード未実施での起動となります。
https://dev.mysql.com/doc/refman/5.6/ja/forcing-innodb-recovery.html

投稿2016/11/10 02:28

編集2016/11/10 09:13
yodel

総合スコア508

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chapter

2016/11/10 08:59

yodelさん、ご回答ありがとうございます。 MySQLのデータフォルダ(innodb)を退避することで、 MySQL自体の起動はできたので再構築まではしなくても 大丈夫そうでしたが、バックアップを取っているデータが 数日前のものだったので、できる限り最新のデータで 復旧したいと試行錯誤しておりました。 なお、2つ目のリンク先に記載されていた以下の記述を 追加しても起動できなかったので、残念ながらその先には 進めませんでしたが、アドバイスありがとうございました。 [mysqld] innodb_force_recovery=3
chapter

2016/11/10 13:14

yodelさん、補足コメントありがとうございます。 お陰さまでinnodb_force_recoveryの数値の意味が分かりました。 3より大きい数値で試してみれば、何か進展があったかも知れないですね。 今後、何か問題が発生した時は、innodb_force_recoveryの数値を少しずつ 上げて試してみようと思います。
guest

0

同じような質問がきのうもあります。
MySQLの起動に失敗します
エラーメッセーなどでググるとかなり解決策が見つかりますよ。

投稿2016/11/10 01:18

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chapter

2016/11/10 01:26

Orlofskyさん、ご回答ありがとうございます。 Google検索でも、ご紹介いただいた質問と同じように インストール後の初回起動時から起動しない問題についての内容が ほとんどで、今回の私のように以前は正常に起動していて、 途中でクラッシュしたケースの事例で解決できる内容のものが 見つけられなかったため、こちらに質問させていただいた 次第でございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問