を発行するservice mysql stop
と、DB接続を切断するだけでなく、さらに多くのことが起こります。@ethrbunnyからのコメントのリンクは、何が起こるかについて既に説明しています。
1つの特定の側面に焦点を当てたいと思います:InnoDBバッファープール。InnoDBは、InnoDBバッファープールのダーティページをフラッシュする必要があります。どれだけ知りたい場合は、シャットダウンする前にこれを実行してください:
SELECT CONCAT(dpbytes/power(1024,expo),' ',SUBSTR(units,expo*2+1,2)) DirtyPages FROM
(SELECT dpbytes,FLOOR(LOG(dpbytes)/LOG(1024)) expo FROM
(SELECT dirty_pages*page_size dpbytes FROM
(SELECT VARIABLE_VALUE dirty_pages FROM information_schema.global_status
WHERE VARIABLE_NAME='Innodb_buffer_pool_pages_dirty') AAA,
(SELECT VARIABLE_VALUE page_size FROM information_schema.global_status
WHERE VARIABLE_NAME='Innodb_page_size') BBB) AA) A,(SELECT ' BKBMBGBTB' units) B;
これにより、InnoDBバッファープールからフラッシュする必要があるデータの量がわかります。
InnoDBのシステムテーブルスペース(ファイルibdata1
)には多くの可動部分があることに注意してください。InnoDBインフラストラクチャ全体の図解を表示するには、ここをクリックしてください。
トランザクション情報の一部は、実行時にクラッシュリカバリが実行されるように記述されていますservice mysql start
。
オプション
これを実行することにより、すべてのデータをフラッシュし、すべてのトランザクションをibdata1およびトランザクションログ(ib_logfile0
、ib_logfile1
)から完全にコミットできます。
SET GLOBAL innodb_fast_shutdown = 0;
走る前に
service mysql stop
試してみる !!!
更新2013-04-24 07:17 EDT
MyISAMをメインストレージエンジンとして使用しているため、発生している唯一のことは、.MYI
変更が保留されているすべてのファイルへのインデックス変更のフラッシュです。
また、次にmysqldをシャットダウンし、別のセッションで事前にこれを実行することをお勧めします。
tail -f /var/log/mysqld.log
通り過ぎるメッセージを見て、それがmysqldがストレージエンジンで何をしているのかを教えてくれます。使用中のInnoDBテーブルがまったくない場合は、InnoDBを無効にすることを検討する必要があります。
[mysqld]
skip-innodb
これにより、起動が速くなり、シャットダウンが速くなる可能性があります。