編集する:

編集する:

オペレーティングシステム:CentOS 5.10
サービス:Amazon Web Services
MySQL 5.0をアンインストールし、MySQL 5.6をインストールしてみてください。

MySQLを使用しようとしてサーバーを設定しましたが、MySQL 5.0を使用して設定されました。パフォーマンス向上やその他の機能が追加されたが、まだデータや何もないので、MySQL 5.6をインストールしようとしています。

Oracleが公開したガイドに従って、RHEL 5で使用するRPMをインストールしました。

http://dev.mysql.com/doc/mysql-repo-excerpt/5.6/en/linux-installation-yum-repo.html

すべてがうまくいき、インストール後すぐにサービスを開始できます。しかし...

この段階に達すると:

MySQL のインストールを保護するには、常に mysql_secure_installation プログラムを実行してください。

シェル> mysql_secure_installation

mysql_secure_installationを使用すると、rootパスワードの設定、匿名ユーザーの削除などの重要なタスクを実行できます。このプログラムは安全で使いやすいです。ただし、設定したルートパスワードを覚えておくことが重要です。詳細については、mysql_secure_installation - MySQL インストールのセキュリティの強化をご覧ください。

mysql_secure_installationを実行しましたが、パスワードの入力を求められたら、root@localhostのパスワードを設定しなかったのでEnterキーを押してみました。

パスワードが間違っていると聞きました。

だから私は以前のパスワードを試してみましたが、パテを介して接続し、接続が切断されるとウィンドウが閉じるため、エラーが発生しました。

とにかく - ちょうどパスワードを尋ねたので、Enterキーを押してから、以前のパスワードをもう一度試してみましたが、それでも機能しませんでした。

だからプロセスをキャンセルしsudo /sbin/service mysqld stopて実行しましたsudo /sbin/service mysqld start。シェルが停止し、しばらく停止した後、ウィンドウが閉じて接続が行われます。

SSH接続を再開しようとしましたが、タイムアウトしました。数分待ってからSSHを介してサーバーに再接続できます。

mysqld サービスを開始しようとするたびに、SSH セッションが閉じられます。これはsshdもクラッシュしたという意味ですか?

ログファイルには/var/log/mysql.log次の内容のみが含まれます。

131204 23:49:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
131204 23:50:53 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
131205 00:05:12 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
131205 00:06:28 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
131205 00:08:09 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
131205 00:09:14 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
131205 00:13:54 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
131205 00:15:04 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
131205 00:25:12 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
131205 00:26:45 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

mysqlを手動で実行してみましたが、同じことが起こりました。

ここで何をすべきですか?


編集する:

私はmysqld_safeを実行して、これまでの出力が何であるかを確認しました。

[user@machine mysql]$ sudo /usr/bin/mysqld_safe
131205 01:13:33 mysqld_safe Logging to '/var/log/mysqld.log'.
131205 01:13:33 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Killed

私に電話を切る前に。

InnoDBで使用しているデータベースを移動するとどうなりますか?


dmesgPatrickによるとmysqld

私は以下を見つけました:

type=1400 audit(1386200078.706:1929): avc:  denied  { read } for  pid=20563 comm="nohup" path="/usr/sbin/mysqld" dev=xvda1 ino=375035 scontext=user_u:system_r:netutils_t:s0 tcontext=system_u:object_r:mysqld_exec_t:s0 tclass=file
sudo invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0

Call Trace:
 [<ffffffff802c1b64>] out_of_memory+0x8b/0x203
 [<ffffffff8020fa5d>] __alloc_pages+0x27f/0x308
 [<ffffffff802139dd>] __do_page_cache_readahead+0xc8/0x1af
 [<ffffffff8021424e>] filemap_nopage+0x14c/0x360
 [<ffffffff80208e9d>] __handle_mm_fault+0x444/0x144f
 [<ffffffff8026ea01>] monotonic_clock+0x35/0x7b
 [<ffffffff8029b54a>] attach_pid+0x7c/0xa9
 [<ffffffff80266d94>] do_page_fault+0xf72/0x131b
 [<ffffffff8024901b>] skb_dequeue+0x48/0x50
 [<ffffffff80254146>] unix_release_sock+0x19e/0x1fa
 [<ffffffff80261df5>] thread_return+0x6c/0x113
 [<ffffffff80207116>] kmem_cache_free+0x84/0xd7
 [<ffffffff80207116>] kmem_cache_free+0x84/0xd7
 [<ffffffff8025f82b>] error_exit+0x0/0x6e

そして:

mysqld invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0

Call Trace:
 [<ffffffff802c1b64>] out_of_memory+0x8b/0x203
 [<ffffffff8020fa5d>] __alloc_pages+0x27f/0x308
 [<ffffffff802139dd>] __do_page_cache_readahead+0xc8/0x1af
 [<ffffffff8021424e>] filemap_nopage+0x14c/0x360
 [<ffffffff80208e9d>] __handle_mm_fault+0x444/0x144f
 [<ffffffff8020622a>] hypercall_page+0x22a/0x1000
 [<ffffffff8020622a>] hypercall_page+0x22a/0x1000
 [<ffffffff80266d94>] do_page_fault+0xf72/0x131b
 [<ffffffff80236fd3>] __vm_enough_memory+0xee/0xfc
 [<ffffffff8020e472>] do_mmap_pgoff+0x35e/0x74a
 [<ffffffff80236fd3>] __vm_enough_memory+0xee/0xfc
 [<ffffffff80263929>] _spin_lock_irqsave+0x9/0x14
 [<ffffffff802313f1>] __up_write+0x27/0xf2
 [<ffffffff8025f82b>] error_exit+0x0/0x6e

Mem-info:
DMA per-cpu:
cpu 0 hot: high 0, batch 1 used:0
cpu 0 cold: high 0, batch 1 used:0
DMA32 per-cpu:
cpu 0 hot: high 186, batch 31 used:79
cpu 0 cold: high 62, batch 15 used:58
Normal per-cpu: empty
HighMem per-cpu: empty
Free pages:        4780kB (0kB HighMem)
Active:114881 inactive:1 dirty:1 writeback:0 unstable:0 free:1195 slab:5226 mapped-file:541 mapped-anon:114329 pagetables:1094
DMA free:2004kB min:48kB low:60kB high:72kB active:540kB inactive:0kB present:9076kB pages_scanned:1381592 all_unreclaimable? yes
lowmem_reserve[]: 0 489 489 489
DMA32 free:2776kB min:2804kB low:3504kB high:4204kB active:458984kB inactive:4kB present:500960kB pages_scanned:10643850 all_unreclaimable? yes
lowmem_reserve[]: 0 0 0 0
Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
DMA: 1*4kB 0*8kB 1*16kB 0*32kB 1*64kB 1*128kB 1*256kB 1*512kB 1*1024kB 0*2048kB 0*4096kB = 2004kB
DMA32: 28*4kB 1*8kB 0*16kB 1*32kB 1*64kB 0*128kB 0*256kB 1*512kB 0*1024kB 1*2048kB 0*4096kB = 2776kB
Normal: empty
HighMem: empty
585 pagecache pages
Swap cache: add 0, delete 0, find 0/0, race 0+0
Free swap  = 0kB
Total swap = 0kB
Free swap:            0kB
131072 pages of RAM
5993 reserved pages
4445 pages shared
0 pages swap cached
Out of memory: Killed process 20563, UID 0, (mysqld).

ここで何をすべきですか?

答え1

dmesgあなたが提供した出力によると、実際に問題を引き起こすのはOOMキラーです。
デフォルトでは、mysqlを起動した後、システムは利用可能なすべてのメモリを使用します。これが発生した場合、カーネルは何かを復元するために何かを終了する必要があります。システムを不安定にすることなく殺すことを見つけるための複雑なアルゴリズムがあります。アルゴリズムはシェルを正確に選択します。その後、シェルが死ぬとそれだけでは不十分であることがわかり、他のものを殺し始めます。最終的にはmysqlプロセスに到達して終了します。

また、出力にはdmesgシステムに約500 MBのメモリしかないと表示されます。私は一般的にこれがmysqlを実行するのに十分だと思います(小さなパフォーマンスに興味がない場合)。しかし、明らかにこれはそうではないことを示唆しています。
多くのメモリを使用する他のプログラムはボックスにありますか?出力にはdmesgプロセスリストとそれらが消費するメモリ量も含める必要があります。

異常に大量のメモリを使用する必要がある他の理由がない場合は、次の2つのオプションがあります。

  1. スワップの有効化
  2. より多くのメモリを追加します(より大きなインスタンスサイズを使用)。

答え2

既存のmysqlインストールの古いデータベースファイルがまだ残っているようです。保持するデータがある場合は、mysql_upgradeコマンドを実行してください。既存のデータが必要ない場合は、/var/lib/mysql を消去して mysql_secure_installation スクリプトを再実行してください。

関連情報