InnoDB 起動オプションとシステム変数

–innodb

もしサーバが InnoDB サポートでコンパイルされると InnoDB ストレージ エンジンが有効になります。
InnoDB を無効にするには –skip-innodb を利用してください。

–innodb_status_file

InnoDB が MySQL データ ディレクトリ内にファイル名 /innodb_status. を作成するように働きかけます。InnoDB は定期的に SHOW ENGINE INNODB STATUS
のアウトプットをこのファイルに書き込みます。

mysql> SHOW ENGINE INNODB STATUS \G
*************************** 1. row ***************************
Type: InnoDB
Name:
Status:
=====================================
090204 14:52:38 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 1 seconds
———-
SEMAPHORES
———-
OS WAIT ARRAY INFO: reservation count 5, signal count 5
Mutex spin waits 0, rounds 200, OS waits 0
RW-shared spins 11, OS waits 5; RW-excl spins 1, OS waits 0
————
TRANSACTIONS
————
Trx id counter 0 1810
Purge done for trx’s n:o < 0 1293 undo n:o < 0 0 History list length 3 Total number of lock structs in row lock hash table 0 LIST OF TRANSACTIONS FOR EACH SESSION: innodb_additional_mem_pool_size InnoDB がデータ辞書情報と別の内部データ構造を格納する為に利用する、メモリ プールのバイトでのサイズです。 より多くのテーブルをアプリケーション内に持っていると、ここに割り当てる為により多くのメモリが必要になります。 innodb_autoextend_increment 自動拡大テーブルスペースがいっぱいになった時にサイズを拡大する為のインクリメント サイズ(MB)。 デフォルト値は8です。 mysql> show variables like “innodb_autoextend_increment”;
+—————————–+——-+
| Variable_name | Value |
+—————————–+——-+
| innodb_autoextend_increment | 8 |
+—————————–+——-+
1 row in set (0.00 sec)

mysql>

innodb_buffer_pool_awe_mem_mb
AWE メモリ内に置かれた時の、バッファ プールのサイズ(MB)。これは32ビット Windows 内でだけ関連性があります。
indows OS が4GB 以上のメモリをサポートするなら、いわゆる 「Address Windowing Extensions,」 を利用する事で、
この変数を利用して InnoDB バッファプールを AWE 物理的メモリに割り当てる事ができます。
この変数の最大可能値は63000です。
もしこれが0以上なら、innodb_buffer_pool_size は InnoDB がその AWE メモリを マップする
mysqld の32ビット アドレス領域内のウィンドウです。innodb_buffer_pool_size の適正な値は 500MB です。
AWE メモリを活用するには、自分で MySQL をリコンパイルする必要があります。これを行うのに必要な現在のプロジェクト設定は、
storage/innobase/os/os0proj.c ソース ファイル内で見つける事ができます。

innodb_buffer_pool_size

InnoDB がそのテーブルのデータとインデックスをキャッシュする為に利用する、メモリバッファ のバイトでのサイズです。
この値を大きく設定するほど、テーブル内のデータにアクセスするのに必要なディスク I/O は少なくなります。
専用のデータベース サーバ上で、これをマシンの物理的メモリ サイズの最大80% に設定すると良いでしょう。
しかし、物理的メモリの競合が OS 内でページングを引き起こす可能性があるので、あまり大きく設定しないでください。

mysql> show variables like “innodb_buffer_pool_size”;
+————————-+———+
| Variable_name | Value |
+————————-+———+
| innodb_buffer_pool_size | 8388608 |
+————————-+———+
1 row in set (0.00 sec)

mysql>

innodb_checksums
InnoDB は、壊れたハードウェアやデータ ファイルに対する追加フォールト トレランスを保証するディスク
からの全てのページの読み込み上で、チェックサムの妥当性確認を利用する事ができます。
この妥当性確認はデフォルトで有効化されています。
ベンチマークが起動している時等、この追加安全機能は必要なく、–skip-innodb-checksums を利用して無効にする事ができます。

innodb_commit_concurrency
同時にコミットする事ができるスレッドの数。0の値は並行処理制御を無効にします。

mysql> show variables like “innodb_commit_concurrency”;
+—————————+——-+
| Variable_name | Value |
+—————————+——-+
| innodb_commit_concurrency | 0 |
+—————————+——-+
1 row in set (0.00 sec)

mysql>

innodb_concurrency_tickets
InnoDB に同時に入る事ができるスレッドの数は、innodb_thread_concurrency変数によって決められます。
スレッドが InnoDB に入ろうとする時にもし並行処理の限度までスレッド数が達していたら、
それらは列になります。スレッドが InnoDB に入るのを許可されると、innodb_concurrency_tickets
の値と同等の 「フリー チケット」 をたくさん与えられ、スレッドはそのチケットを使ってしまうまでは自由に
InnoDB に出入りできます。それ以降は、スレッドが次に InnoDB に入ろうとした時に、
再度並行処理チェックの対象となります。(または列に並ぶ可能性もある)

mysql> show variables like “innodb_concurrency_tickets”;
+—————————-+——-+
| Variable_name | Value |
+—————————-+——-+
| innodb_concurrency_tickets | 500 |
+—————————-+——-+
1 row in set (0.00 sec)

mysql>

innodb_data_file_path
独立したデータ ファイルとそれらのサイズへのパス。
各データ ファイルへの完全ディレクトリ パスは、ここに指定された各パスへの
innodb_data_home_dir を結合する事によって形作られます。ファイル サイズは、
サイズ値に M か G を付加して、MB か GB (1024MB)で指定されます。ファイル サイズの合計
は最低10MB 必要です。もし innodb_data_file_path を指定しなければ、デフォルト動作で
ibdata1 と名づけられた10MB の単一自動拡大データ ファイルが作成されます。
各ファイルのサイズ制限は OS によって決定されます。

mysql> show variables like “innodb_data_file_path”;
+———————–+————————+
| Variable_name | Value |
+———————–+————————+
| innodb_data_file_path | ibdata1:10M:autoextend |
+———————–+————————+
1 row in set (0.00 sec)

mysql>

innodb_data_home_dir
全ての InnoDB データ ファイルのディレクトリ パスの主な部分。
もしこの値を設定しなければ、デフォルトは MySQL データ ディレクトリになります。

innodb_doublewrite
デフォルトで、InnoDB は全てのデータを2回格納します。
一回目は二重書き込み バッファに、そして次に実際のデータ ファイルに格納します。
この変数はデフォルトで有効化されています。それは、データの整合性や起こり得る
失敗に対する心配よりも、ベンチマークや最高性能が要求される時に、
–skip-innodb_doublewrite を利用して止める事ができます。

mysql> show variables like “innodb_doublewrite”;
+——————–+——-+
| Variable_name | Value |
+——————–+——-+
| innodb_doublewrite | ON |
+——————–+——-+
1 row in set (0.00 sec)

mysql>

innodb_fast_shutdown
もしこの変数を0に設定すると、InnoDB はシャットダウンの前に完全消去と挿入バッファ マージを行います。
デフォルト値は1です。もしこれを2に設定すると、コミットされたトランザクションはなくなりませんが、
次の起動の際にクラッシュ復旧が行われます。

innodb_file_io_threads
InnoDB 内のファイル I/O スレッド数。通常、これはデフォルト値である4のままにしておくべきですが、
Windows 上のディスク I/O にとってはそれよりも大きい値の方がよいかもしれません。
Unix 上では、数値を増やしても効果はありません。

mysql> show variables like “innodb_file_io_threads”;
+————————+——-+
| Variable_name | Value |
+————————+——-+
| innodb_file_io_threads | 4 |
+————————+——-+
1 row in set (0.00 sec)

mysql>

innodb_file_per_table
この変数が有効になると、InnoDB はデータとインデックスを共有テーブルスペースに格納
するのではなく、それ自体の .ibd ファイルを利用してそれぞれの新しいテーブルを作成し、
そこに格納します。デフォルトでは、共有テーブルスペースにテーブルを作成するという事になっています。

mysql> show variables like “innodb_file_per_table”;
+———————–+——-+
| Variable_name | Value |
+———————–+——-+
| innodb_file_per_table | OFF |
+———————–+——-+
1 row in set (0.01 sec)

mysql>

innodb_flush_log_at_trx_commit
※1秒毎、またはコミット毎にトランザクションをログファイルにフラッシュ

0 = コミットされたトランザクションは1秒毎にログファイルにフラッシュされ、
コミット毎にはフラッシュされません。


1 = コミットされたクエリはCOMMIT毎に、ログファイルにフラッシュされる
ので、失われるデータは”0”となります。(例外も起こるとは思いますが)

innodb_flush_log_at_trx_commit が0に設定された時は、ログ バッファは1秒に一回ログファイルに
書き込まれ、ディスク操作へのフラッシュはログ ファイル上で行われますが、トランザクションコミット
の際には何も行われません。この値が1(デフォルト)の時は、ログ ファイルは各トランザクションコミット
の時にログ ファイルに書き込まれ、ディスク操作へのフラッシュはログ ファイル上で行われます。
2に設定された時は、ログ バッファはコミット毎にファイルに書き込まれますが、ディスク操作への
フラッシュはそこでは行われません。しかし、値が2の時もログ ファイル上でのフラッシュは1秒に1回行われます。
1秒に1回のフラッシュは、処理スケジュールの発行の為100%保証された物ではないという事に注意してください。
この変数のデフォルト値は1です。これは ACID 整合性に要求されている値です。より良い性能の為に1以外の値を
設定する事もできますが、その場合1つのクラッシュの中で最大1秒分のトランザクションを失う可能性があります。
もし値を0に設定すると、全ての mysqld プロセス クラッシュは最後の秒のトランザクションを消す場合があります。
もし値を2に設定すると、OS のクラッシュか停電によって、最後の秒のトランザクションが消されてしまいます。
しかし、InnoDB のクラッシュ復旧は影響を受けないので、値に関係なくクラッシュ復旧は行われます。

注意:InnoDB とトランザクションを共に利用して複製設定内で
最大の耐久力と一貫性を得る為に、お使いのマスタ サーバ my.cnf 内で
innodb_flush_log_at_trx_commit=1 と sync_binlog=1 を利用
しなければいけません。

mysql> show variables like “innodb_flush_log_at_trx_commit”;
+——————————–+——-+
| Variable_name | Value |
+——————————–+——-+
| innodb_flush_log_at_trx_commit | 1 |
+——————————–+——-+
1 row in set (0.01 sec)

mysql>

innodb_force_recovery
クラッシュ復旧モード。警告:この変数は、破損したデータベースからテーブルを捨てたいという
緊急の場合のみ、0以降の値に設定しなければいけません!可能な値は1から6です。
安全策として、InnoDB はこの変数が0以上の時はそのデータへの変更を阻止します

innodb_lock_wait_timeout
InnoDB トランザクションがロール バックされる前に、ロックを待つ秒数でのタイムアウト。
InnoDB は自動的にそれ自体のロック テーブル内でトランザクション デッドロックを検出し、
トランザクションをロールバックします。InnoDB は LOCK TABLES ステートメントを利用してロック
セットを通知します。デフォルトは50秒です。

mysql> show variables like “innodb_lock_wait_timeout”;
+————————–+——-+
| Variable_name | Value |
+————————–+——-+
| innodb_lock_wait_timeout | 50 |
+————————–+——-+
1 row in set (0.00 sec)

mysql>

innodb_locks_unsafe_for_binlog
この変数は InnoDB サーチとインデックス スキャン内でネクスト キー ロックをコントロールします。
デフォルトによってこの変数は0(無効)であり、それはネクスト キー ロックが有効であると意味します。

innodb_log_archive
InnoDB アーカイブ ファイルをログするかどうか。
この変数は歴史的理由により存在していますが、利用はされていません。

innodb_log_buffer_size
InnoDB がディスク上のログ ファイルに書き込む為に利用するバッファのバイトでのサイズ。
実用的な値の範囲は1MB から8MB です。デフォルトは1MB です。大きいログ バッファは、
トランザクション コミットの前にディスクにログを書き込む必要なく、大きいトランザクションが起動する事を許容します。
従って、もし大きいトランザクションを持っていたら、ログ ファイルを大きくしておく事でディスク I/O を節約する事ができます。

mysql> show variables like “innodb_log_buffer_size”;
+————————+———+
| Variable_name | Value |
+————————+———+
| innodb_log_buffer_size | 1048576 |
+————————+———+
1 row in set (0.00 sec)

mysql>

innodb_log_file_size

ログ グループ内のそれぞれの長いファイルのバイトでのサイズ。
ログ ファイルの結合したサイズは32ビット コンピュータ上で 4GB 以下でなければいけません。
デフォルトは5MB です。実用的な値は、N がグループ内のログ ファイル数だとして、
バッファ プールのサイズの1MB から 1/N-th です。
値が大きいほど、ディスク I/O を節約し、バッファ プール内で必要とされる
チェックポイント フラッシュ活動は少なくなります。

mysql> show variables like “innodb_log_file_size”;
+———————-+———+
| Variable_name | Value |
+———————-+———+
| innodb_log_file_size | 5242880 |
+———————-+———+
1 row in set (0.00 sec)

mysql>

innodb_log_files_in_group

ログ グループ内のログ ファイル数。InnoDB はファイルに輪状に書き込みをします。
デフォルト(そして推奨)は2です。

innodb_log_group_home_dir
InnoDB ログ ファイルへのディレクトリ パス。もし InnoDB ログ変数を何も指定しなければ、
デフォルトで MySQL データ ディレクトリ内に ib_logfile0 と ib_logfile1
という名前の2つの5MB ファイルを作成します。

innodb_max_dirty_pages_pct
これは0から100の範囲の間の整数です。デフォルトは90です。
InnoDB 内の主スレッドは、ダーティ (まだ書き込まれていない)ページの割合がこの値を超えないように
バッファ プールからページを書くように試みます。

mysql> show variables like “innodb_max_dirty_pages_pct”;
+—————————-+——-+
| Variable_name | Value |
+—————————-+——-+
| innodb_max_dirty_pages_pct | 90 |
+—————————-+——-+
1 row in set (0.00 sec)

mysql>

innodb_max_purge_lag
この変数は、消去操作が遅れている時にINSERT、UPDATE そして DELETE 操作を
どのように遅らせるかをコントロールします。この変数のデフォルト値は0で、これは遅れは無いという事を意味します。
InnoDB トランザクション システムは UPDATE か DELETE 操作によって削除マークが付けられた
インデックス レコードを持つトランザクションのリストを保持します。このリストの長さを
purge_lag にして下さい。purge_lag が innodb_max_purge_lag を上回る時、各 INSERT、UPDATE
そして DELETE 操作は((purge_lag/innodb_max_purge_lag)×10)–5 ミリ秒遅れます。遅れは消去バッチの最初に、
10秒ごとに計算されます。もし消去される行をを知る事ができる、古い一貫した読み取りビューの為に消去が起動しなかったら、
その操作は遅れません。

mysql> show variables like “innodb_max_purge_lag”;
+———————-+——-+
| Variable_name | Value |
+———————-+——-+
| innodb_max_purge_lag | 0 |
+———————-+——-+
1 row in set (0.00 sec)

mysql>

innodb_mirrored_log_groups
データベースの為に残すログ グループの同一コピー数。現在は、この値は1に設定しなければいけません。

innodb_open_files
この変数は InnoDB 内で複数のテーブルスペースを利用する場合のみ関連があります。
それは InnoDB が同時にオープンしておける .ibd ファイルの最大数を指定します。
最大値は10です。デフォルトは300です。
.ibd ファイルに利用されるファイル記述子は、InnoDB に対しての物のみです。
それらは、–open-files-limit サーバ オプションによって指定された物からは独立していて、
テーブル キャッシュの操作に影響を与えません。

mysql> show variables like “innodb_open_files”;
+——————-+——-+
| Variable_name | Value |
+——————-+——-+
| innodb_open_files | 300 |
+——————-+——-+
1 row in set (0.00 sec)

mysql>

innodb_rollback_on_timeout
MySQL 5.1 内で、InnoDB はトランザクション タイムアウト上で最後のステートメントだけを
ロールバックします。このオプションが与えられると、トランザクション タイムアウトは InnoDB
がトランザクション全体を異常終了し、ロールバックするよう働きかけます。(MySQL 4.1と同じ動作です。)
この変数は、MySQL 5.1.15で追加されました。

mysql> show variables like “innodb_rollback_on_timeout”;
+—————————-+——-+
| Variable_name | Value |
+—————————-+——-+
| innodb_rollback_on_timeout | OFF |
+—————————-+——-+
1 row in set (0.00 sec)

mysql>

innodb_support_xa
ON か1(デフォルト)に設定されると、この変数は InnoDB が XA トランザクション内の二相コミット サポートを有効にします。
innodb_support_xa を有効にすると、トランザクションの準備でディスク フラッシュが余計に起こります。
XA を利用する事を気にしないのであれば、この変数を OFF か0に設定してこれを無効にする事ができ、
ディスク フラッシュの数を減らし、InnoDB 操作性能を向上させる事ができます。

innodb_table_locks
もし AUTOCOMMIT=0、InnoDB が LOCK TABLES を支持すると、MySQL は全てのスレッドがそれら
全てのロックをテーブルにリリースするまで LOCK TABLE .. WRITE から戻りません。
innodb_table_locks のデフォルト値は1です。それはもし AUTOCOMMIT=0 なら LOCK TABLES は
InnoDB がテーブルを内部的にロックするよう働きかける事を意味します。

innodb_thread_concurrency
InnoDB は、この変数から与えられた制限よりも少ない、またはそれと同等の制限の InnoDB
内部に多くの OS スレッドを一斉に保存しようと試みます。性能に関する問題を持ち、
多くのスレッドがセマフォを待っているという事が SHOW ENGINE INNODB STATUS によって明らかにされたのなら、
スレッド 「thrashing」 を持ち、この変数を低くまたは高く設定するよう試みる必要があります。
もしたくさんのプロセッサとディスクがあるコンピュータをお持ちであれば、それを有効に活用する為に
値を高く設定する事もできます。推奨値はお使いのシステムのプロセッサとディスク数の合計値です。
この変数の範囲は0から1000です。20以上の値は無限並行処理として読み取られます。 無限というのは、
並行チェックが無効になり、ミューテックスを獲得、リリースする事で発生するであろう、多量の負荷を防ぐという意味です。
MySQL 5.1.11以前はデフォルト値は20で、5.1.11以降は8となっています。

mysql> show variables like “innodb_thread_concurrency”;
+—————————+——-+
| Variable_name | Value |
+—————————+——-+
| innodb_thread_concurrency | 8 |
+—————————+——-+
1 row in set (0.00 sec)
mysql>

innodb_thread_sleep_delay
InnoDB スレッドは InnoDB の列に加わるまでに、マイクロ秒で何秒間スリープ状態にあるか。
デフォルト値は10,000です。0の値ではスリープ状態にはなりません。

sync_binlog
もし変数値が正数であれば、MySQL サーバはバイナリ ログへの毎 sync_binlog 書き込みごとに、
ディスク(fdatasync())にそのバイナリ ログを同期化します。オート コミット モードでは、
各ステートメントにつきバイナリ ログへの書き込みが1つあり、そうでなければ各トランザクションに
つき1つの書き込みがあると覚えて置いてください。デフォルトは、ディスクへの同期化を行わない0です。
クラッシュしてしまった場合には、バイナリ ログから最大1つのステートメントかトランザクション
が失われてしまう為、1の値が一番安全な値です。


テーブルロックについて。
ロックはUNLOCK TABLESコマンドが、クライアントから実行された時にリリースされる。

※ クライアントが他のロックをLOCK TABLESによって取得リクエストをかけた時
※ 接続を切断した時
※ ABORTされた時(KILLコマンドなど)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MYSQLでのロック動作確認
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
mysql> LOCK TABLES company READ; LOCK TABLES innodb_monitor write;
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

※ このクエリーだとcompanyは直ぐにリリースされて、innodb_monitorのみロックされる。

mysql>

mysql> LOCK TABLES company READ,innodb_monitor write;
Query OK, 0 rows affected (0.00 sec)

mysql>

■ mysql>SELECT * FROM innodb_monitor; 
  ここで別のクライアントからselectしたら他のプロセスのwrite lockにて待たされる。

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

mysql>

■ mysql>SELECT * FROM innodb_monitor;
  ロックが解放されたので、select結果が表示される。


MYSQLが提供している関数

mysql> select IS_FREE_LOCK(‘app lock’);
+————————–+
| IS_FREE_LOCK(‘app lock’) |
+————————–+
| 1 |
+————————–+
1 row in set (0.00 sec)

mysql>

※ 1はロック取得可能

mysql> select GET_LOCK(‘app lock’,10);
+————————-+
| GET_LOCK(‘app lock’,10) |
+————————-+
| 1 |
+————————-+
1 row in set (0.00 sec)

mysql>

※ 1は10秒以内にLockが取得される。10はtimeoutの値

mysql> select IS_FREE_LOCK(‘app lock’);
+————————–+
| IS_FREE_LOCK(‘app lock’) |
+————————–+
| 0 |
+————————–+
1 row in set (0.00 sec)

mysql> select RELEASE_LOCK(‘app lock’);
+————————–+
| RELEASE_LOCK(‘app lock’) |
+————————–+
| 1 |
+————————–+
1 row in set (0.00 sec)

※ 1はlockリリースが問題なく実行されたという事

mysql> select IS_FREE_LOCK(‘app lock’);
+————————–+
| IS_FREE_LOCK(‘app lock’) |
+————————–+
| 1 |
+————————–+
1 row in set (0.00 sec)

mysql>

もっと他の関数は、こちらのサイトにあります。

(例)
数字のネットワーク アドレス ( 4 または 8 バイト ) を与えられ、
アドレスのドット形式のクワッド表示をストリングとして戻します。

mysql> SELECT INET_NTOA(3520061480);
+———————–+
| INET_NTOA(3520061480) |
+———————–+
| 209.207.224.40 |
+———————–+
1 row in set (0.00 sec)

mysql>


MY ADMINを利用してMYSQLのFULL BACKUPから、
特定テーブルのリストアを行う方法。
普段は、mysqldumpでバックアップして、mysqlコマンドでリストア
しているので良い勉強になりました。

① まずはテストの為にBACKUPを作成してみます。
BACKUPプロジェクトを作成して「EXECUTE BACKUP NOW」で
バックアップを取得してみます。


BACKUP


② テストの為にBACKUPを取得した、DBにあるテーブルから
データを削除してみます。


DELETE


③ MYSQL AdministratorにてRESTOREを選択して、
①にて作成したBACKUPファイルを開き、「Analyze Backup File」を選択
しリストアしたいテーブルのみをチェックします。
※ FULLでリストアしたいときは、特に特定のテーブルのみ選択しないで
全てリストアしてください。


RESTORE


④ リストアがきちんと行われたかテーブルをselectして確認してみて下さい。
データが戻っていれば成功です。


CONFIRMATION


⑤ データが戻っているので成功ですね。


MYSQLが稼動中に作成したtemporary tableの推移をグラフにして

モニタリングする方法。

① MYSQL ADMINISTRATORを開いてグラフエリアで「ADD A GROUP」として名前を付ける。

② 新しいグラフグループにて、「ADD A GRAPH」を選択。

③ lineグラフを選択して  ^[created_tmp_tables] をformulaに追加する。

以下の図のようにtemp tableが作成された様子がグラフになってモニタリング

出来るので、パフォーマンスの調整に利用出来ます。

tmp_tables_graph


MYSQL 稼動状態確認 (ローカル、リモート)

[root@colinux ~]# mysqladmin ping -h localhost -u root -p
Enter password:
mysqld is alive
[root@colinux ~]#

MYSQLサービス状態の確認

[root@colinux ~]# mysqladmin status -u root -ppassword
Uptime: 12793  Threads: 1  Questions: 77  Slow queries: 0  Opens: 18  Flush tabl
es: 1  Open tables: 4  Queries per second avg: 0.6
[root@colinux ~]#

MYSQLバージョン確認

[root@colinux bin]# mysqladmin version -u root -ppassword
mysqladmin  Ver 8.42 Distrib 5.1.30, for pc-linux-gnu on i686
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          5.1.30
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /tmp/mysql.sock
Uptime:                 14 min 12 sec

Threads: 1  Questions: 12406  Slow queries: 0  Opens: 472  Flush tables: 2  Open
tables: 3  Queries per second avg: 14.561
[root@colinux bin]#

GRANTテーブルをリロード

[root@colinux bin]# mysqladmin flush-privileges -u root -ppassword
[root@colinux bin]#

————————————————————————————————–

————————————————————————————————–

create databasename   Create a new database
debug                 Instruct server to write debug information to log
drop databasename     Delete a database and all its tables
extended-status       Gives an extended status message from the server
flush-hosts           Flush all cached hosts
flush-logs            Flush all logs
flush-status          Clear status variables
flush-tables          Flush all tables
flush-threads         Flush the thread cache
flush-privileges      Reload grant tables (same as reload)
kill id,id,…        Kill mysql threads

ping                  Check if mysqld is alive
processlist           Show list of active threads in server
reload                Reload grant tables
refresh               Flush all tables and close and open logfiles
shutdown              Take server down
status                Gives a short status message from the server
start-slave           Start slave
stop-slave            Stop slave
variables             Prints variables available
version               Get version info from server

※ [root@colinux ~]# mysqladmin shutdown -u root -ppassword

mysqladminでローカルリモートサーバーのshutdownが可能。startオプション無し。
mysqlコマンドでは出来ません。

■ping Check if mysqld is alive
[root@localhost ~]$ mysqladmin ping -h localhost -u root -p
Enter password:
mysqld is alive
[root@localhost ~]$

■processlist Show list of active threads in server
[root@localhost ~]$ mysqladmin processlist -h localhost -u root -p
Enter password:
+——+——+—————–+—-+———+——+——-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+——+——+—————–+—-+———+——+——-+——————+
| 3638 | root | localhost:37293 | | Query | 0 | | show processlist |
+——+——+—————–+—-+———+——+——-+——————+
[root@localhost ~]$

■reload Reload grant tables
[root@localhost ~]$ mysqladmin reload -h localhost -u root -p
Enter password:
[root@localhost ~]$

■refresh Flush all tables and close and open logfiles
[root@localhost ~]$ mysqladmin refresh -h localhost -u root -p
Enter password:
[root@localhost ~]$

■shutdown Take server down
[root@localhost ~]$ mysqladmin shutdown -h localhost -u root -p
Enter password:
[root@localhost ~]$

※注意 Startは出来ません。

■status Gives a short status message from the server
[root@localhost ~]$ mysqladmin status -h localhost -u root -p
Enter password:
Uptime: 90 Threads: 1 Questions: 1 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.11
[root@localhost ~]$

■start-slave Start slave
■stop-slave Stop slave
■variables Prints variables available
[root@localhost ~]$ mysqladmin variables -h localhost -u root -p
Enter password:
+———————————+———————————————————————–+
| Variable_name | Value |
+———————————+———————————————————————–+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| autocommit | ON |
| automatic_sp_privileges | ON |
| back_log | 50 |
| basedir | /usr/local/src/mysql-5.1.25-rc-linux-i686-icc-glibc23/ |
| big_tables | OFF |
| binlog_cache_size | 32768 |
| binlog_format | MIXED |
| bulk_insert_buffer_size | 8388608 |
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |

■version Get version info from server
[root@localhost ~]$ mysqladmin version -h localhost -u root -p
Enter password:
mysqladmin Ver 8.42 Distrib 5.1.25-rc, for redhat-linux-gnu on i686
Copyright (C) 2000-2006 MySQL AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version 5.1.25-rc-log
Protocol version 10
Connection localhost via TCP/IP
TCP port 3306
Uptime: 3 min 19 sec

Threads: 1 Questions: 4 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.20
[root@localhost ~]$


■ mysqlクライアントを利用してのDB作成

mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| test |
+——————–+
3 rows in set (0.00 sec)

mysql> CREATE DATABASE DB01 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.04 sec)

mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| DB01 |
| mysql |
| test |
+——————–+
4 rows in set (0.00 sec)

mysql>

■ mysqladminコマンドを利用してのDB作成

[root@colinux ~]# mysqladmin -u root -ppassword CREATE DB02;

[root@colinux ~]# mysqlshow -u root -ppassword
+——————–+
|     Databases      |
+——————–+
| information_schema |
| DATABASE           |
| DB01               |
| DB02               |
| mysql              |
| test               |
+——————–+
[root@colinux ~]#

DBは作成されているが、文字コードや照合順序は?

mysql> show create database DB02;
+———-+—————————————————————+
| Database | Create Database                                               |
+———-+—————————————————————+
| DB02     | CREATE DATABASE `DB02` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+———-+—————————————————————+
1 row in set (0.00 sec)

※ 文字コードを設定し忘れた場合、ALTER DATABASE DB02 default character set=utf8; で変更可能。

mysql> SHOW COLLATION LIKE ‘utf8_%_ci’;

collation


MYSQLに接続して来ているユーザーの確認。
不要なプロセスは、他のDBと同様にkillコマンドでプロセスIDを指定して停止出来る。

━━━━━━━━━ show processlist ━━━━━━━━━━
mysql> show processlist;
+—-+——+———–+——+———+——+——-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+——+———–+——+———+——+——-+——————+
| 14 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+—-+——+———–+——+———+——+——-+——————+
1 row in set (0.01 sec)

mysql> show full processlist;
+—-+——+———–+——+———+——+——-+———————–
+
| Id | User | Host | db | Command | Time | State | Info
|
+—-+——+———–+——+———+——+——-+———————–
+
| 14 | root | localhost | NULL | Query | 0 | NULL | show full processlist
|
+—-+——+———–+——+———+——+——-+———————–
+
1 row in set (0.00 sec)

mysql>

━━━━━━━━━ mysqladmin ━━━━━━━━━━

[root@colinux ~]# mysqladmin -u variable -ppassword processlist;
+—-+———-+———–+—-+———+——+——-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+———-+———–+—-+———+——+——-+——————+
| 11 | variable | localhost | | Query | 0 | | show processlist |
+—-+———-+———–+—-+———+——+——-+——————+
[root@colinux ~]# mysqladmin -u variable -ppassword kill 11
[root@colinux ~]#

processlist


mysqlbinlog (バイナリログファイルを処理ユーティリティ)

no-defaults

サーバが生成するバイナリログファイルはバイナリフォーマットで書かれています。
これらのファイルをテキストフォーマットで確認するには、mysqlbinlogユーティリティを使用してください。
それに加えて、複製セットアップ内のスレーブサーバによって書き出されたリレイログファイルを読み取るのに
mysqlbinlogを使用することもできます。リレイログはバイナリログファイルと同じフォーマットです。

[root@localhost data]#mysqlbinlog --no-defaults mysql-bin.000008

http://dev.mysql.com/doc/refman/5.1/ja/mysqlbinlog.html

※–no-defaultsオプションはmy.cnfの中でDefaultの文字コードが設定されてある場合に必要。

[root@localhost data]# mysqlbinlog --no-defaults mysql-bin.000008
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#090127 17:15:55 server id 1 end_log_pos 106 Start: binlog v 4, server v 5.1.25-rc-log created 090127 17:15:55 at startup
ROLLBACK/*!*/;
BINLOG ‘
u8J+SQ8BAA4xLjI1LXJjLWxvZwAAAAAAA
‘/*!*/;
# at 106
#090127 17:16:08 server id 1 end_log_pos 453 Query thread_id=2 exec_time=0 error_code=0
use DBNAME /*!*/;
SET TIMESTAMP=1233044168/*!*/;
SET @@session.pseudo_thread_id=2/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
mysqlbinlogコマンドは特定の時間までリカバリーするときなどにも使われる、
mysqlの管理者は理解しておく必要がある。
※ Oracleのアーカイブログ適用と同じOracleを運用していた時には、
時間指定で戻した(mysqlオプション: –stop-datetime)経験はありませんが
特定のArchiveログの適用(mysqlオプション: –stop-position)する事は
頻繁に発生しておりました。

==========================================================
MYSQLBINLOGのヘルプ抜粋
==========================================================
mysqlbinlog Ver 3.3 for pc-linux-gnu at i686
By Monty and Sasha, for your professional use
This software comes with NO WARRANTY: This is free software,
and you are welcome to modify and redistribute it under the GPL license

Dumps a MySQL binary log in a format usable for viewing or for piping to
the mysql command line client

MYSQLのバイナリーログを読むViewとして利用する事が出来ます。

Usage: mysqlbinlog [options] log-files
-?, –help Display this help and exit.
–base64-output[=name]
Determine when the output statements should be
base64-encoded BINLOG statements: ‘never’ disables it and
works only for binlogs without row-based events; ‘auto’
is the default and prints base64 only when necessary
(i.e., for row-based events and format description
events); ‘always’ prints base64 whenever possible.
‘always’ is for debugging only and should not be used in
a production system. The default is ‘auto’.
–base64-output is a short form for
–base64-output=always.
–character-sets-dir=name
Directory where character sets are.
-d, –database=name List entries for just this database (local log only).

指定されたデータベースのログのみをsqlファイルに出力する。
例)
$ mysqlbinlog --database="TEST" \
/backup/mysql-bin.000019 > /backup/recovery.sql

–debug-check Check memory and open file usage at exit .
–debug-info Print some debug info at exit.
-D, –disable-log-bin
Disable binary log. This is useful, if you enabled
–to-last-log and are sending the output to the same
MySQL server. This way you could avoid an endless loop.
You would also like to use it when restoring after a
crash to avoid duplication of the statements you already
have. NOTE: you will need a SUPER privilege to use this
option.

バイナリログの出力を無効にする。

-F, –force-if-open Force if binlog was not closed properly.
-f, –force-read Force reading unknown binlog events.
-H, –hexdump Augment output with hexadecimal and ASCII event dump.
-h, –host=name Get the binlog from server.
-l, –local-load=name
Prepare local temporary files for LOAD DATA INFILE in the
specified directory.
-o, –offset=# Skip the first N entries.
-p, –password[=name]
Password to connect to remote server.
-P, –port=# Port number to use for connection or 0 for default to, in
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/services, built-in default (3306).
-j, –position=# Deprecated. Use –start-position instead.
–protocol=name The protocol of connection (tcp,socket,pipe,memory).
-R, –read-from-remote-server
Read binary logs from a MySQL server
-r, –result-file=name
Direct output to a given file.
–server-id=# Extract only binlog entries created by the server having
the given id.
–set-charset=name Add ‘SET NAMES character_set’ to the output.
-s, –short-form Just show regular queries: no extra info and no row-based
events. This is for testing only, and should not be used
in production systems. If you want to suppress
base64-output, consider using –base64-output=never
instead.
-S, –socket=name Socket file to use for connection.
–start-datetime=name
Start reading the binlog at first event having a datetime
equal or posterior to the argument; the argument must be
a date and time in the local time zone, in any format
accepted by the MySQL server for DATETIME and TIMESTAMP
types, for example: 2004-12-25 11:25:56 (you should
probably use quotes for your shell to set it properly).

バイナリログからの開始日時を指定し、その時点からのログがsqlファイルに出力される。
例)
$ mysqlbinlog --start-datetime="2006-12-13 06:30:00" \
/backup/mysql-bin.000019 > /backup/recovery.sql

–start-position=# Start reading the binlog at position N. Applies to the
first binlog passed on the command line.

指定された位置からログを読み始める。
このオプションはコマンドラインで指定された最初のバイナリログファイルに適用される。
例)
$ mysqlbinlog --start-position=7743 \
/backup/mysql-bin.000017 /backup/mysql-bin.000018 > /backup/recovery.sql

–stop-datetime=name
Stop reading the binlog at first event having a datetime
equal or posterior to the argument; the argument must be
a date and time in the local time zone, in any format
accepted by the MySQL server for DATETIME and TIMESTAMP
types, for example: 2004-12-25 11:25:56 (you should
probably use quotes for your shell to set it properly).

バイナリログからの終了日時を指定し、その時点までのログがsqlファイルに出力される。
例)
$ mysqlbinlog --stop-datetime="2006-12-13 08:00:00" \
/backup/mysql-bin.000019 > /backup/recovery.sql

–stop-position=# Stop reading the binlog at position N. Applies to the
last binlog passed on the command line.

指定された位置までログを読み込む。
このオプションはコマンドラインで指定された最後のバイナリログファイルに適用される。
例)
$ mysqlbinlog --stop-position=15324 \
/backup/mysql-bin.000017 /backup/mysql-bin.000018 > /backup/recovery.sql

-t, –to-last-log Requires -R. Will not stop at the end of the requested
binlog but rather continue printing until the end of the
last binlog of the MySQL server. If you send the output
to the same MySQL server, that may lead to an endless
loop.
-u, –user=name Connect to the remote server as username.
-v, –verbose Reconstruct SQL statements out of row events. -v -v adds
comments on column data types
-V, –version Print version and exit.
–open_files_limit=#
Used to reserve file descriptors for usage by this
program

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


curlコマンドとwgetコマンドのメモ書きです。

[root@colinux tmp]# wget http://variable.jp
URLにアクセスしてHTMLをファイルに保存

[root@colinux tmp]# curl http://variable.jp
URLにアクセスしてHTMLを表示
——————————————————————————————–

[root@colinux wget]# wget http://variable.jp/wp-content/themes/cloudy/VARIABLE.J
P.jpg
–15:39:37– http://variable.jp/wp-content/themes/cloudy/VARIABLE.JP.jpg
=> `VARIABLE.JP.jpg.1′
Resolving variable.jp… 59.106.12.216
Connecting to variable.jp|59.106.12.216|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 2,873 (2.8K) [image/jpeg]

100%[====================================>] 2,873 –.–K/s

15:39:37 (561.13 KB/s) – `VARIABLE.JP.jpg.1′ saved [2873/2873]

[root@colinux wget]#

ファイルに保存するには「 -O 」オプション
[root@colinux curl]# curl -O http://variable.jp/wp-content/themes/cloudy/VARIABL
E.JP.jpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2873 100 2873 0 0 12491 0 –:–:– –:–:– –:–:– 10550
[root@colinux curl]# ls
VARIABLE.JP.jpg
[root@colinux curl]#

または

[root@colinux curl]# curl –remote-name http://variable.jp/wp-content/themes/clo
udy/VARIABLE.JP.jpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2873 100 2873 0 0 10640 0 –:–:– –:–:– –:–:– 1787
[root@colinux curl]# ls
VARIABLE.JP.jpg
[root@colinux curl]#

[root@colinux curl]# curl -O “http://variable.jp/wp-content/uploads/2009/01/s{1,
2}.jpg”

[1/2]: http://variable.jp/wp-content/uploads/2009/01/s1.jpg –> s1.jpg
–_curl_–http://variable.jp/wp-content/uploads/2009/01/s1.jpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 278 0 278 0 0 1263 0 –:–:– –:–:– –:–:– 0

[2/2]: http://variable.jp/wp-content/uploads/2009/01/s2.jpg –> s2.jpg
–_curl_–http://variable.jp/wp-content/uploads/2009/01/s2.jpg
100 278 0 278 0 0 27800 0 –:–:– –:–:– –:–:– 27800
[root@colinux curl]#

——————————————————————————————–

[root@colinux curl]# curl -o logo1.jpg http://variable.jp/wp-content/themes/clou
dy/VARIABLE.JP.jpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2873 100 2873 0 0 14364 0 –:–:– –:–:– –:–:– 11253
[root@colinux curl]# ls -l
total 4
-rw-r–r– 1 root root 2873 2009-01-29 15:54 logo1.jpg
[root@colinux curl]# curl -o logo2.jpg http://variable.jp/wp-content/themes/clou
dy/VARIABLE.JP.jpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2873 100 2873 0 0 13058 0 –:–:– –:–:– –:–:– 9929
[root@colinux curl]# ls -l
total 8
-rw-r–r– 1 root root 2873 2009-01-29 15:54 logo1.jpg
-rw-r–r– 1 root root 2873 2009-01-29 15:54 logo2.jpg
[root@colinux curl]# curl -o logo3.jpg http://variable.jp/wp-content/themes/clou
dy/VARIABLE.JP.jpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2873 100 2873 0 0 14364 0 –:–:– –:–:– –:–:– 10550
[root@colinux curl]#

——————————————————————————————–

[root@colinux curl]# ls -l
total 12
-rw-r–r– 1 root root 2873 2009-01-29 15:54 logo1.jpg
-rw-r–r– 1 root root 2873 2009-01-29 15:54 logo2.jpg
-rw-r–r– 1 root root 2873 2009-01-29 15:54 logo3.jpg
[root@colinux curl]# curl -R -o logo4.jpg http://variable.jp/wp-content/themes/c
loudy/VARIABLE.JP.jpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2873 100 2873 0 0 13680 0 –:–:– –:–:– –:–:– 11253
[root@colinux curl]# ls -l
total 16
-rw-r–r– 1 root root 2873 2009-01-29 15:54 logo1.jpg
-rw-r–r– 1 root root 2873 2009-01-29 15:54 logo2.jpg
-rw-r–r– 1 root root 2873 2009-01-29 15:54 logo3.jpg

    -rw-r–r– 1 root root 2873 2008-12-31 09:55 logo4.jpg

[root@colinux curl]#

※ -R はタイムスタンプを保持
——————————————————————————————–

[root@colinux curl]# curl http://www.google.com/

302 Moved

302 Moved


The document has moved
here.

[root@colinux curl]# curl -L http://www.google.com/

※ -L はリダイレクトに対応。

——————————————————————————————–

リファラー指定 -e
[root@colinux curl]# curl -e http://variable.jp/ http://reconfirm.jp/

ユーザエージェントの変更 -A
[root@colinux curl]# curl -A curlAgent http://variable.jp/

HTTPのヘッダーの変更 -H
フォームの送信 -d
フォームでのファイルアップロード(POST) -F
ファイルのアップロード -T
最大転送時間制限 -m
[root@colinux curl]# curl -m 60 http://variable.jp/
最大接続時間制限 –connect-timeout

[root@colinux curl]# curl -# -O http://variable.jp/wp-content/themes/cloudy/VARI
ABLE.JP.jpg
######################################################################## 100.0%
[root@colinux curl]#

[root@colinux curl]# curl -I http://variable.jp/
HTTP/1.1 200 OK
Date: Thu, 29 Jan 2009 21:25:53 GMT
Server: Apache
X-Powered-By: PHP/4.4.9
X-Pingback: http://variable.jp/xmlrpc.php
Content-Type: text/html; charset=UTF-8

※ vオプションを利用すると、サーバレスポンスを見ることが出来ます。
[root@colinux curl]# curl -vIL http://variable.jp/
* Trying 59.106.12.216… connected
* Connected to variable.jp (59.106.12.216) port 80 (#0)
> HEAD / HTTP/1.1
> User-Agent: curl/7.16.4 (i386-redhat-linux-gnu) libcurl/7.16.4 OpenSSL/0.9.8b
zlib/1.2.3 libidn/0.6.8
> Host: variable.jp
> Accept: */*
>
< HTTP/1.1 200 OK HTTP/1.1 200 OK < Date: Thu, 29 Jan 2009 21:26:53 GMT Date: Thu, 29 Jan 2009 21:26:53 GMT < Server: Apache Server: Apache < X-Powered-By: PHP/4.4.9 X-Powered-By: PHP/4.4.9 < X-Pingback: http://variable.jp/xmlrpc.php X-Pingback: http://variable.jp/xmlrpc.php < Content-Type: text/html; charset=UTF-8 Content-Type: text/html; charset=UTF-8 * no chunk, no close, no size. Assume close to signal end < * Closing connection #0 その他にも色々なオプションがあるので便利ですね。 --helpで調べて見ましょう。 ※WGETやCURLでアクセス wget_curl

curl-o

curl-h