2013年6月22日土曜日

トランザクションについて(SELECT FOR UPDATEその2)

今回は、前回の「トランザクションについて(SELECT FOR UPDATE)」に続きSELECT FOR UPDATEについてになります。

前回は挙動を確認したので、今回は実際にどういう場面で使えるのか試してみたいと思います。

想定する場面としては、ユーザーの会員登録などで何かを登録する際に
登録するデータがユニークである必要がある場合などになるかと思います。
(テーブル定義でユニーク制約がつけれない場合)

たとえばユーザー会員登録の場合に、
メールアドレスが既に登録されているかされていないかを判定する場合になります。

プログラムの流れ的には、

処理1.メールアドレスが既に登録されているか重複チェック。
処理2.重複していなければ登録。

という流れになると思います。

この際にサーバーが重かったり、登録処理に時間がかかったりしてしまい、
同時に処理1の重複チェック実行されてしまった場合に、
同じメールアドレスが登録データとして投げ込まれてきた場合にはどうなるでしょうか?(; ・`д・´)

答えは・・・両方と登録されてしまうド━━━━m9(゚∀゚)━━━━ン!!

( ´゚д゚`)エーって、言ってるそこの人っ!
実際に流れを確認してみましょう( ̄ー ̄)ニヤリ

■下準備

同じMySQLサーバーに別々のコンソールからログインして2つ開きます。
(以下、コンソールA、コンソールBとします。)

データベースにはMySQLのデフォルトで作られているtestを利用して、
テーブルはuserというテーブルを作って利用します。;

テーブル定義は次のものを利用しています。 mail_addressにはインデックスがつけられています。
CREATE TABLE IF NOT EXISTS `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `mail_address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `mail_address` (`mail_address`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
コンソールAとコンソールBでauto_commitを無効化にします。
#自動コミットを無効化
mysql> SET AUTOCOMMIT = 0;
Query OK, 0 rows affected (0.00 sec)

#設定の確認
mysql> SELECT @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            0 |
+--------------+
1 row in set (0.00 sec)
あらかじめ次のデータをINSERTしておきます。
BEGIN;

INSERT INTO user( mail_address ) VALUES( '1@gmail.com' );
INSERT INTO user( mail_address ) VALUES( '2@gmail.com' );
INSERT INTO user( mail_address ) VALUES( '3@gmail.com' );

COMMIT;

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
|  2 | 2@gmail.com  |
|  3 | 3@gmail.com  |
+----+--------------+
3 rows in set (0.00 sec)

以上で下準備は完了です( ´∀`)bグッ!

■同時に同じメールアドレスが送信されてきた場合を想定した処理順に実行する

登録されるメールアドレスとして、「4@gmail.com」を利用します。

手順1)コンソールAでトランザクションを開始して、登録しようとしている「4@gmail.com」が既にあるか確認する。
#トランザクション開始
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
4@gmail.com」が既にあるか確認
mysql> SELECT * FROM user WHERE mail_address = '4@gmail.com';
Empty set (0.00 sec)
「4@gmail.com」のデータが無かったので、登録を行う。
mysql> INSERT INTO user( mail_address ) VALUES( '4@gmail.com' );
Query OK, 1 row affected (0.00 sec)
登録が完了するけど、COMMITをせずにトランザクションを維持させておきます。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
|  2 | 2@gmail.com  |
|  3 | 3@gmail.com  |
|  4 | 4@gmail.com  |
+----+--------------+
4 rows in set (0.00 sec)
手順2)コンソールBでトランザクションを開始して、登録しようとしている「4@gmail.com」が既にあるか確認する。

トランザクション開始
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
「4@gmail.com」が既にあるか確認
mysql> SELECT * FROM user WHERE mail_address = '4@gmail.com';
Empty set (0.00 sec)
ここでさっきコンソールAで登録したはずの「4@gmail.com」が見つからないです(;゚ Д゚) …!?
なので、プログラム的には登録処理へ進んでしまうことになってしまいます。エッ(゚Д゚≡゚Д゚)マジ?

手順3)コンソールAでトランザクションを終了する。

トランザクションを終了
mysql> COMMIT;
Query OK, 0 rows affected (0.01 sec)

#データの反映を確認する
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
|  2 | 2@gmail.com  |
|  3 | 3@gmail.com  |
|  4 | 4@gmail.com  |
+----+--------------+
4 rows in set (0.00 sec)
手順4)コンソールBでトランザクションを終了する。

トランザクションを終わらせる前に確認する。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
|  2 | 2@gmail.com  |
|  3 | 3@gmail.com  |
|  5 | 4@gmail.com  |
+----+--------------+
4 rows in set (0.00 sec)
トランザクションを終了
mysql> COMMIT;
Query OK, 0 rows affected (0.04 sec)
データの反映を確認する
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
|  2 | 2@gmail.com  |
|  3 | 3@gmail.com  |
|  4 | 4@gmail.com  |
|  5 | 4@gmail.com  |
+----+--------------+
5 rows in set (0.00 sec)
トランザクションを終了する前には無かった、
コンソールAで登録したデータの
|  4 | 4@gmail.com  |
が出現しています(;・∀・)ハッ?

また、「4@gmail.com」が2つ登録されてしまいました!((((;゚Д゚))))ガクガクブルブル

これは、以前書いた記事の「トランザクションについて(その2) 」の通りで、
InnoDBのデフォルトのトランザクション分離レベルがREPEATABLE-READのために発生する現象になります。

トランザクションが開始された時点のSELECT時のスナップショットを保持し続けて利用するため、
今回はコンソールAのトランザクションが完了していない状態なので、
コンソールBでトランザクションを開始したタイミングでは、
コンソールAで追加した「4@gmail.com」がまだ登録されていません。

これにより、コンソールBでの「4@gmail.com」の重複チェックでは検知できずに、
コンソールBでも登録処理が実行されてしまいますガ━━(;゚Д゚)━━ン!!

これを防ぐ方法として、以下の方法があるそうです。

共有ロックのSELECT LOCK IN SHARE MODE
排他ロックのSELECT FOR UPDATE
(SERIALIZEBLE分離レベルを利用することで防ぐことも可能。)

今回は、SELECT FOR UPDATEを利用してみたいと思います。
では、さっきの手順の中にSELECT FOR UPDATEを入れて再度試してみたいと思います。

■同時に同じメールアドレスが送信されてきた場合を想定した処理順に実行する(SELECT FOR UPDATE)

一旦データをリセットします。
BEGIN;

TRUNCATE TABLE user;

INSERT INTO user( mail_address ) VALUES( '1@gmail.com' );
INSERT INTO user( mail_address ) VALUES( '2@gmail.com' );
INSERT INTO user( mail_address ) VALUES( '3@gmail.com' );

COMMIT;
前回と同じように、登録されるメールアドレスとして、「4@gmail.com」を利用します。

手順1)コンソールAでトランザクションを開始して、登録しようとしている「4@gmail.com」が既にあるか確認する。

トランザクション開始
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
「4@gmail.com」が既にあるか確認
mysql> SELECT * FROM user WHERE mail_address = '4@gmail.com' FOR UPDATE;
Empty set (0.00 sec)
「4@gmail.com」のデータが無かったので、登録を行う。
mysql> INSERT INTO user( mail_address ) VALUES( '4@gmail.com' );
Query OK, 1 row affected (0.00 sec)
登録が完了するけど、COMMITをせずにトランザクションを維持させておきます。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
|  2 | 2@gmail.com  |
|  3 | 3@gmail.com  |
|  4 | 4@gmail.com  |
+----+--------------+
4 rows in set (0.00 sec)
手順2)コンソールBでトランザクションを開始して、登録しようとしている「4@gmail.com」が既にあるか確認する。
トランザクション開始
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
「4@gmail.com」が既にあるか確認
mysql> SELECT * FROM user WHERE mail_address = '4@gmail.com' FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
エラー(゚∀゚)キタコレ!!

これは、コンソールAでSELECT FOR UPDATEを利用したために、
対象のレコードに対してロックがかかっている状態になっています。

他のレコードに対してはロックはかかっていないようです。
※mail_addressにインデックス制約がかかっているため。
もしmail_addressにインデックスやユニーク制約がついていない場合には、
レコード全体にロックがかかってしまいますので注意が必要です
詳細は以前の「トランザクションについて(SELECT FOR UPDATE) 」の記事を参照してください。
mysql> SELECT * FROM user WHERE mail_address = '1@gmail.com' FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM user WHERE mail_address = '2@gmail.com' FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  2 | 2@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM user WHERE mail_address = '3@gmail.com' FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 3@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM user WHERE mail_address = '5@gmail.com' FOR UPDATE;
Empty set (0.00 sec)
プライマリーキーのidでも試してみる。
mysql> SELECT * FROM user WHERE id = 1 FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM user WHERE id = 2 FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  2 | 2@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM user WHERE id = 3 FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 3@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)

#コンソールAで挿入されたプライマリーキーのid値はエラーになる。
mysql> SELECT * FROM user WHERE id = 4 FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

mysql> SELECT * FROM user WHERE id = 5 FOR UPDATE;
Empty set (0.00 sec)
条件無しでやってみる。
mysql> SELECT * FROM user FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
手順3)コンソールAでトランザクションを終了する。
#トランザクションを終了
mysql> COMMIT;
Query OK, 0 rows affected (0.01 sec)

#データの反映を確認する
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
|  2 | 2@gmail.com  |
|  3 | 3@gmail.com  |
|  4 | 4@gmail.com  |
+----+--------------+
4 rows in set (0.00 sec)
手順4)コンソールBでトランザクションを終了する。

コンソールAのトランザクションを終わらせたので、
再度、コンソールBから確認してみる。

その前に、SELECT FOR UPDATEを使わずに、
通常のSELECTを実行してみる。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
|  2 | 2@gmail.com  |
|  3 | 3@gmail.com  |
+----+--------------+
3 rows in set (0.00 sec)
コンソールAのデータの追加は反映されていない模様。
今度はSELECT FOR UPDATEを使って確認する。
mysql> SELECT * FROM user WHERE mail_address = '4@gmail.com' FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  4 | 4@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)

ありゃ、データがあることになっている(゚д゚)!
ただ、SELECT FOR UPDATEを外すとやっぱり無いとはいわれるけど!(´・∀・`)ヘー
mysql> SELECT * FROM user WHERE mail_address = '4@gmail.com';
Empty set (0.00 sec)
トランザクションを終了させる。
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)

データの確認をする。

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
|  2 | 2@gmail.com  |
|  3 | 3@gmail.com  |
|  4 | 4@gmail.com  |
+----+--------------+
4 rows in set (0.00 sec)
この結果、重複してデータが被ることはなくなりますド━━━━m9(゚∀゚)━━━━ン!!

(・∀・)イイネ!!

注意点としては、SELECT FOR UPDATEを使う際に、
レコードの絞込みを行うことと、絞込みを行う際に対象のカラムにユニークやインデックス制約をつけておく点になります。

これが行われていないと、SELECT FOR UPDATEした時点でロックされてしまい、
そのトランザクションが終わるまで、そのテーブルに対して更新処理が待たされてしまいます。
※詳細は以前の「トランザクションについて(SELECT FOR UPDATE) 」の記事を参照してください。

そもそも、mail_addressにユニーク制約つけちゃえば問題ないのですが
大人の事情でつけれない場合などに使える手段として、SELECT FOR UPDATEを使うって感じです(; ・`д・´)

以上です(`・ω・´)ゞビシッ!!

参考URL

トランザクションについて(SELECT FOR UPDATE)

今回は、SELECT FOR UPDATE時のトランザクションの挙動を確認したいと思います(`・ω・´)ゞビシッ!!
その前に前回のトランザクションを読んでない人は読んでからの方が理解しやすいと思われます(; ・`д・´)

こちらになります。
トランザクションについて
ランザクションについて(その2)

■下準備
同じMySQLサーバーに別々のコンソールからログインして2つ開きます。
(以下、コンソールA、コンソールBとします。)

データベースにはMySQLのデフォルトで作られているtestを利用して、
テーブルはuserというテーブルを作って利用します。;

テーブル定義は次のものを利用しています。
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `mail_address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDb DEFAULT CHARSET=utf8;
コンソールAとコンソールBでauto_commitを無効化にします。
#自動コミットを無効化
mysql> SET AUTOCOMMIT = 0;
Query OK, 0 rows affected (0.00 sec)

#設定の確認
mysql> SELECT @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            0 |
+--------------+
1 row in set (0.00 sec)
あらかじめ次のデータをINSERTしておきます。
BEGIN;

INSERT INTO user( mail_address ) VALUES( '1@gmail.com' );
INSERT INTO user( mail_address ) VALUES( '2@gmail.com' );
INSERT INTO user( mail_address ) VALUES( '3@gmail.com' );

COMMIT;
以上で下準備は完了です( ´∀`)bグッ!

■SELECT FOR UPDATE同士の挙動の確認

・idのカラムにプライマリーキー制約をつけている状態でのSELECT FOR UPDATE;
・最初のSELECT FOR UPDATE時にidを対象にする。

手順1)コンソールAからトランザクションを開始する
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
手順2)コンソールBからトランザクションを開始する
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
手順3)コンソールAからSELECT FOR UPDATEを実行する
mysql> SELECT * FROM user WHERE id = 1 FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
手順4)コンソールBからSELECT FOR UPDATEを実行する(プライマリーキー制約のあるカラムに対して)

コンソールAでSELECT FOR UPDATEの対象になっているためエラーになる。
mysql> SELECT * FROM user WHERE id = 1 FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
mysql> SELECT * FROM user WHERE id = 2 FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  2 | 2@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
mysql> SELECT * FROM user WHERE id = 3 FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 3@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
手順5)コンソールBからSELECT FOR UPDATEを実行する(制約無しのカラムに対して)
mysql> SELECT * FROM user WHERE mail_address = '1@gmail.com' FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
mysql> SELECT * FROM user WHERE mail_address = '2@gmail.com' FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
mysql> SELECT * FROM user WHERE mail_address = '3@gmail.com' FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
手順6)コンソールBからSELECT FOR UPDATEを実行する(制約無しのカラムに対して)
mysql> SELECT * FROM user FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
手順7)コンソールBでSELECT FOR UPDATEを実行した後に、コンソールAでCOMMITしてみる。 実行中になる。
SELECT * FROM user WHERE mail_address = '1@gmail.com' FOR UPDATE;
手順8)コンソールAをCOMMITする
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)
手順9)コンソールBで実行中だったSELECT FOR UPDATEが正常に処理される。
mysql> SELECT * FROM user WHERE mail_address = '1@gmail.com' FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
+----+--------------+
1 row in set (6.52 sec)
■SELECT FOR UPDATE同士の挙動の確認(その2)

・idのカラムにプライマリーキー制約、
・mail_addressのカラムにユニーク制約、またはインデックス制約をつけている状態でのSELECT FOR UPDATE;

最初のSELECT FOR UPDATE時にidを対象にする。

mail_addressにユニーク制約を追加する
ALTER TABLE  `test`.`user` ADD UNIQUE  `mail_address` (  `mail_address` );
#ユニーク制約の削除
ALTER TABLE user DROP INDEX mail_address;
#インデックス制約の追加
ALTER TABLE  `test`.`user` ADD INDEX  `mail_address` (  `mail_address` )
手順1)コンソールAからトランザクションを開始する
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
手順2)コンソールBからトランザクションを開始する
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
手順3)コンソールAからSELECT FOR UPDATEを実行する
mysql> SELECT * FROM user WHERE id = 1 FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
手順4)コンソールBからSELECT FOR UPDATEを実行する(プライマリーキー制約のあるカラムに対して)

コンソールAでSELECT FOR UPDATEの対象になっているためエラーになる。
mysql> SELECT * FROM user WHERE id = 1 FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
mysql> SELECT * FROM user WHERE id = 2 FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  2 | 2@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
mysql> SELECT * FROM user WHERE id = 3 FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 3@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
手順5)コンソールBからSELECT FOR UPDATEを実行する(制約無しのカラムに対して)

コンソールAでSELECT FOR UPDATEの対象になっているためエラーになる。
mysql> SELECT * FROM user WHERE mail_address = '1@gmail.com' FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
mail_addressにユニーク制約をつけたことで、エラーにならなくなった。
mysql> SELECT * FROM user WHERE mail_address = '2@gmail.com' FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  2 | 2@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
mail_addressにユニーク制約をつけたことで、エラーにならなくなった。
mysql> SELECT * FROM user WHERE mail_address = '3@gmail.com' FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 3@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
手順6)コンソールBからSELECT FOR UPDATEを実行する(制約無しのカラムに対して)
mysql> SELECT * FROM user FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
■SELECT FOR UPDATE同士の挙動の確認(その3)

・idのカラムにプライマリーキー制約、
・mail_addressのカラムにユニーク制約、またはインデックス制約をつけている状態でのSELECT FOR UPDATE;

最初のSELECT FOR UPDATE時にmail_addressを対象にする。
手順1)コンソールAからトランザクションを開始する
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
手順2)コンソールBからトランザクションを開始する
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
手順3)コンソールAからSELECT FOR UPDATEを実行する
mysql> SELECT * FROM user WHERE mail_address = '2@gmail.com' FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  2 | 2@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
手順4)コンソールBからSELECT FOR UPDATEを実行する

コンソールAのSELECT FOR UPDATEの対象外のレコードのため取得される。
mysql> SELECT * FROM user WHERE id = 1 FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
コンソールAのSELECT FOR UPDATEの対象レコードのためエラー。
mysql> SELECT * FROM user WHERE id = 2 FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
コンソールAのSELECT FOR UPDATEの対象外のレコードのため取得される。
mysql> SELECT * FROM user WHERE id = 3 FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 3@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
コンソールAのSELECT FOR UPDATEの対象外のレコードのため取得される。
mysql> SELECT * FROM user WHERE mail_address = '1@gmail.com' FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
コンソールAのSELECT FOR UPDATEの対象レコードのためエラー。
mysql> SELECT * FROM user WHERE mail_address = '2@gmail.com' FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
コンソールAのSELECT FOR UPDATEの対象外のレコードのため取得される。
mysql> SELECT * FROM user WHERE mail_address = '3@gmail.com' FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 3@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
■SELECT FOR UPDATE同士の挙動の確認(その4)

・idのカラムにプライマリーキー制約をつけている状態でのSELECT FOR UPDATE;
・最初のSELECT FOR UPDATE時に条件式を設定せずに全てのレコードを対象にする。

手順1)コンソールAからトランザクションを開始する。
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
手順2)コンソールBからトランザクションを開始する
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
手順3)コンソールAからSELECT FOR UPDATEを実行する 全てのレコードを対象にしたSQLを実行する。
mysql> SELECT * FROM user FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
|  2 | 2@gmail.com  |
|  3 | 3@gmail.com  |
+----+--------------+
3 rows in set (0.00 sec)
手順4)コンソールBからSELECT FOR UPDATEを実行する コンソールAのSELECT FOR UPDATEの対象レコードのためエラー。
mysql> SELECT * FROM user WHERE id = 1 FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
コンソールAのSELECT FOR UPDATEの対象レコードのためエラー。
mysql> SELECT * FROM user WHERE id = 2 FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
コンソールAのSELECT FOR UPDATEの対象レコードのためエラー。
mysql> SELECT * FROM user WHERE id = 3 FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
コンソールAのSELECT FOR UPDATEの対象レコードのためエラー。
mysql> SELECT * FROM user WHERE mail_address = '1@gmail.com' FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
コンソールAのSELECT FOR UPDATEの対象レコードのためエラー。
mysql> SELECT * FROM user WHERE mail_address = '2@gmail.com' FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
コンソールAのSELECT FOR UPDATEの対象レコードのためエラー。
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
SELECT FOR UPDATEを使わないでSELECT
mysql> SELECT * FROM user WHERE mail_address = '1@gmail.com';
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
最初のコンソールAから実行されたSQLが
プライマリーキーやインデックスの制約があるものを指定していないため、
テーブル全体にロックがかかっているような状態になってしまっている?

そのため、後から実行されているコンソールBからの全てのSQLはエラーになってしまう。
(コンソールAのトランザクションが完了すればエラーにならない)

ただし、コンソールBから実行する際に通常のSELECTの場合には取得できる。

■SELECT FOR UPDATE同士の挙動の確認(その5)

・idのカラムにプライマリーキー制約をつけている。
・mail_addressにはインデックスやユニーク制約を一切つけていない状態。
・ただしSELECT FOR UPDATE時に条件式には、mail_addressを利用する
(制約がないカラムを指定するため全ての行にロックがされる)
・コンソールBからUPDATEやINSERTを行ってみる。

手順1)コンソールAでトランザクションを開始して、SELECT FOR UPDATEを実行する
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM user WHERE mail_address = '1@gmail.com' FOR UPDATE;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
手順2)コンソールBでトランザクションを開始して、SELECT FOR UPDATEを実行する

コンソールAで制約がないカラムを指定して、SELECT FOR UPDATEを実行しているため、
レコード全体にロックがかかってしまっている状態なので、
INSERT、UPDATEなどの操作は行えない(´;ω;`)ウッ…
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM user WHERE mail_address = '3@gmail.com' FOR UPDATE;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

mysql> INSERT INTO user( mail_address ) VALUES( '4@gmail.com' );
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

mysql> UPDATE user SET mail_address = '4@gmail.com' WHERE mail_address = '3@gmail.com';
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

mysql> DELETE FROM user WHERE id = 1;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

まとめ!(`・ω・´)シャキーン
・SELECT FOR UPDATEを実行時の注意
 プライマリーキーやインデックスの制約があるカラムを
 条件式で利用しているかしていないかで、その後に実行されるSELECT FOR UPDATEの挙動が変わる。
 (SELECT FOR UPDATEを利用していないSELECTは対象外)

・SELECT FOR UPDATEを実行した際に、プライマリーキーやインデックスの制約があるカラムを対象に絞込みをしている場合
 対象のレコードのみにロックがかかり、別のトランザクションから対象のレコード以外をSELECT FOR UPDATEで参照が可能になる。

・SELECT FOR UPDATEを実行した際に、プライマリーキーやインデックスの制約があるカラムを対象に絞込みをしていなかった場合
 対象のテーブル全体にロックがかかり、別のトランザクションから全てのレコードの参照が待たされる。

・SELECT FOR UPDATEでロックされている間は、INSERT、UPDATEなどは行えない。

次回はこのSELECT FOR UPDATEの使いどころについて考えてみたいと思います(ΦωΦ)フフフ…

以上です(`・ω・´)ゞビシッ!!

参考URL

トランザクションについて(その2)

前回の「トランザクションについて」に続き、 今回はコンソールを2つ使い、同時にトランザクションが実行されている場合の挙動を確認したいと思います。

別々のコンソールで同じMySQLサーバーに接続します。
仮に以降はコンソールA、コンソールBとします。

■コンソールAとコンソールBの下準備

手順1)コンソールAのauto_commitを無効化にします。
#自動コミットを無効化
mysql> SET AUTOCOMMIT = 0;
Query OK, 0 rows affected (0.00 sec)

#設定の確認
mysql> SELECT @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            0 |
+--------------+
1 row in set (0.00 sec)
手順2)レコードを1つ追加します。
#トランザクション開始
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

#登録
mysql> INSERT INTO user( mail_address ) VALUES( '1@gmail.com' );
Query OK, 1 row affected (0.00 sec)

#反映
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)
登録データの確認。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
手順3)コンソールBのauto_commitを無効化にします。
#自動コミットを無効化
mysql> SET AUTOCOMMIT = 0;
Query OK, 0 rows affected (0.00 sec)

#設定の確認
mysql> SELECT @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            0 |
+--------------+
1 row in set (0.00 sec)
先ほどコンソールAから作成したデータを確認する
#データベースtestを指定
mysql> use test;
Database changed

#
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
■コンソールAがトランザクション中に変更したデータがコンソールBからはどういう風に見えるのか確認

手順1)コンソールAから先ほど追加したレコードに対してUPDATEを行います。
#トランザクション開始
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

#データの更新
mysql> UPDATE user SET mail_address = '2@gmail.com' WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
手順2)コンソールBから手順1でUPDATEされたデータを確認してみる。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 1@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
あれ・・・まだUPDATEされていない!?o(゚Д゚ = ゚Д゚)o キョロキョロ

手順3)コンソールAのトランザクションを完了させる。
mysql> COMMIT;
Query OK, 0 rows affected (0.05 sec)
手順4)コンソールBから再度データを確認してみる。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
データが反映されていることを確認(゚∀゚)キタコレ!!

以上のことからコンソールAのトランザクション中に、
コンソールBからデータを確認してみても、データはまだ反映されていない状態で取得されることになります。

これはINSERTでも同じ結果になりました。

■コンソールAがトランザクション中に追加したデータがコンソールBからはどういう風に見えるのか確認

手順1)コンソールAからINSERTを行います。
#トランザクションの開始
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

#データの追加
mysql> INSERT INTO user( mail_address ) VALUES( '3@gmail.com' );
Query OK, 1 row affected (0.02 sec)
手順2)コンソールBから手順1でUPDATEされたデータを確認してみる。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
手順3)コンソールAのトランザクションを完了させる。
mysql> COMMIT;
Query OK, 0 rows affected (0.05 sec)
手順4)コンソールBから再度データを確認してみる。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
|  2 | 3@gmail.com  |
+----+--------------+
2 rows in set (0.00 sec)
■コンソールAのトランザクション中に追加したデータと、コンソールBのトランザクション中に追加したデータが双方からどういう風に見えるのか確認

手順1)コンソールAのトランザクションを開始します。
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
|  2 | 3@gmail.com  |
+----+--------------+
2 rows in set (0.00 sec)
手順2)コンソールBのトランザクションを開始します。
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
|  2 | 3@gmail.com  |
+----+--------------+
2 rows in set (0.00 sec)

手順3)コンソールAからレコードを追加する。
mysql> INSERT INTO user( mail_address ) VALUES( '4@gmail.com' );
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
|  2 | 3@gmail.com  |
|  3 | 4@gmail.com  |
+----+--------------+
3 rows in set (0.00 sec)
手順4)コンソールBからもINSERTを行いCOMMITまで行います。

追加前にデータの確認(コンソールAのレコードは反映されていない)
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
|  2 | 3@gmail.com  |
+----+--------------+
2 rows in set (0.00 sec)
mysql> INSERT INTO user( mail_address ) VALUES( '5@gmail.com' );
Query OK, 1 row affected (0.00 sec)
登録データの確認。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
|  2 | 3@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
3 rows in set (0.00 sec)
データを反映させる。
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)
データの確認
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
|  2 | 3@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
3 rows in set (0.00 sec)
手順5)コンソールAから再度、データを確認してみる。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
|  2 | 3@gmail.com  |
|  3 | 4@gmail.com  |
+----+--------------+
3 rows in set (0.00 sec)
コンソールBのINSERTは反映されていない。
コンソールAのトランザクションを終わらせてデータを確認してみる。
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)
データの確認。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
|  2 | 3@gmail.com  |
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
4 rows in set (0.00 sec)
データを確認してみると、コンソールBで実行されたINSERTも正しく反映されている(゚д゚)!

しかも登録した順番も、先にINSERTとしたコンソールAのデータが古くなっていることから、
INSERTした順番通りになっています。

ということは、
今回のようにINSERT自体はコンソールAの方が先に行ったけど、
コンソールBの方がトランザクションが早く終わった場合でも、
トランザクションが終わった順番は関係なく、INSERTが発生した順番になるっぽい!

次はDELETEの場合を確認してみます。

■トランザクション中にDELETEされたレコードに対して別トランザクションからの見え方について。

手順1)コンソールAでトランザクションの開始
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
|  2 | 3@gmail.com  |
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
4 rows in set (0.00 sec)
手順2)コンソールBでトランザクションの開始
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
|  2 | 3@gmail.com  |
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
4 rows in set (0.00 sec)
手順3)コンソールAでDELETEを行う。
mysql> DELETE FROM user WHERE id = 1;
Query OK, 1 row affected (0.00 sec)

#レコードが消えたことを確認。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  2 | 3@gmail.com  |
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
3 rows in set (0.00 sec)
手順4)コンソールBで確認してみる コンソールAで削除したレコードがまだある。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
|  2 | 3@gmail.com  |
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
4 rows in set (0.00 sec)
手順5)コンソールAでDELETEを反映させる
mysql> COMMIT;
Query OK, 0 rows affected (0.01 sec)

#レコードが消えたことを確認。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  2 | 3@gmail.com  |
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
3 rows in set (0.00 sec)
手順6)コンソールBで確認してみる。 コンソールBはまだトランザクション中のため、 コンソールAで削除したレコードの反映はまだされない。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  1 | 2@gmail.com  |
|  2 | 3@gmail.com  |
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
4 rows in set (0.00 sec)
手順7)コンソールBでトランザクションを終わらせてから確認してみる。 コンソールBのトランザクションを終わらせたことで、 コンソールAのDELETEが反映された状態で取得が行えるようになる。
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)

#コンソールAのDELETEが反映された状態で取得できる。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  2 | 3@gmail.com  |
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
3 rows in set (0.00 sec)
■トランザクション中にDELETEされたレコードに対して別トランザクションからの操作について。 手順1)コンソールAでトランザクション開始
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  2 | 3@gmail.com  |
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
3 rows in set (0.00 sec)
手順2)コンソールBでトランザクション開始
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  2 | 3@gmail.com  |
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
手順3)コンソールAでDELETEを実行する
mysql> DELETE FROM user WHERE id = 2;
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
2 rows in set (0.00 sec)
手順4)コンソールBでコンソールAで消したレコードと同じものをDELETEを実行する

暫く実行中になってから下記のエラーが発生します。
mysql> DELETE FROM user WHERE id = 2;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
実行中のプロセスの状態をコンソールAから見ていたら次のようになっていました。
mysql> show processlist;
+----------+------+--------------------+------+-------------+---------+-----------------------------------------------------------------------+-------------------------------+
| Id       | User | Host               | db   | Command     | Time    | State                                                                 | Info                          |
+----------+------+--------------------+------+-------------+---------+-----------------------------------------------------------------------+-------------------------------+
|      597 | mha  | 192.168.0.27:52514 | NULL | Sleep       |       2 |                                                                       | NULL                          |
|   337530 | repl | 192.168.0.22:59029 | NULL | Binlog Dump | 7507359 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL                          |
| 27927550 | root | localhost          | test | Query       |       0 | NULL                                                                  | show processlist              |
| 27949582 | root | localhost          | test | Query       |      16 | updating                                                              | DELETE FROM user WHERE id = 2 |
+----------+------+--------------------+------+-------------+---------+-----------------------------------------------------------------------+-------------------------------+
4 rows in set (0.00 sec)
手順5)コンソールBでコンソールAで消したレコードに対してUPDATEを実行する

暫く実行中になってから下記のエラーが発生します。
mysql> UPDATE user SET mail_address = '2@gmail.com' WHERE id = 2;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
実行中のプロセスの状態をコンソールAから見ていたら次のようになっていました。
mysql> show processlist;
+----------+------+--------------------+------+-------------+---------+-----------------------------------------------------------------------+-----------------------------------------------------------+
| Id       | User | Host               | db   | Command     | Time    | State                                                                 | Info                                                      |
+----------+------+--------------------+------+-------------+---------+-----------------------------------------------------------------------+-----------------------------------------------------------+
|      597 | mha  | 192.168.0.27:52514 | NULL | Sleep       |       2 |                                                                       | NULL                                                      |
|   337530 | repl | 192.168.0.22:59029 | NULL | Binlog Dump | 7507503 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL                                                      |
| 27927550 | root | localhost          | test | Query       |       0 | NULL                                                                  | show processlist                                          |
| 27949582 | root | localhost          | test | Query       |      10 | Updating                                                              | UPDATE user SET mail_address = '2@gmail.com' WHERE id = 2 |
+----------+------+--------------------+------+-------------+---------+-----------------------------------------------------------------------+-----------------------------------------------------------+
4 rows in set (0.00 sec)
手順6)コンソールBでコンソールAで消したレコードに対してSELECTを実行する コンソールAでDELETEで消したレコードのDELETE、UPDATEは行えなかったがSELECTは可能。
mysql> SELECT * FROM user WHERE id = 2;
+----+--------------+
| id | mail_address |
+----+--------------+
|  2 | 3@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
正常に動作する(゚д゚)!

手順7)コンソールBでトランザクションを終了する。
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)
まだ、コンソールAのDELETEが反映されていない。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  2 | 3@gmail.com  |
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
3 rows in set (0.00 sec)
手順8)コンソールAでトランザクションを終了する。
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
2 rows in set (0.00 sec)
手順9)コンソールBでデータの確認をする。

コンソールAのトランザクションが終わったことで、 コンソールA側にもDELETEが反映される。
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
2 rows in set (0.00 sec)
■トランザクション中にUPDATEされたレコードに対して別トランザクションからのUPDATEについて。 手順1)コンソールAでトランザクションを開始する
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
2 rows in set (0.00 sec)
手順2)コンソールBでトランザクションを開始する
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
2 rows in set (0.00 sec)
手順3)コンソールAでid=3のレコードを更新する
mysql> UPDATE user SET mail_address = '6@gmail.com' WHERE id = 3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 6@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
2 rows in set (0.00 sec)
手順3)コンソールBでコンソールAで更新したレコード同じレコードを更新する
mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
2 rows in set (0.00 sec)
エラーになる
mysql> UPDATE user SET mail_address = '7@gmail.com' WHERE id = 3;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
トランザクションを一度終わらせて再開してからやってみても同じエラーになる。
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)

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

mysql> SELECT * FROM user;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 4@gmail.com  |
|  4 | 5@gmail.com  |
+----+--------------+
2 rows in set (0.00 sec)

#更新はエラー
mysql> UPDATE user SET mail_address = '7@gmail.com' WHERE id = 3;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

#参照は行える
mysql> SELECT * FROM user WHERE id = 3;
+----+--------------+
| id | mail_address |
+----+--------------+
|  3 | 4@gmail.com  |
+----+--------------+
1 row in set (0.00 sec)
別トランザクションで更新・削除されたデータを別トランザクションで更新することは出来ない(´;ω;`)ウッ…

上記の結果からトランザクション中の追加・更新データは 別のトランザクションから操作、または変更された値の確認ができないみたいですね(゚д゚)(。_。)(゚д゚)(。_。) ウンウン

これは、MySQLのストレージエンジンInnoDBのデフォルトのトランザクションの分離レベルが、
REPEATABLE-READのためにそうなるそうです。

REPEATABLE-READでは、SELECT時にスナップショットを保持しておき、
再度読み取る場合はスナップショットを読み込むため、別トランザクションで実行された結果は反映されない。

簡単にまとめると、トランザクションを開始した時点で、
そのタイミングに反映されているデータしかそのトランザクション中には見えないってこと!(`・ω・´)シャキーン
(別のトランザクション中で追加・更新されているものは参照できない。トランザクション内で独立している。)

以上です(`・ω・´)ゞビシッ!!
参考URL

トランザクションについて

いまさらですが・・・今回は基本的なトランザクション動作の復習を兼ねてφ(`д´)メモメモ...

まずは、通常のINSERT時の挙動の確認。

データベースにはMySQLインストール時に勝手に作られている
「test」というデータベースを利用します。
テーブル名は「user」を利用します。

■通常のデータ登録の挙動確認(autocommitがONの場合)

・データベースtestを指定する。
mysql> use test;
Database changed
・テーブルが無い事を確認する
mysql> show tables;
Empty set (0.00 sec)
・userテーブルを作成する。
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `mail_address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDb DEFAULT CHARSET=utf8;
・テーブルが作成されたことを確認する。
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| user           |
+----------------+
1 row in set (0.00 sec)
・データの登録を行う。
INSERT INTO user( mail_address ) VALUES( 'test@gmail.com' );
・登録されたデータの確認を行う。
mysql> SELECT * FROM user;
MySQLの設定には、autocommitと呼ばれる設定値があり、
この設定がONの場合には、INSERTやUPDATEなど各SQLステートメントの直後に、
自動でトランザクションのCOMMITが実行されるようになっています。

autocommitが無効でも自動的にコミットされてしまうSQLがあるそうです。
どこかのサイトからメモったものを載せておきます!(; ・`д・´)
AUTO-COMMITを無効にした場合でも暗黙的にコミットされてしまうSQL文

DDL文全般(CREATE,ALTER,DROPコマンド)
権限管理コマンド(GRANT,REVOKE,CREATE USER,DROP USER,SET PASSWORDなど)
テーブルロック関係(LOCK TABLES, UNLOCK TABLES)
トランザクションの操作(SET autocommit=1,BEGIN,START TRANSACTION)
その他の管理系のコマンド(ANALYZE TABLE, CHECK TABLE, REPAIR TABLE, OPTIMIZE TABLEなど)
InnoDBに加えてMyISAMも併用している場合に、テーブルロックが必要な場面がある時に、
トランザクション中はテーブルロックを利用しないように注意すること。

今行ったINSERTがautocommitの設定がONの状態だったことを確認します。
・現在のautocommit設定の確認
mysql> SELECT @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)
autocommitが1なので自動commitがされるような設定になっています。
そのため、INSERTしたデータがすぐに反映されるようになっています。

■通常のデータ登録の挙動確認(autocommitがOFFの場合)

・autocommitをOFFにする。
mysql> SET AUTOCOMMIT = 0;
Query OK, 0 rows affected (0.00 sec)
autocommitがOFFの場合には、
明示的にトランザクションを利用しない限りはデータが登録されません。

たとえば、先ほどの手順で登録を行ってみてもデータが反映されないです。

新しいデータを登録する
mysql> INSERT INTO user( mail_address ) VALUES( 'autocommit_off@gmail.com' );
Query OK, 1 row affected (0.00 sec)
確認すると、データは正常に登録されていますが、
AUTOCOMMITがOFFの状態なので、「Ctrl-C」などでMySQLから抜けたりするとデータが反映されずに、終了します。
(ROLLBACKが実行された扱いになる?)
mysql> SELECT * FROM user;
+----+--------------------------+
| id | mail_address             |
+----+--------------------------+
|  1 | test@gmail.com           |
|  2 | autocommit_off@gmail.com |
+----+--------------------------+
2 rows in set (0.00 sec)
MySQL終了
mysql> Ctrl-C -- exit!
Aborted
MySQLに再接続
mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 27894244
Server version: 5.5.30-log MySQL Community Server (GPL) by Remi

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
データベースtestを指定する。
mysql> use test;
Database changed
userテーブルの中身を確認する。
mysql> SELECT * FROM user;
+----+----------------+
| id | mail_address   |
+----+----------------+
|  1 | test@gmail.com |
+----+----------------+
1 row in set (0.00 sec)
これは、autocommitがOFFのために、明示的にCOMMITを実行しない限り、
データがテーブルに反映されないためです。

次は、INSERT後にCOMMITを実行して確認してみます。
そのまえに、MySQLを一度抜けたため、先ほどOFFにしたautocommitがデフォルトのONに戻ってしまっているのを戻す必要があります。 (先ほど設定した方法ではセッション単位で有効な設定のため)
mysql> SET AUTOCOMMIT = 0;
Query OK, 0 rows affected (0.00 sec)
データの登録を行う。
mysql> INSERT INTO user( mail_address ) VALUES( 'autocommit_off@gmail.com' );
Query OK, 1 row affected (0.00 sec)
INSERTの確認
mysql> SELECT * FROM user;
+----+--------------------------+
| id | mail_address             |
+----+--------------------------+
|  1 | test@gmail.com           |
|  3 | autocommit_off@gmail.com |
+----+--------------------------+
2 rows in set (0.00 sec)
COMMITを実行する
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)
MySQLを終わらせる。
mysql> Ctrl-C -- exit!
Aborted
MySQLに接続
$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 27922176
Server version: 5.5.30-log MySQL Community Server (GPL) by Remi

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
データベースtestを指定する。
mysql> use test;
Database changed
データの確認
mysql> SELECT * FROM user;
+----+--------------------------+
| id | mail_address             |
+----+--------------------------+
|  1 | test@gmail.com           |
|  3 | autocommit_off@gmail.com |
+----+--------------------------+
2 rows in set (0.00 sec)
今度はデータが消えずに登録が完了しました( ´∀`)bグッ!

ここで確認するべき項目として、
auto_increment属性がついているidカラムの値になります。

auto_incrementはデータのINSERT時に連番を自動で挿入してくれるものですが、
データ的には2個しか無いのにidが3になってしまっています。

これは、1つ前の手順でCOMMITを実行せずにMySQLを終わらせてしまった場合でも、
auto_increment自体は1つ進んでしまう事を示します。

たとえば、トランザクションを実行したときに、
ROLLBACKを実行した場合でも同様の動きになります。

■トランザクションの手順を踏んだデータの登録方法

先ほどの手順でautocommitが0の場合には、
明示的にCOMMITを実行しなければデータが反映されない点について確認しましたが、
この手順ではトランザクションの一部の手続きが省略されています。
(MySQLはBEGINは明示的に実行せずともトランザクションは開始されるようになっている)

そこで次は正しいトランザクション手続きの方法を見ていきたいと思います。

今まででの手順では、トランザクション処理を操作するコマンドとして、
COMMITのみを利用しましたが、実際は他にもBEGIN(START TRANSACTION)、ROLLBACKがあります。

各コマンドの意味は下記の通りになります。

BEGINは、トランザクションを開始する場合に実行するコマンド。
COMMITは、トランザクション中に行った作業を全て反映させる場合に実行するコマンド。
ROLLBACKは、トランザクション中に行った作業を全て戻す場合に実行するコマンド。

では、トランザクションの各コマンドを明示しながらINSERTを行っていきたいと思います。

まず、トランザクション開始を行います。
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
データの登録。
mysql> INSERT INTO user( mail_address ) VALUES( 'transaction@gmail.com' );
Query OK, 1 row affected (0.00 sec)
データの確認
mysql> SELECT * FROM user;
+----+--------------------------+
| id | mail_address             |
+----+--------------------------+
|  1 | test@gmail.com           |
|  3 | autocommit_off@gmail.com |
|  4 | transaction@gmail.com    |
+----+--------------------------+
3 rows in set (0.00 sec)
トランザクション完了
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)
トランザクションを明示した場合には、
上記のような手順になります。

次はROLLBACKを試してみたいと思います。

トランザクション開始を行います。
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
データの登録
mysql> INSERT INTO user( mail_address ) VALUES( 'rollback1@gmail.com' );
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO user( mail_address ) VALUES( 'rollback2@gmail.com' );
Query OK, 1 row affected (0.00 sec)
データの確認
mysql> SELECT * FROM user;
+----+--------------------------+
| id | mail_address             |
+----+--------------------------+
|  1 | test@gmail.com           |
|  3 | autocommit_off@gmail.com |
|  4 | transaction@gmail.com    |
|  5 | rollback1@gmail.com      |
|  6 | rollback2@gmail.com      |
+----+--------------------------+
5 rows in set (0.00 sec)
トランザクションをキャンセル。
mysql> ROLLBACK;
Query OK, 0 rows affected (0.01 sec)
データの確認してみると、トランザクションの開始前に戻っています!(`・ω・´)シャキーン
mysql> SELECT * FROM user;
+----+--------------------------+
| id | mail_address             |
+----+--------------------------+
|  1 | test@gmail.com           |
|  3 | autocommit_off@gmail.com |
|  4 | transaction@gmail.com    |
+----+--------------------------+
3 rows in set (0.00 sec)
※ROLLBACKを行った場合でも、auto_increment値は進むので、
次のINSERT時には7からになる。

次に使われるauto_increment値は次のコマンドで確認できます。
mysql> SHOW TABLE STATUS LIKE 'user'\G;
*************************** 1. row ***************************
           Name: user
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 3
 Avg_row_length: 5461
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
 Auto_increment: 7
    Create_time: 2013-06-21 14:20:02
    Update_time: NULL
     Check_time: NULL
      Collation: utf8_general_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.00 sec)

ERROR:
No query specified
MySQLはBEGINは明示的に実行せずともトランザクションは開始されるようになっているので、
次のようにいきなりコマンドでデータの登録をした場合でも、ROLLBACKが適用される。 (autocommitがOFFの場合のみ)
mysql> INSERT INTO user( mail_address ) VALUES( 'rollback3@gmail.com' );
Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM user;
+----+--------------------------+
| id | mail_address             |
+----+--------------------------+
|  1 | test@gmail.com           |
|  3 | autocommit_off@gmail.com |
|  4 | transaction@gmail.com    |
|  7 | rollback3@gmail.com      |
+----+--------------------------+

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

mysql> SELECT * FROM user;
+----+--------------------------+
| id | mail_address             |
+----+--------------------------+
|  1 | test@gmail.com           |
|  3 | autocommit_off@gmail.com |
|  4 | transaction@gmail.com    |
+----+--------------------------+
4 rows in set (0.00 sec)
ROLLBACKが正常に動作する。(`・ω・´)シャキーン

今回は基本的なトランザクションの流れについて確認したので、
次回は、同時にトランザクションが実行されたときの挙動の確認をしたいと思います。

以上(`・ω・´)ゞビシッ!!

参考URL

2013年6月20日木曜日

squidコマンド一覧

squidのコマンド一覧φ(`д´)メモメモ... ログローテート
sudo /usr/local/sbin/squid -k rotate
バージョンの確認
squid -v
Squid Cache: Version 3.1.10
構文チェック
squid -k parse
設定ファイルの再読み込み(起動中に可能)
squid -k reconfigure
起動
sudo /etc/init.d/squid start
停止
sudo /etc/init.d/squid stop
・ファイルの参照数
squidclient -h 192.168.0.1 -p 80 mgr:info| grep 'file descri'
        Maximum number of file descriptors:   1024
        Available number of file descriptors: 1005
        Reserved number of file descriptors:   100
/etc/init.d/squid startで実行されるもの(起動ファイルを設定している場合)
#
/etc/init.d/squid start

#
/etc/init.d/squid stop

#
/etc/init.d/squid reconfigure
フォアグラウンドで起動
sudo /usr/local/sbin/squid -NCd1
フォアグラウンドで起動
sudo /usr/local/sbin/squid -NDsYd1
コマンドヘルプ
Usage: squid [-hvzCDFINRYX] [-d level] [-s | -l facility] [-f config-file] [-u port] [-k signal]
       -d level  Write debugging to stderr also.
       -f file   Use given config-file instead of
                 /usr/local/stow/squid-2.7/etc/squid.conf
       -h        Print help message.
       -k reconfigure|rotate|shutdown|interrupt|kill|debug|check|parse
                 Parse configuration file, then send signal to
                 running copy (except -k parse) and exit.
       -s | -l facility
                 Enable logging to syslog.
       -u port   Specify ICP port number (default: 3130), disable with 0.
       -v        Print version.
       -z        Create swap directories
       -C        Do not catch fatal signals.
       -D        Disable initial DNS tests.
       -F        Don't serve any requests until store is rebuilt.
       -I        Override HTTP port with the bound socket passed in on stdin.
       -N        No daemon mode.
       -R        Do not set REUSEADDR on port.
       -S        Double-check swap during rebuild.
       -X        Force full debugging.
       -Y        Only return UDP_HIT or UDP_MISS_NOFETCH during fast reload.
各オプションの説明。
-a ポート番号
指定したポート番号でリクエストを待ち受けます。  

-d レベル 
stderrへのデバックレベルを指定します。 指定したレベルまでのメッセージがstderrではき出されます。

-f 設定ファイル 
指定した設定ファイル(squid.conf)を使って起動します。

-h 
使い方のヘルプを表示

-k reconfigure 
設定ファイルを再度呼び込みます。 kill -HUPと等価です。

-k rotate
kill -USR1と等価です。 これによってログのローテションを行います。 ログを(例えば日ごとに)幾つかのファイルに分ける場合にはこれを実行すると良いでしょう。

-k shutdown 
Squidを安全に終了させます。 接続中のセッションが終わるまで待ってから終了します。

-k interrupt 
接続中のセッションの終了を待たずに、直ちにSquidを終了します。

-k kill 
ログファイルをクローズしたりキャッシュをクローズせずに直ちにSquidを終了します。 終了させるための最後の手段として使うようにしてください。

-k debug 
USR2シグナルを発行します。 これによってSquidは完全なデバックメッセージを表示するようになります。 再びUSR2シグナルを与えると、デバックメッセージの表示を終了します。

-k check 
ZEROシグナルを発行します。 これはSquidプロセスが動作しているかをチェックする際に利用します。

-s 
Syslogへの出力を有効にします。 ログはレベル0のものだけが出力されます。

-u ポート番号 
ICPメッセージを交換するポートを指定できます。 デフォルトでは3130です。

-v 
バージョンを表示します。

-z 
スワップディレクトリ(キャッシュディレクトリ)を作成します。
初めてSquidを実行する時やcache_dirの設定を変更した場合にはこれを実行します。

-D 
DNSの検査をしません。 Squidは起動時に有名な幾つかのホストのresolvを実行してDNSが正常に機能するかを検査しています。これを行わないでSquidを起動する場合に指定します。

-F 
swap.stateログをクリーンにします。 クリーンを行っている最中にHTTPリクエストがあってもログには記録できません。

-D 
デーモンプロセスにならないように起動します。 

-R 
SO_REUSEADDR オプションをソケットにセットしません。 

-V 
HTTPアクセラレータモードでバーチャルホストをサポートします。 これは httpd_accel_host virtual を設定ファイルに書くのと同じことです。

-X 
設定ファイルの構文のフルデバッグを有効にします。

-Y 
Return ICP_OP_MISS_NOFETCH instead of ICP_OP_MISS while the swap.state file is being read. If your cache has mostly child caches which use ICP, this will allow your cache to rebuild faster. 
以上です(`・ω・´)ゞビシッ!!

参考URL

2013年6月1日土曜日

リレーログが消えない・・・orz

データベースの容量が70%を超えているよ!!とzabbixのざびたんから通報があったので原因を探してみたら、
リレーログが全然消えていないことが発覚((((;゚Д゚))))ガクガクブルブル

expire_logs_daysの設定で消えるかと思っていたら、
リレーログは自動的に消えるらしいです。

こちらから抜粋しました。
MySQLリレーログの仕様を学ぶ
リレーログは必要がなくなると(そのイベントがすべて実行されたら)、SQL スレッドによって自動的に削除されます。

なのに、消えていないのはなぜっ!(´;ω;`)ウッ…
レプリケーション開始した時から消えてないという・・・orz

※2014/08/25追記
社内のエンジニアから指摘されてこんな設定をハヶ━m9( ゚д゚)っ━ン!!
この原因はこれかもしれないです(; ・`д・´)
5.1.3. レプリケーションのオプションと変数
 --relay-log-purge={0|1}

リレー ログ ファイルが不要になったときの自動パージを有効または無効にする。デフォルト値は 1 (=有効)。 これは、SET GLOBAL relay_log_purge = N で動的に変更できるグローバル変数である。
早速、確認してみる。
mysql> SELECT @@global.relay_log_purge;
+--------------------------+
| @@global.relay_log_purge |
+--------------------------+
|                        0 |
+--------------------------+
1 row in set (0.00 sec)
なぜかOFFになってる・・・( ゚д゚)ポカーン
ONにする。
SET GLOBAL relay_log_purge = 1;
設定が反映されている確認する
#
mysql> SELECT @@global.relay_log_purge;
+--------------------------+
| @@global.relay_log_purge |
+--------------------------+
|                        1 |
+--------------------------+
1 row in set (0.00 sec)
すぐにリレーログを消したい場合には、FLUSH LOGSを実行すると、最新のやつ以外が消える(゚д゚)(。_。)(゚д゚)(。_。) ウンウン
FLUSH LOGS;
なので、下記の手順は全ていらないかも・・・((((;゚Д゚))))ガクガクブルブル


リレーログの確認
ls -alt /var/lib/mysql/
合計 145355588
-rw-rw----   1 mysql mysql         64  5月 20 18:38 2013 relay-log.info
-rw-rw----   1 mysql mysql  268435456  5月 20 18:38 2013 ib_logfile1
-rw-rw----   1 mysql mysql         86  5月 20 18:38 2013 master.info
-rw-rw----   1 mysql mysql  794397247  5月 20 18:38 2013 mysql-relay-bin.000543
-rw-rw----   1 mysql mysql  601198852  5月 20 18:38 2013 mysql-slow.log
-rw-rw----   1 mysql mysql  268435456  5月 20 18:38 2013 ib_logfile0
-rw-rw----   1 mysql mysql  413138944  5月 20 18:38 2013 ibdata1
drwx------   2 mysql mysql       4096  5月 20 18:38 2013 mysql
drwxr-xr-x   7 mysql mysql      36864  5月 20 14:58 2013 .
-rw-rw----   1 mysql mysql        199  5月 20 14:58 2013 mysql-relay-bin.000542
-rw-rw----   1 mysql mysql        286  5月 20 14:58 2013 mysql-relay-bin.000541
-rw-rw----   1 mysql mysql 1073792004  5月 20 14:58 2013 mysql-relay-bin.000540
-rw-rw----   1 mysql mysql        199  5月 20 09:01 2013 mysql-relay-bin.000539
-rw-rw----   1 mysql mysql  492915513  5月 20 09:01 2013 mysql-relay-bin.000538
-rw-rw----   1 mysql mysql  126136431  5月 20 04:31 2013 mysql-relay-bin.000537
-rw-rw----   1 mysql mysql        152  5月 20 04:31 2013 mysql-bin.index
-rw-rw----   1 mysql mysql        107  5月 20 04:31 2013 mysql-bin.000059
-rw-rw----   1 mysql mysql        150  5月 20 04:31 2013 mysql-bin.000058
-rw-rw----   1 mysql mysql          0  5月 20 04:31 2013 ddl_log.log
-rw-rw----   1 mysql mysql          0  5月 20 04:31 2013 mysql-error.log
-rw-rw----   1 mysql mysql        199  5月 20 03:30 2013 mysql-relay-bin.000536
-rw-rw----   1 mysql mysql  173600302  5月 20 03:30 2013 mysql-relay-bin.000535
-rw-rw----   1 mysql mysql        199  5月 20 03:26 2013 mysql-relay-bin.000534
-rw-rw----   1 mysql mysql        286  5月 20 03:26 2013 mysql-relay-bin.000533
-rw-rw----   1 mysql mysql 1074259192  5月 20 03:26 2013 mysql-relay-bin.000532
-rw-rw----   1 mysql mysql        199  5月 19 20:45 2013 mysql-relay-bin.000531
-rw-rw----   1 mysql mysql        286  5月 19 20:45 2013 mysql-relay-bin.000530
-rw-rw----   1 mysql mysql 1073763964  5月 19 20:45 2013 mysql-relay-bin.000529
-rw-rw----   1 mysql mysql        199  5月 19 15:22 2013 mysql-relay-bin.000528
-rw-rw----   1 mysql mysql       3916  5月 19 15:22 2013 mysql-relay-bin.000527
-rw-rw----   1 mysql mysql 1073742490  5月 19 15:22 2013 mysql-relay-bin.000526
-rw-rw----   1 mysql mysql        199  5月 19 09:00 2013 mysql-relay-bin.000525
-rw-rw----   1 mysql mysql  536049710  5月 19 09:00 2013 mysql-relay-bin.000524
-rw-rw----   1 mysql mysql  332429949  5月 19 03:51 2013 mysql-relay-bin.000523
-rw-rw----   1 mysql mysql        150  5月 19 03:51 2013 mysql-bin.000057
-rw-rw----   1 mysql mysql        199  5月 19 03:15 2013 mysql-relay-bin.000522
-rw-rw----   1 mysql mysql  798275461  5月 19 03:15 2013 mysql-relay-bin.000521
-rw-rw----   1 mysql mysql        199  5月 18 21:03 2013 mysql-relay-bin.000520
-rw-rw----   1 mysql mysql        286  5月 18 21:03 2013 mysql-relay-bin.000519
-rw-rw----   1 mysql mysql 1073782996  5月 18 21:03 2013 mysql-relay-bin.000518
-rw-rw----   1 mysql mysql        199  5月 18 15:29 2013 mysql-relay-bin.000517
-rw-rw----   1 mysql mysql       3973  5月 18 15:29 2013 mysql-relay-bin.000516
-rw-rw----   1 mysql mysql 1073742365  5月 18 15:29 2013 mysql-relay-bin.000515
-rw-rw----   1 mysql mysql        199  5月 18 09:00 2013 mysql-relay-bin.000514
-rw-rw----   1 mysql mysql  878893279  5月 18 09:00 2013 mysql-relay-bin.000513
-rw-rw----   1 mysql mysql     854300  5月 18 03:10 2013 mysql-relay-bin.000512
-rw-rw----   1 mysql mysql        150  5月 18 03:10 2013 mysql-bin.000056
-rw-rw----   1 mysql mysql        199  5月 18 03:09 2013 mysql-relay-bin.000511
-rw-rw----   1 mysql mysql  838878510  5月 18 03:09 2013 mysql-relay-bin.000510
-rw-rw----   1 mysql mysql        199  5月 17 20:44 2013 mysql-relay-bin.000509
-rw-rw----   1 mysql mysql        286  5月 17 20:44 2013 mysql-relay-bin.000508
-rw-rw----   1 mysql mysql 1073752742  5月 17 20:44 2013 mysql-relay-bin.000507
-rw-rw----   1 mysql mysql        199  5月 17 15:22 2013 mysql-relay-bin.000506
-rw-rw----   1 mysql mysql        286  5月 17 15:22 2013 mysql-relay-bin.000505
-rw-rw----   1 mysql mysql 1073779461  5月 17 15:22 2013 mysql-relay-bin.000504
-rw-rw----   1 mysql mysql        199  5月 17 09:00 2013 mysql-relay-bin.000503
-rw-rw----   1 mysql mysql  522969149  5月 17 09:00 2013 mysql-relay-bin.000502
-rw-rw----   1 mysql mysql  323063868  5月 17 03:32 2013 mysql-relay-bin.000501
-rw-rw----   1 mysql mysql        150  5月 17 03:32 2013 mysql-bin.000055
-rw-rw----   1 mysql mysql        199  5月 17 03:10 2013 mysql-relay-bin.000500
-rw-rw----   1 mysql mysql 1054098585  5月 17 03:10 2013 mysql-relay-bin.000499
-rw-rw----   1 mysql mysql        199  5月 16 19:15 2013 mysql-relay-bin.000498
-rw-rw----   1 mysql mysql        637  5月 16 19:15 2013 mysql-relay-bin.000497
-rw-rw----   1 mysql mysql 1073742312  5月 16 19:15 2013 mysql-relay-bin.000496
-rw-rw----   1 mysql mysql        199  5月 16 13:52 2013 mysql-relay-bin.000495
-rw-rw----   1 mysql mysql       5128  5月 16 13:52 2013 mysql-relay-bin.000494
-rw-rw----   1 mysql mysql 1073742517  5月 16 13:52 2013 mysql-relay-bin.000493
-rw-rw----   1 mysql mysql        199  5月 16 09:00 2013 mysql-relay-bin.000492
-rw-rw----   1 mysql mysql  451775549  5月 16 09:00 2013 mysql-relay-bin.000491
-rw-rw----   1 mysql mysql  339525481  5月 16 03:42 2013 mysql-relay-bin.000490
-rw-rw----   1 mysql mysql        150  5月 16 03:42 2013 mysql-bin.000054
-rw-rw----   1 mysql mysql        199  5月 16 03:08 2013 mysql-relay-bin.000489
-rw-rw----   1 mysql mysql   24722875  5月 16 03:08 2013 mysql-relay-bin.000488
-rw-rw----   1 mysql mysql        199  5月 16 02:53 2013 mysql-relay-bin.000487
-rw-rw----   1 mysql mysql        286  5月 16 02:53 2013 mysql-relay-bin.000486
-rw-rw----   1 mysql mysql 1073753511  5月 16 02:53 2013 mysql-relay-bin.000485
-rw-rw----   1 mysql mysql        199  5月 15 18:57 2013 mysql-relay-bin.000484
-rw-rw----   1 mysql mysql        286  5月 15 18:57 2013 mysql-relay-bin.000483
-rw-rw----   1 mysql mysql 1073844337  5月 15 18:57 2013 mysql-relay-bin.000482
-rw-rw----   1 mysql mysql        199  5月 15 13:48 2013 mysql-relay-bin.000481
-rw-rw----   1 mysql mysql        286  5月 15 13:48 2013 mysql-relay-bin.000480
-rw-rw----   1 mysql mysql 1074560927  5月 15 13:48 2013 mysql-relay-bin.000479
-rw-rw----   1 mysql mysql        199  5月 15 09:01 2013 mysql-relay-bin.000478
-rw-rw----   1 mysql mysql  519638839  5月 15 09:01 2013 mysql-relay-bin.000477
-rw-rw----   1 mysql mysql        199  5月 15 03:38 2013 mysql-relay-bin.000476
-rw-rw----   1 mysql mysql   63467426  5月 15 03:38 2013 mysql-relay-bin.000475
-rw-rw----   1 mysql mysql    6410249  5月 15 03:30 2013 mysql-relay-bin.000474
-rw-rw----   1 mysql mysql        150  5月 15 03:30 2013 mysql-bin.000053
-rw-rw----   1 mysql mysql        199  5月 15 03:28 2013 mysql-relay-bin.000473
-rw-rw----   1 mysql mysql        286  5月 15 03:28 2013 mysql-relay-bin.000472
-rw-rw----   1 mysql mysql 1074028088  5月 15 03:28 2013 mysql-relay-bin.000471
-rw-rw----   1 mysql mysql        199  5月 14 20:40 2013 mysql-relay-bin.000470
-rw-rw----   1 mysql mysql        286  5月 14 20:40 2013 mysql-relay-bin.000469
-rw-rw----   1 mysql mysql 1073758002  5月 14 20:40 2013 mysql-relay-bin.000468
-rw-rw----   1 mysql mysql        199  5月 14 15:19 2013 mysql-relay-bin.000467
-rw-rw----   1 mysql mysql        286  5月 14 15:19 2013 mysql-relay-bin.000466
-rw-rw----   1 mysql mysql 1073742503  5月 14 15:19 2013 mysql-relay-bin.000465
-rw-rw----   1 mysql mysql        199  5月 14 09:00 2013 mysql-relay-bin.000464
-rw-rw----   1 mysql mysql  528783914  5月 14 09:00 2013 mysql-relay-bin.000463
-rw-rw----   1 mysql mysql        199  5月 14 03:36 2013 mysql-relay-bin.000462
-rw-rw----   1 mysql mysql  119047577  5月 14 03:36 2013 mysql-relay-bin.000461
-rw-rw----   1 mysql mysql        199  5月 14 03:28 2013 mysql-relay-bin.000460
-rw-rw----   1 mysql mysql  144236704  5月 14 03:28 2013 mysql-relay-bin.000459
-rw-rw----   1 mysql mysql  929666618  5月 14 03:24 2013 mysql-relay-bin.000458
-rw-rw----   1 mysql mysql        150  5月 14 03:24 2013 mysql-bin.000052
-rw-rw----   1 mysql mysql        199  5月 13 20:26 2013 mysql-relay-bin.000457
-rw-rw----   1 mysql mysql       2382  5月 13 20:26 2013 mysql-relay-bin.000456
-rw-rw----   1 mysql mysql 1073741987  5月 13 20:26 2013 mysql-relay-bin.000455
-rw-rw----   1 mysql mysql        199  5月 13 14:52 2013 mysql-relay-bin.000454
-rw-rw----   1 mysql mysql       1865  5月 13 14:52 2013 mysql-relay-bin.000453
-rw-rw----   1 mysql mysql 1073742034  5月 13 14:52 2013 mysql-relay-bin.000452
-rw-rw----   1 mysql mysql        199  5月 13 09:00 2013 mysql-relay-bin.000451
-rw-rw----   1 mysql mysql  450477465  5月 13 09:00 2013 mysql-relay-bin.000450
-rw-rw----   1 mysql mysql        199  5月 13 04:42 2013 mysql-relay-bin.000449
-rw-rw----   1 mysql mysql  102337482  5月 13 04:42 2013 mysql-relay-bin.000448
-rw-rw----   1 mysql mysql  189427647  5月 13 03:32 2013 mysql-relay-bin.000447
-rw-rw----   1 mysql mysql        199  5月 13 03:27 2013 mysql-relay-bin.000446
-rw-rw----   1 mysql mysql        286  5月 13 03:27 2013 mysql-relay-bin.000445
-rw-rw----   1 mysql mysql 1073929696  5月 13 03:27 2013 mysql-relay-bin.000444
-rw-rw----   1 mysql mysql        199  5月 12 20:31 2013 mysql-relay-bin.000443
-rw-rw----   1 mysql mysql       1301  5月 12 20:31 2013 mysql-relay-bin.000442
-rw-rw----   1 mysql mysql 1073741906  5月 12 20:31 2013 mysql-relay-bin.000441
-rw-rw----   1 mysql mysql        199  5月 12 15:00 2013 mysql-relay-bin.000440
-rw-rw----   1 mysql mysql        286  5月 12 15:00 2013 mysql-relay-bin.000439
-rw-rw----   1 mysql mysql 1074453155  5月 12 15:00 2013 mysql-relay-bin.000438
-rw-rw----   1 mysql mysql        199  5月 12 09:00 2013 mysql-relay-bin.000437
-rw-rw----   1 mysql mysql  520391382  5月 12 09:00 2013 mysql-relay-bin.000436
-rw-rw----   1 mysql mysql        199  5月 12 03:46 2013 mysql-relay-bin.000435
-rw-rw----   1 mysql mysql    2768084  5月 12 03:46 2013 mysql-relay-bin.000434
-rw-rw----   1 mysql mysql  207352084  5月 12 03:44 2013 mysql-relay-bin.000433
-rw-rw----   1 mysql mysql        199  5月 12 03:29 2013 mysql-relay-bin.000432
-rw-rw----   1 mysql mysql        286  5月 12 03:29 2013 mysql-relay-bin.000431
-rw-rw----   1 mysql mysql 1073859031  5月 12 03:29 2013 mysql-relay-bin.000430
-rw-rw----   1 mysql mysql        199  5月 11 20:30 2013 mysql-relay-bin.000429
-rw-rw----   1 mysql mysql       2153  5月 11 20:30 2013 mysql-relay-bin.000428
-rw-rw----   1 mysql mysql 1073757541  5月 11 20:30 2013 mysql-relay-bin.000427
-rw-rw----   1 mysql mysql        199  5月 11 15:08 2013 mysql-relay-bin.000426
-rw-rw----   1 mysql mysql        286  5月 11 15:08 2013 mysql-relay-bin.000425
-rw-rw----   1 mysql mysql 1073753981  5月 11 15:08 2013 mysql-relay-bin.000424
-rw-rw----   1 mysql mysql        199  5月 11 09:00 2013 mysql-relay-bin.000423
-rw-rw----   1 mysql mysql  531959746  5月 11 09:00 2013 mysql-relay-bin.000422
-rw-rw----   1 mysql mysql  289330027  5月 11 03:46 2013 mysql-relay-bin.000421
-rw-rw----   1 mysql mysql        199  5月 11 03:24 2013 mysql-relay-bin.000420
-rw-rw----   1 mysql mysql 1018604954  5月 11 03:24 2013 mysql-relay-bin.000419
-rw-rw----   1 mysql mysql        199  5月 10 20:00 2013 mysql-relay-bin.000418
-rw-rw----   1 mysql mysql        637  5月 10 20:00 2013 mysql-relay-bin.000417
-rw-rw----   1 mysql mysql 1073742052  5月 10 20:00 2013 mysql-relay-bin.000416
-rw-rw----   1 mysql mysql        199  5月 10 15:04 2013 mysql-relay-bin.000415
-rw-rw----   1 mysql mysql      12856  5月 10 15:04 2013 mysql-relay-bin.000414
-rw-rw----   1 mysql mysql 1073741984  5月 10 15:04 2013 mysql-relay-bin.000413
-rw-rw----   1 mysql mysql        199  5月 10 09:00 2013 mysql-relay-bin.000412
-rw-rw----   1 mysql mysql  521524159  5月 10 09:00 2013 mysql-relay-bin.000411
-rw-rw----   1 mysql mysql     684436  5月 10 03:36 2013 mysql-relay-bin.000410
-rw-rw----   1 mysql mysql        199  5月 10 03:35 2013 mysql-relay-bin.000409
-rw-rw----   1 mysql mysql  187907060  5月 10 03:35 2013 mysql-relay-bin.000408
-rw-rw----   1 mysql mysql        199  5月 10 03:27 2013 mysql-relay-bin.000407
-rw-rw----   1 mysql mysql        286  5月 10 03:27 2013 mysql-relay-bin.000406
-rw-rw----   1 mysql mysql 1074109780  5月 10 03:27 2013 mysql-relay-bin.000405
-rw-rw----   1 mysql mysql        199  5月  9 19:52 2013 mysql-relay-bin.000404
-rw-rw----   1 mysql mysql       2570  5月  9 19:52 2013 mysql-relay-bin.000403
-rw-rw----   1 mysql mysql 1073742119  5月  9 19:52 2013 mysql-relay-bin.000402
-rw-rw----   1 mysql mysql        199  5月  9 15:13 2013 mysql-relay-bin.000401
-rw-rw----   1 mysql mysql       6127  5月  9 15:13 2013 mysql-relay-bin.000400
-rw-rw----   1 mysql mysql 1073741959  5月  9 15:13 2013 mysql-relay-bin.000399
-rw-rw----   1 mysql mysql        199  5月  9 09:00 2013 mysql-relay-bin.000398
-rw-rw----   1 mysql mysql  903525825  5月  9 09:00 2013 mysql-relay-bin.000397
-rw-rw----   1 mysql mysql   11215366  5月  9 03:13 2013 mysql-relay-bin.000396
-rw-rw----   1 mysql mysql        199  5月  9 03:07 2013 mysql-relay-bin.000395
-rw-rw----   1 mysql mysql  880434505  5月  9 03:07 2013 mysql-relay-bin.000394
-rw-rw----   1 mysql mysql        199  5月  8 20:05 2013 mysql-relay-bin.000393
-rw-rw----   1 mysql mysql       5231  5月  8 20:05 2013 mysql-relay-bin.000392
-rw-rw----   1 mysql mysql 1073742060  5月  8 20:05 2013 mysql-relay-bin.000391
-rw-rw----   1 mysql mysql        199  5月  8 15:12 2013 mysql-relay-bin.000390
-rw-rw----   1 mysql mysql      32838  5月  8 15:12 2013 mysql-relay-bin.000389
-rw-rw----   1 mysql mysql 1073742169  5月  8 15:12 2013 mysql-relay-bin.000388
-rw-rw----   1 mysql mysql        199  5月  8 09:00 2013 mysql-relay-bin.000387
-rw-rw----   1 mysql mysql  523251415  5月  8 09:00 2013 mysql-relay-bin.000386
-rw-rw----   1 mysql mysql  528266611  5月  8 03:48 2013 mysql-relay-bin.000385
-rw-rw----   1 mysql mysql        199  5月  8 03:10 2013 mysql-relay-bin.000384
-rw-rw----   1 mysql mysql  810811289  5月  8 03:10 2013 mysql-relay-bin.000383
-rw-rw----   1 mysql mysql        199  5月  7 20:26 2013 mysql-relay-bin.000382
-rw-rw----   1 mysql mysql        286  5月  7 20:26 2013 mysql-relay-bin.000381
-rw-rw----   1 mysql mysql 1073744461  5月  7 20:26 2013 mysql-relay-bin.000380
-rw-rw----   1 mysql mysql        199  5月  7 15:38 2013 mysql-relay-bin.000379
-rw-rw----   1 mysql mysql        286  5月  7 15:38 2013 mysql-relay-bin.000378
-rw-rw----   1 mysql mysql 1073742067  5月  7 15:38 2013 mysql-relay-bin.000377
-rw-rw----   1 mysql mysql        199  5月  7 09:00 2013 mysql-relay-bin.000376
-rw-rw----   1 mysql mysql   20513004  5月  7 09:00 2013 mysql-relay-bin.000375
-rw-rw----   1 mysql mysql        199  5月  7 08:45 2013 mysql-relay-bin.000374
-rw-rw----   1 mysql mysql  924160394  5月  7 08:45 2013 mysql-relay-bin.000373
-rw-rw----   1 mysql mysql  149620558  5月  7 03:24 2013 mysql-relay-bin.000372
-rw-rw----   1 mysql mysql        199  5月  7 03:12 2013 mysql-relay-bin.000371
-rw-rw----   1 mysql mysql  397122025  5月  7 03:12 2013 mysql-relay-bin.000370
-rw-rw----   1 mysql mysql        199  5月  6 23:18 2013 mysql-relay-bin.000369
-rw-rw----   1 mysql mysql        286  5月  6 23:18 2013 mysql-relay-bin.000368
-rw-rw----   1 mysql mysql 1073808143  5月  6 23:18 2013 mysql-relay-bin.000367
-rw-rw----   1 mysql mysql        199  5月  6 15:55 2013 mysql-relay-bin.000366
-rw-rw----   1 mysql mysql  336161280  5月  6 15:55 2013 mysql-relay-bin.000365
-rw-rw----   1 mysql mysql 1073741919  5月  6 15:55 2013 mysql-relay-bin.000364
-rw-rw----   1 mysql mysql        199  5月  6 09:00 2013 mysql-relay-bin.000363
-rw-rw----   1 mysql mysql 1044936900  5月  6 09:00 2013 mysql-relay-bin.000362
-rw-rw----   1 mysql mysql   14401725  5月  6 03:17 2013 mysql-relay-bin.000361
-rw-rw----   1 mysql mysql        199  5月  6 03:08 2013 mysql-relay-bin.000360
-rw-rw----   1 mysql mysql  815808874  5月  6 03:08 2013 mysql-relay-bin.000359
-rw-rw----   1 mysql mysql        199  5月  5 20:53 2013 mysql-relay-bin.000358
-rw-rw----   1 mysql mysql        286  5月  5 20:53 2013 mysql-relay-bin.000357
-rw-rw----   1 mysql mysql 1073752628  5月  5 20:53 2013 mysql-relay-bin.000356
-rw-rw----   1 mysql mysql        199  5月  5 15:47 2013 mysql-relay-bin.000355
-rw-rw----   1 mysql mysql        866  5月  5 15:47 2013 mysql-relay-bin.000354
-rw-rw----   1 mysql mysql 1073741897  5月  5 15:47 2013 mysql-relay-bin.000353
-rw-rw----   1 mysql mysql        199  5月  5 09:00 2013 mysql-relay-bin.000352
-rw-rw----   1 mysql mysql  502568769  5月  5 09:00 2013 mysql-relay-bin.000351
-rw-rw----   1 mysql mysql        199  5月  5 03:42 2013 mysql-relay-bin.000350
-rw-rw----   1 mysql mysql  128478407  5月  5 03:42 2013 mysql-relay-bin.000349
-rw-rw----   1 mysql mysql  824762972  5月  5 03:34 2013 mysql-relay-bin.000348
-rw-rw----   1 mysql mysql        199  5月  4 23:22 2013 mysql-relay-bin.000347
-rw-rw----   1 mysql mysql        286  5月  4 23:22 2013 mysql-relay-bin.000346
-rw-rw----   1 mysql mysql 1073747276  5月  4 23:22 2013 mysql-relay-bin.000345
-rw-rw----   1 mysql mysql        199  5月  4 15:55 2013 mysql-relay-bin.000344
-rw-rw----   1 mysql mysql  336895225  5月  4 15:55 2013 mysql-relay-bin.000343
-rw-rw----   1 mysql mysql 1073742366  5月  4 15:55 2013 mysql-relay-bin.000342
-rw-rw----   1 mysql mysql        199  5月  4 09:00 2013 mysql-relay-bin.000341
-rw-rw----   1 mysql mysql  599800347  5月  4 09:00 2013 mysql-relay-bin.000340
-rw-rw----   1 mysql mysql        199  5月  4 03:36 2013 mysql-relay-bin.000339
-rw-rw----   1 mysql mysql  296589783  5月  4 03:36 2013 mysql-relay-bin.000338
-rw-rw----   1 mysql mysql  497608277  5月  4 03:26 2013 mysql-relay-bin.000337
-rw-rw----   1 mysql mysql        199  5月  3 23:30 2013 mysql-relay-bin.000336
-rw-rw----   1 mysql mysql        976  5月  3 23:30 2013 mysql-relay-bin.000335
-rw-rw----   1 mysql mysql 1073749186  5月  3 23:30 2013 mysql-relay-bin.000334
-rw-rw----   1 mysql mysql        199  5月  3 15:55 2013 mysql-relay-bin.000333
-rw-rw----   1 mysql mysql  344272245  5月  3 15:55 2013 mysql-relay-bin.000332
-rw-rw----   1 mysql mysql 1073742219  5月  3 15:55 2013 mysql-relay-bin.000331
-rw-rw----   1 mysql mysql        199  5月  3 09:00 2013 mysql-relay-bin.000330
-rw-rw----   1 mysql mysql  587307819  5月  3 09:00 2013 mysql-relay-bin.000329
-rw-rw----   1 mysql mysql        199  5月  3 03:37 2013 mysql-relay-bin.000328
-rw-rw----   1 mysql mysql  283549894  5月  3 03:37 2013 mysql-relay-bin.000327
-rw-rw----   1 mysql mysql  424705418  5月  3 03:31 2013 mysql-relay-bin.000326
-rw-rw----   1 mysql mysql        199  5月  3 00:14 2013 mysql-relay-bin.000325
-rw-rw----   1 mysql mysql        286  5月  3 00:14 2013 mysql-relay-bin.000324
-rw-rw----   1 mysql mysql 1073812634  5月  3 00:14 2013 mysql-relay-bin.000323
-rw-rw----   1 mysql mysql        199  5月  2 15:55 2013 mysql-relay-bin.000322
-rw-rw----   1 mysql mysql  278893561  5月  2 15:55 2013 mysql-relay-bin.000321
-rw-rw----   1 mysql mysql 1073742874  5月  2 15:55 2013 mysql-relay-bin.000320
-rw-rw----   1 mysql mysql        199  5月  2 09:00 2013 mysql-relay-bin.000319
-rw-rw----   1 mysql mysql  455379866  5月  2 09:00 2013 mysql-relay-bin.000318
-rw-rw----   1 mysql mysql  133504505  5月  2 03:49 2013 mysql-relay-bin.000317
-rw-rw----   1 mysql mysql        199  5月  2 03:35 2013 mysql-relay-bin.000316
-rw-rw----   1 mysql mysql  706773364  5月  2 03:35 2013 mysql-relay-bin.000315
-rw-rw----   1 mysql mysql        199  5月  2 00:07 2013 mysql-relay-bin.000314
-rw-rw----   1 mysql mysql        286  5月  2 00:07 2013 mysql-relay-bin.000313
-rw-rw----   1 mysql mysql 1073774094  5月  2 00:07 2013 mysql-relay-bin.000312
-rw-rw----   1 mysql mysql        199  5月  1 15:55 2013 mysql-relay-bin.000311
-rw-rw----   1 mysql mysql  302577005  5月  1 15:55 2013 mysql-relay-bin.000310
-rw-rw----   1 mysql mysql 1073742554  5月  1 15:55 2013 mysql-relay-bin.000309
-rw-rw----   1 mysql mysql        199  5月  1 09:00 2013 mysql-relay-bin.000308
-rw-rw----   1 mysql mysql  454910082  5月  1 09:00 2013 mysql-relay-bin.000307
-rw-rw----   1 mysql mysql  427085076  5月  1 03:40 2013 mysql-relay-bin.000306
-rw-rw----   1 mysql mysql        199  5月  1 03:23 2013 mysql-relay-bin.000305
-rw-rw----   1 mysql mysql  426230702  5月  1 03:23 2013 mysql-relay-bin.000304
-rw-rw----   1 mysql mysql        199  5月  1 00:27 2013 mysql-relay-bin.000303
-rw-rw----   1 mysql mysql        286  5月  1 00:27 2013 mysql-relay-bin.000302
-rw-rw----   1 mysql mysql 1074031625  5月  1 00:27 2013 mysql-relay-bin.000301
-rw-rw----   1 mysql mysql        199  4月 30 15:55 2013 mysql-relay-bin.000300
-rw-rw----   1 mysql mysql  216036497  4月 30 15:55 2013 mysql-relay-bin.000299
-rw-rw----   1 mysql mysql 1073742583  4月 30 15:55 2013 mysql-relay-bin.000298
-rw-rw----   1 mysql mysql        199  4月 30 09:00 2013 mysql-relay-bin.000297
-rw-rw----   1 mysql mysql  407586172  4月 30 09:00 2013 mysql-relay-bin.000296
-rw-rw----   1 mysql mysql  421418592  4月 30 03:51 2013 mysql-relay-bin.000295
-rw-rw----   1 mysql mysql        199  4月 30 03:28 2013 mysql-relay-bin.000294
-rw-rw----   1 mysql mysql  331525956  4月 30 03:28 2013 mysql-relay-bin.000293
-rw-rw----   1 mysql mysql        199  4月 30 00:50 2013 mysql-relay-bin.000292
-rw-rw----   1 mysql mysql        286  4月 30 00:50 2013 mysql-relay-bin.000291
-rw-rw----   1 mysql mysql 1073766613  4月 30 00:50 2013 mysql-relay-bin.000290
-rw-rw----   1 mysql mysql        199  4月 29 15:55 2013 mysql-relay-bin.000289
-rw-rw----   1 mysql mysql  164332639  4月 29 15:55 2013 mysql-relay-bin.000288
-rw-rw----   1 mysql mysql 1073742034  4月 29 15:55 2013 mysql-relay-bin.000287
-rw-rw----   1 mysql mysql        199  4月 29 09:00 2013 mysql-relay-bin.000286
-rw-rw----   1 mysql mysql  939838876  4月 29 09:00 2013 mysql-relay-bin.000285
-rw-rw----   1 mysql mysql   11413460  4月 29 03:16 2013 mysql-relay-bin.000284
-rw-rw----   1 mysql mysql        199  4月 29 03:06 2013 mysql-relay-bin.000283
-rw-rw----   1 mysql mysql  215706815  4月 29 03:06 2013 mysql-relay-bin.000282
-rw-rw----   1 mysql mysql        199  4月 29 01:00 2013 mysql-relay-bin.000281
-rw-rw----   1 mysql mysql        286  4月 29 01:00 2013 mysql-relay-bin.000280
-rw-rw----   1 mysql mysql 1073761544  4月 29 01:00 2013 mysql-relay-bin.000279
-rw-rw----   1 mysql mysql        199  4月 28 15:55 2013 mysql-relay-bin.000278
-rw-rw----   1 mysql mysql  267466572  4月 28 15:55 2013 mysql-relay-bin.000277
-rw-rw----   1 mysql mysql 1073742132  4月 28 15:55 2013 mysql-relay-bin.000276
-rw-rw----   1 mysql mysql        199  4月 28 09:00 2013 mysql-relay-bin.000275
-rw-rw----   1 mysql mysql  591994016  4月 28 09:00 2013 mysql-relay-bin.000274
-rw-rw----   1 mysql mysql        199  4月 28 03:33 2013 mysql-relay-bin.000273
-rw-rw----   1 mysql mysql  372013846  4月 28 03:33 2013 mysql-relay-bin.000272
-rw-rw----   1 mysql mysql  241234792  4月 28 03:08 2013 mysql-relay-bin.000271
-rw-rw----   1 mysql mysql        199  4月 28 00:14 2013 mysql-relay-bin.000270
-rw-rw----   1 mysql mysql      13358  4月 28 00:14 2013 mysql-relay-bin.000269
-rw-rw----   1 mysql mysql 1073742388  4月 28 00:14 2013 mysql-relay-bin.000268
-rw-rw----   1 mysql mysql        199  4月 27 15:56 2013 mysql-relay-bin.000267
-rw-rw----   1 mysql mysql  134141647  4月 27 15:55 2013 mysql-relay-bin.000266
-rw-rw----   1 mysql mysql 1073741918  4月 27 15:55 2013 mysql-relay-bin.000265
-rw-rw----   1 mysql mysql        199  4月 27 09:00 2013 mysql-relay-bin.000264
-rw-rw----   1 mysql mysql  749527728  4月 27 09:00 2013 mysql-relay-bin.000263
-rw-rw----   1 mysql mysql  105998624  4月 27 03:22 2013 mysql-relay-bin.000262
-rw-rw----   1 mysql mysql        199  4月 27 03:17 2013 mysql-relay-bin.000261
-rw-rw----   1 mysql mysql  893395518  4月 27 03:17 2013 mysql-relay-bin.000260
-rw-rw----   1 mysql mysql        199  4月 26 17:43 2013 mysql-relay-bin.000259
-rw-rw----   1 mysql mysql    2507764  4月 26 17:43 2013 mysql-relay-bin.000258
-rw-rw----   1 mysql mysql 1073741958  4月 26 17:43 2013 mysql-relay-bin.000257
-rw-rw----   1 mysql mysql        199  4月 26 17:28 2013 mysql-relay-bin.000256
-rw-rw----   1 mysql mysql  253235613  4月 26 17:28 2013 mysql-relay-bin.000255
-rw-rw----   1 mysql mysql 1073742107  4月 26 17:27 2013 mysql-relay-bin.000254
-rw-rw----   1 mysql mysql        199  4月 26 17:16 2013 mysql-relay-bin.000253
-rw-rw----   1 mysql mysql  270664477  4月 26 17:16 2013 mysql-relay-bin.000252
-rw-rw----   1 mysql mysql 1073742274  4月 26 17:16 2013 mysql-relay-bin.000251
-rw-rw----   1 mysql mysql        199  4月 26 17:11 2013 mysql-relay-bin.000250
-rw-rw----   1 mysql mysql    9403856  4月 26 17:11 2013 mysql-relay-bin.000249
-rw-rw----   1 mysql mysql 1073742229  4月 26 17:11 2013 mysql-relay-bin.000248
-rw-rw----   1 mysql mysql        199  4月 26 09:00 2013 mysql-relay-bin.000247
-rw-rw----   1 mysql mysql  445338830  4月 26 09:00 2013 mysql-relay-bin.000246
-rw-rw----   1 mysql mysql        199  4月 26 03:41 2013 mysql-relay-bin.000245
-rw-rw----   1 mysql mysql  411459170  4月 26 03:41 2013 mysql-relay-bin.000244
-rw-rw----   1 mysql mysql  227083626  4月 26 03:28 2013 mysql-relay-bin.000243
-rw-rw----   1 mysql mysql        199  4月 26 01:58 2013 mysql-relay-bin.000242
-rw-rw----   1 mysql mysql        286  4月 26 01:58 2013 mysql-relay-bin.000241
-rw-rw----   1 mysql mysql 1073744456  4月 26 01:58 2013 mysql-relay-bin.000240
-rw-rw----   1 mysql mysql        199  4月 25 17:06 2013 mysql-relay-bin.000239
-rw-rw----   1 mysql mysql        286  4月 25 17:06 2013 mysql-relay-bin.000238
-rw-rw----   1 mysql mysql 1073877206  4月 25 17:06 2013 mysql-relay-bin.000237
-rw-rw----   1 mysql mysql        199  4月 25 09:00 2013 mysql-relay-bin.000236
-rw-rw----   1 mysql mysql  385361104  4月 25 09:00 2013 mysql-relay-bin.000235
-rw-rw----   1 mysql mysql  320867290  4月 25 03:52 2013 mysql-relay-bin.000234
-rw-rw----   1 mysql mysql        199  4月 25 03:31 2013 mysql-relay-bin.000233
-rw-rw----   1 mysql mysql 1004006425  4月 25 03:31 2013 mysql-relay-bin.000232
-rw-rw----   1 mysql mysql        199  4月 24 21:05 2013 mysql-relay-bin.000231
-rw-rw----   1 mysql mysql        286  4月 24 21:05 2013 mysql-relay-bin.000230
-rw-rw----   1 mysql mysql 1073820432  4月 24 21:05 2013 mysql-relay-bin.000229
-rw-rw----   1 mysql mysql        199  4月 24 14:20 2013 mysql-relay-bin.000228
-rw-rw----   1 mysql mysql        286  4月 24 14:20 2013 mysql-relay-bin.000227
-rw-rw----   1 mysql mysql 1073792016  4月 24 14:20 2013 mysql-relay-bin.000226
-rw-rw----   1 mysql mysql        199  4月 24 12:56 2013 mysql-relay-bin.000225
-rw-rw----   1 mysql mysql      79112  4月 24 12:56 2013 mysql-relay-bin.000224
-rw-rw----   1 mysql mysql 1073741939  4月 24 12:56 2013 mysql-relay-bin.000223
-rw-rw----   1 mysql mysql        199  4月 24 09:00 2013 mysql-relay-bin.000222
-rw-rw----   1 mysql mysql  269170315  4月 24 09:00 2013 mysql-relay-bin.000221
-rw-rw----   1 mysql mysql   24101604  4月 24 04:40 2013 mysql-relay-bin.000220
-rw-rw----   1 mysql mysql        199  4月 24 04:19 2013 mysql-relay-bin.000219
-rw-rw----   1 mysql mysql 1073089319  4月 24 04:19 2013 mysql-relay-bin.000218
-rw-rw----   1 mysql mysql        199  4月 23 18:10 2013 mysql-relay-bin.000217
-rw-rw----   1 mysql mysql        286  4月 23 18:10 2013 mysql-relay-bin.000216
-rw-rw----   1 mysql mysql 1073789624  4月 23 18:10 2013 mysql-relay-bin.000215
-rw-rw----   1 mysql mysql        199  4月 23 09:00 2013 mysql-relay-bin.000214
-rw-rw----   1 mysql mysql  390621618  4月 23 09:00 2013 mysql-relay-bin.000213
-rw-rw----   1 mysql mysql        199  4月 23 03:52 2013 mysql-relay-bin.000212
-rw-rw----   1 mysql mysql    3858061  4月 23 03:52 2013 mysql-relay-bin.000211
-rw-rw----   1 mysql mysql  528423637  4月 23 03:48 2013 mysql-relay-bin.000210
-rw-rw----   1 mysql mysql        199  4月 23 02:17 2013 mysql-relay-bin.000209
-rw-rw----   1 mysql mysql        286  4月 23 02:17 2013 mysql-relay-bin.000208
-rw-rw----   1 mysql mysql 1073781620  4月 23 02:17 2013 mysql-relay-bin.000207
-rw-rw----   1 mysql mysql        199  4月 22 17:25 2013 mysql-relay-bin.000206
-rw-rw----   1 mysql mysql        286  4月 22 17:25 2013 mysql-relay-bin.000205
-rw-rw----   1 mysql mysql 1073766004  4月 22 17:25 2013 mysql-relay-bin.000204
-rw-rw----   1 mysql mysql        199  4月 22 09:00 2013 mysql-relay-bin.000203
-rw-rw----   1 mysql mysql  295696445  4月 22 09:00 2013 mysql-relay-bin.000202
-rw-rw----   1 mysql mysql        199  4月 22 04:36 2013 mysql-relay-bin.000201
-rw-rw----   1 mysql mysql   84039434  4月 22 04:36 2013 mysql-relay-bin.000200
-rw-rw----   1 mysql mysql  337054210  4月 22 03:20 2013 mysql-relay-bin.000199
-rw-rw----   1 mysql mysql        199  4月 22 02:30 2013 mysql-relay-bin.000198
-rw-rw----   1 mysql mysql        286  4月 22 02:30 2013 mysql-relay-bin.000197
-rw-rw----   1 mysql mysql 1073863481  4月 22 02:30 2013 mysql-relay-bin.000196
-rw-rw----   1 mysql mysql        199  4月 21 18:45 2013 mysql-relay-bin.000195
-rw-rw----   1 mysql mysql        286  4月 21 18:45 2013 mysql-relay-bin.000194
-rw-rw----   1 mysql mysql 1073744357  4月 21 18:45 2013 mysql-relay-bin.000193
-rw-rw----   1 mysql mysql        199  4月 21 09:00 2013 mysql-relay-bin.000192
-rw-rw----   1 mysql mysql  356120035  4月 21 09:00 2013 mysql-relay-bin.000191
-rw-rw----   1 mysql mysql        199  4月 21 03:32 2013 mysql-relay-bin.000190
-rw-rw----   1 mysql mysql    2266856  4月 21 03:32 2013 mysql-relay-bin.000189
-rw-rw----   1 mysql mysql  266116495  4月 21 03:29 2013 mysql-relay-bin.000188
-rw-rw----   1 mysql mysql        199  4月 21 02:31 2013 mysql-relay-bin.000187
-rw-rw----   1 mysql mysql        286  4月 21 02:31 2013 mysql-relay-bin.000186
-rw-rw----   1 mysql mysql 1073978192  4月 21 02:31 2013 mysql-relay-bin.000185
-rw-rw----   1 mysql mysql        199  4月 20 18:57 2013 mysql-relay-bin.000184
-rw-rw----   1 mysql mysql       1512  4月 20 18:57 2013 mysql-relay-bin.000183
-rw-rw----   1 mysql mysql 1073742300  4月 20 18:57 2013 mysql-relay-bin.000182
-rw-rw----   1 mysql mysql        199  4月 20 09:00 2013 mysql-relay-bin.000181
-rw-rw----   1 mysql mysql  359941980  4月 20 09:00 2013 mysql-relay-bin.000180
-rw-rw----   1 mysql mysql        199  4月 20 03:42 2013 mysql-relay-bin.000179
-rw-rw----   1 mysql mysql    7252976  4月 20 03:42 2013 mysql-relay-bin.000178
-rw-rw----   1 mysql mysql  221536338  4月 20 03:36 2013 mysql-relay-bin.000177
-rw-rw----   1 mysql mysql        199  4月 20 02:33 2013 mysql-relay-bin.000176
-rw-rw----   1 mysql mysql        286  4月 20 02:33 2013 mysql-relay-bin.000175
-rw-rw----   1 mysql mysql 1073959887  4月 20 02:33 2013 mysql-relay-bin.000174
-rw-rw----   1 mysql mysql        199  4月 19 19:28 2013 mysql-relay-bin.000173
-rw-rw----   1 mysql mysql      17508  4月 19 19:28 2013 mysql-relay-bin.000172
-rw-rw----   1 mysql mysql 1073741902  4月 19 19:28 2013 mysql-relay-bin.000171
-rw-rw----   1 mysql mysql        199  4月 19 09:00 2013 mysql-relay-bin.000170
-rw-rw----   1 mysql mysql  243700831  4月 19 09:00 2013 mysql-relay-bin.000169
-rw-rw----   1 mysql mysql        199  4月 19 03:40 2013 mysql-relay-bin.000168
-rw-rw----   1 mysql mysql   11181274  4月 19 03:40 2013 mysql-relay-bin.000167
-rw-rw----   1 mysql mysql 1023300054  4月 19 03:26 2013 mysql-relay-bin.000166
-rw-rw----   1 mysql mysql        199  4月 18 18:29 2013 mysql-relay-bin.000165
-rw-rw----   1 mysql mysql        286  4月 18 18:29 2013 mysql-relay-bin.000164
-rw-rw----   1 mysql mysql 1073968380  4月 18 18:29 2013 mysql-relay-bin.000163
-rw-rw----   1 mysql mysql        199  4月 18 09:00 2013 mysql-relay-bin.000162
-rw-rw----   1 mysql mysql  407154225  4月 18 09:00 2013 mysql-relay-bin.000161
-rw-rw----   1 mysql mysql        199  4月 18 03:28 2013 mysql-relay-bin.000160
-rw-rw----   1 mysql mysql    9820607  4月 18 03:28 2013 mysql-relay-bin.000159
-rw-rw----   1 mysql mysql  390486366  4月 18 03:18 2013 mysql-relay-bin.000158
-rw-rw----   1 mysql mysql        199  4月 18 02:31 2013 mysql-relay-bin.000157
-rw-rw----   1 mysql mysql        286  4月 18 02:31 2013 mysql-relay-bin.000156
-rw-rw----   1 mysql mysql 1073948399  4月 18 02:31 2013 mysql-relay-bin.000155
-rw-rw----   1 mysql mysql        199  4月 17 18:26 2013 mysql-relay-bin.000154
-rw-rw----   1 mysql mysql        286  4月 17 18:26 2013 mysql-relay-bin.000153
-rw-rw----   1 mysql mysql 1073742607  4月 17 18:26 2013 mysql-relay-bin.000152
-rw-rw----   1 mysql mysql        199  4月 17 09:00 2013 mysql-relay-bin.000151
-rw-rw----   1 mysql mysql  395928850  4月 17 09:00 2013 mysql-relay-bin.000150
-rw-rw----   1 mysql mysql        199  4月 17 03:22 2013 mysql-relay-bin.000149
-rw-rw----   1 mysql mysql    2176073  4月 17 03:22 2013 mysql-relay-bin.000148
-rw-rw----   1 mysql mysql  275224409  4月 17 03:20 2013 mysql-relay-bin.000147
-rw-rw----   1 mysql mysql        199  4月 17 02:32 2013 mysql-relay-bin.000146
-rw-rw----   1 mysql mysql        286  4月 17 02:32 2013 mysql-relay-bin.000145
-rw-rw----   1 mysql mysql 1073865578  4月 17 02:32 2013 mysql-relay-bin.000144
-rw-rw----   1 mysql mysql        199  4月 16 19:02 2013 mysql-relay-bin.000143
-rw-rw----   1 mysql mysql        286  4月 16 19:02 2013 mysql-relay-bin.000142
-rw-rw----   1 mysql mysql 1073751023  4月 16 19:02 2013 mysql-relay-bin.000141
-rw-rw----   1 mysql mysql        199  4月 16 09:00 2013 mysql-relay-bin.000140
-rw-rw----   1 mysql mysql  385139706  4月 16 09:00 2013 mysql-relay-bin.000139
-rw-rw----   1 mysql mysql   34154186  4月 16 03:46 2013 mysql-relay-bin.000138
-rw-rw----   1 mysql mysql        199  4月 16 03:12 2013 mysql-relay-bin.000137
-rw-rw----   1 mysql mysql  182814654  4月 16 03:12 2013 mysql-relay-bin.000136
-rw-rw----   1 mysql mysql        199  4月 16 02:32 2013 mysql-relay-bin.000135
-rw-rw----   1 mysql mysql        286  4月 16 02:32 2013 mysql-relay-bin.000134
-rw-rw----   1 mysql mysql 1074255652  4月 16 02:32 2013 mysql-relay-bin.000133
-rw-rw----   1 mysql mysql        199  4月 15 19:26 2013 mysql-relay-bin.000132
-rw-rw----   1 mysql mysql       4112  4月 15 19:26 2013 mysql-relay-bin.000131
-rw-rw----   1 mysql mysql 1073741939  4月 15 19:26 2013 mysql-relay-bin.000130
-rw-rw----   1 mysql mysql        199  4月 15 09:00 2013 mysql-relay-bin.000129
-rw-rw----   1 mysql mysql  255026504  4月 15 09:00 2013 mysql-relay-bin.000128
-rw-rw----   1 mysql mysql        199  4月 15 04:37 2013 mysql-relay-bin.000127
-rw-rw----   1 mysql mysql   67601522  4月 15 04:37 2013 mysql-relay-bin.000126
-rw-rw----   1 mysql mysql   53197744  4月 15 03:18 2013 mysql-relay-bin.000125
-rw-rw----   1 mysql mysql        199  4月 15 02:39 2013 mysql-relay-bin.000124
-rw-rw----   1 mysql mysql        286  4月 15 02:39 2013 mysql-relay-bin.000123
-rw-rw----   1 mysql mysql 1073779807  4月 15 02:39 2013 mysql-relay-bin.000122
-rw-rw----   1 mysql mysql        199  4月 14 20:20 2013 mysql-relay-bin.000121
-rw-rw----   1 mysql mysql        286  4月 14 20:20 2013 mysql-relay-bin.000120
-rw-rw----   1 mysql mysql 1073750866  4月 14 20:20 2013 mysql-relay-bin.000119
-rw-rw----   1 mysql mysql        199  4月 14 09:00 2013 mysql-relay-bin.000118
-rw-rw----   1 mysql mysql  259482427  4月 14 09:00 2013 mysql-relay-bin.000117
-rw-rw----   1 mysql mysql   15252819  4月 14 03:39 2013 mysql-relay-bin.000116
-rw-rw----   1 mysql mysql        199  4月 14 03:18 2013 mysql-relay-bin.000115
-rw-rw----   1 mysql mysql  866384412  4月 14 03:18 2013 mysql-relay-bin.000114
-rw-rw----   1 mysql mysql        199  4月 13 22:17 2013 mysql-relay-bin.000113
-rw-rw----   1 mysql mysql        286  4月 13 22:17 2013 mysql-relay-bin.000112
-rw-rw----   1 mysql mysql 1073742466  4月 13 22:17 2013 mysql-relay-bin.000111
-rw-rw----   1 mysql mysql        199  4月 13 09:00 2013 mysql-relay-bin.000110
-rw-rw----   1 mysql mysql  207598588  4月 13 09:00 2013 mysql-relay-bin.000109
-rw-rw----   1 mysql mysql    6139614  4月 13 03:31 2013 mysql-relay-bin.000108
-rw-rw----   1 mysql mysql        199  4月 13 03:21 2013 mysql-relay-bin.000107
-rw-rw----   1 mysql mysql  360546238  4月 13 03:21 2013 mysql-relay-bin.000106
-rw-rw----   1 mysql mysql        199  4月 13 02:24 2013 mysql-relay-bin.000105
-rw-rw----   1 mysql mysql       2092  4月 13 02:24 2013 mysql-relay-bin.000104
-rw-rw----   1 mysql mysql 1073741923  4月 13 02:24 2013 mysql-relay-bin.000103
-rw-rw----   1 mysql mysql        199  4月 12 09:00 2013 mysql-relay-bin.000102
-rw-rw----   1 mysql mysql  108533039  4月 12 09:00 2013 mysql-relay-bin.000101
-rw-rw----   1 mysql mysql    2971055  4月 12 03:35 2013 mysql-relay-bin.000100
-rw-rw----   1 mysql mysql        199  4月 12 03:19 2013 mysql-relay-bin.000099
-rw-rw----   1 mysql mysql  288884803  4月 12 03:19 2013 mysql-relay-bin.000098
-rw-rw----   1 mysql mysql        199  4月 11 09:00 2013 mysql-relay-bin.000097
-rw-rw----   1 mysql mysql   49758948  4月 11 09:00 2013 mysql-relay-bin.000096
-rw-rw----   1 mysql mysql        199  4月 11 03:35 2013 mysql-relay-bin.000095
-rw-rw----   1 mysql mysql      25692  4月 11 03:35 2013 mysql-relay-bin.000094
-rw-rw----   1 mysql mysql  209101122  4月 11 03:34 2013 mysql-relay-bin.000093
-rw-rw----   1 mysql mysql        199  4月 10 09:00 2013 mysql-relay-bin.000092
-rw-rw----   1 mysql mysql   48541312  4月 10 09:00 2013 mysql-relay-bin.000091
-rw-rw----   1 mysql mysql    1819103  4月 10 03:42 2013 mysql-relay-bin.000090
-rw-rw----   1 mysql mysql        199  4月 10 03:07 2013 mysql-relay-bin.000089
-rw-rw----   1 mysql mysql  186983107  4月 10 03:07 2013 mysql-relay-bin.000088
-rw-rw----   1 mysql mysql        199  4月  9 09:00 2013 mysql-relay-bin.000087
-rw-rw----   1 mysql mysql  551154405  4月  9 09:00 2013 mysql-relay-bin.000086
-rw-rw----   1 mysql mysql     920300  4月  9 03:38 2013 mysql-relay-bin.000085
-rw-rw----   1 mysql mysql        199  4月  9 03:17 2013 mysql-relay-bin.000084
-rw-rw----   1 mysql mysql  604942064  4月  9 03:17 2013 mysql-relay-bin.000083
-rw-rw----   1 mysql mysql        199  4月  8 09:00 2013 mysql-relay-bin.000082
-rw-rw----   1 mysql mysql   46592435  4月  8 09:00 2013 mysql-relay-bin.000081
-rw-rw----   1 mysql mysql        199  4月  8 04:12 2013 mysql-relay-bin.000080
-rw-rw----   1 mysql mysql    2518271  4月  8 04:12 2013 mysql-relay-bin.000079
-rw-rw----   1 mysql mysql  195471193  4月  8 03:27 2013 mysql-relay-bin.000078
-rw-rw----   1 mysql mysql        199  4月  7 09:00 2013 mysql-relay-bin.000077
-rw-rw----   1 mysql mysql   40680220  4月  7 09:00 2013 mysql-relay-bin.000076
-rw-rw----   1 mysql mysql    1418569  4月  7 03:42 2013 mysql-relay-bin.000075
-rw-rw----   1 mysql mysql        199  4月  7 03:10 2013 mysql-relay-bin.000074
-rw-rw----   1 mysql mysql  150460831  4月  7 03:10 2013 mysql-relay-bin.000073
-rw-rw----   1 mysql mysql        199  4月  6 09:00 2013 mysql-relay-bin.000072
-rw-rw----   1 mysql mysql   36279766  4月  6 09:00 2013 mysql-relay-bin.000071
-rw-rw----   1 mysql mysql    1459658  4月  6 03:46 2013 mysql-relay-bin.000070
-rw-rw----   1 mysql mysql        199  4月  6 03:30 2013 mysql-relay-bin.000069
-rw-rw----   1 mysql mysql  190801762  4月  6 03:30 2013 mysql-relay-bin.000068
-rw-rw----   1 mysql mysql        199  4月  5 09:00 2013 mysql-relay-bin.000067
-rw-rw----   1 mysql mysql   36974519  4月  5 09:00 2013 mysql-relay-bin.000066
-rw-rw----   1 mysql mysql        199  4月  5 03:22 2013 mysql-relay-bin.000065
-rw-rw----   1 mysql mysql    1094827  4月  5 03:22 2013 mysql-relay-bin.000064
-rw-rw----   1 mysql mysql  197286823  4月  5 03:08 2013 mysql-relay-bin.000063
-rw-rw----   1 mysql mysql        199  4月  4 09:00 2013 mysql-relay-bin.000062
-rw-rw----   1 mysql mysql   35166979  4月  4 09:00 2013 mysql-relay-bin.000061
-rw-rw----   1 mysql mysql     707923  4月  4 03:22 2013 mysql-relay-bin.000060
-rw-rw----   1 mysql mysql        199  4月  4 03:12 2013 mysql-relay-bin.000059
-rw-rw----   1 mysql mysql  841914429  4月  4 03:12 2013 mysql-relay-bin.000058
-rw-rw----   1 mysql mysql        199  4月  3 09:00 2013 mysql-relay-bin.000057
-rw-rw----   1 mysql mysql   36089321  4月  3 09:00 2013 mysql-relay-bin.000056
-rw-rw----   1 mysql mysql        199  4月  3 03:24 2013 mysql-relay-bin.000055
-rw-rw----   1 mysql mysql     874924  4月  3 03:24 2013 mysql-relay-bin.000054
-rw-rw----   1 mysql mysql  223070688  4月  3 03:18 2013 mysql-relay-bin.000053
-rw-rw----   1 mysql mysql        199  4月  2 18:15 2013 mysql-relay-bin.000052
-rw-rw----   1 mysql mysql        286  4月  2 18:15 2013 mysql-relay-bin.000051
-rw-rw----   1 mysql mysql 1074590253  4月  2 18:15 2013 mysql-relay-bin.000050
-rw-rw----   1 mysql mysql        199  4月  2 09:00 2013 mysql-relay-bin.000049
-rw-rw----   1 mysql mysql   43338752  4月  2 09:00 2013 mysql-relay-bin.000048
-rw-rw----   1 mysql mysql    1138106  4月  2 03:36 2013 mysql-relay-bin.000047
-rw-rw----   1 mysql mysql        199  4月  2 03:06 2013 mysql-relay-bin.000046
-rw-rw----   1 mysql mysql  590534531  4月  2 03:06 2013 mysql-relay-bin.000045
-rw-rw----   1 mysql mysql        199  4月  1 18:39 2013 mysql-relay-bin.000044
-rw-rw----   1 mysql mysql       2058  4月  1 18:39 2013 mysql-relay-bin.000043
-rw-rw----   1 mysql mysql 1073742170  4月  1 18:39 2013 mysql-relay-bin.000042
-rw-rw----   1 mysql mysql        199  4月  1 09:00 2013 mysql-relay-bin.000041
-rw-rw----   1 mysql mysql   26927116  4月  1 09:00 2013 mysql-relay-bin.000040
-rw-rw----   1 mysql mysql        199  4月  1 03:39 2013 mysql-relay-bin.000039
-rw-rw----   1 mysql mysql     400005  4月  1 03:39 2013 mysql-relay-bin.000038
-rw-rw----   1 mysql mysql  104407930  4月  1 03:24 2013 mysql-relay-bin.000037
-rw-rw----   1 mysql mysql        199  3月 31 09:00 2013 mysql-relay-bin.000036
-rw-rw----   1 mysql mysql   24182256  3月 31 09:00 2013 mysql-relay-bin.000035
-rw-rw----   1 mysql mysql        199  3月 31 03:45 2013 mysql-relay-bin.000034
-rw-rw----   1 mysql mysql     200418  3月 31 03:45 2013 mysql-relay-bin.000033
-rw-rw----   1 mysql mysql  126951801  3月 31 03:31 2013 mysql-relay-bin.000032
-rw-rw----   1 mysql mysql        199  3月 30 09:00 2013 mysql-relay-bin.000031
-rw-rw----   1 mysql mysql   25085855  3月 30 09:00 2013 mysql-relay-bin.000030
-rw-rw----   1 mysql mysql     478762  3月 30 03:29 2013 mysql-relay-bin.000029
-rw-rw----   1 mysql mysql        199  3月 30 03:18 2013 mysql-relay-bin.000028
-rw-rw----   1 mysql mysql   51132144  3月 30 03:18 2013 mysql-relay-bin.000027
-rw-rw----   1 mysql mysql        199  3月 29 09:00 2013 mysql-relay-bin.000026
-rw-rw----   1 mysql mysql   23741534  3月 29 09:00 2013 mysql-relay-bin.000025
-rw-rw----   1 mysql mysql        199  3月 29 03:45 2013 mysql-relay-bin.000024
-rw-rw----   1 mysql mysql     499558  3月 29 03:45 2013 mysql-relay-bin.000023
-rw-rw----   1 mysql mysql  311933630  3月 29 03:11 2013 mysql-relay-bin.000022
-rw-rw----   1 mysql mysql        199  3月 28 12:53 2013 mysql-relay-bin.000021
-rw-rw----   1 mysql mysql        286  3月 28 12:53 2013 mysql-relay-bin.000020
-rw-rw----   1 mysql mysql 1074044866  3月 28 12:53 2013 mysql-relay-bin.000019
-rw-rw----   1 mysql mysql        199  3月 28 09:00 2013 mysql-relay-bin.000018
-rw-rw----   1 mysql mysql   23936996  3月 28 09:00 2013 mysql-relay-bin.000017
-rw-rw----   1 mysql mysql     132156  3月 28 03:29 2013 mysql-relay-bin.000016
-rw-rw----   1 mysql mysql        199  3月 28 03:14 2013 mysql-relay-bin.000015
-rw-rw----   1 mysql mysql  759616583  3月 28 03:14 2013 mysql-relay-bin.000014
-rw-rw----   1 mysql mysql        199  3月 27 09:00 2013 mysql-relay-bin.000013
-rw-rw----   1 mysql mysql   21507774  3月 27 09:00 2013 mysql-relay-bin.000012
-rw-rw----   1 mysql mysql     299629  3月 27 03:39 2013 mysql-relay-bin.000011
-rw-rw----   1 mysql mysql        199  3月 27 03:16 2013 mysql-relay-bin.000010
-rw-rw----   1 mysql mysql  251832517  3月 27 03:16 2013 mysql-relay-bin.000009
-rw-rw----   1 mysql mysql        199  3月 26 22:05 2013 mysql-relay-bin.000008
-rw-rw----   1 mysql mysql      17276  3月 26 22:05 2013 mysql-relay-bin.000007
-rw-rw----   1 mysql mysql 1073742229  3月 26 22:05 2013 mysql-relay-bin.000006
-rw-rw----   1 mysql mysql        199  3月 26 03:32 2013 mysql-relay-bin.000005
-rw-rw----   1 mysql mysql        259  3月 26 03:32 2013 mysql-relay-bin.000004
-rw-rw----   1 mysql mysql     171981  3月 26 03:32 2013 mysql-relay-bin.000003
-rw-rw----   1 mysql mysql       1290  3月 26 00:46 2013 mysql-relay-bin.000002
-rw-rw----   1 mysql mysql        156  3月 26 00:32 2013 mysql-relay-bin.000001
srwxrwxrwx   1 mysql mysql          0  3月 26 00:15 2013 mysql.sock
drwxr-xr-x. 30 root  root        4096  3月 25 03:00 2013 ..
drwx------   2 mysql mysql       4096  3月  2 21:21 2013 performance_schema
drwx------   2 mysql mysql       4096  3月  2 21:21 2013 test
仕方ないので、手動で削除するしかっ!( ̄ー ̄)ニヤリ
でも、チキンなので一旦退避させてから1日待ってから削除することにしました:(;゙゚'ω゚'):

半分ほど移動させて、レプリケーションの動作確認などをしてみましたが、
特に問題ありませんでした!ワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ

なので翌日に退避させていたリレーログを全て削除ド━━━━m9(゚∀゚)━━━━ン!!

これでデータベースの容量の圧迫は解消されましたとさ。めでたしめでたし( ´∀`)bグッ!

追記 2013/06/01
リレーログが消えない理由は、
mysql-relay-bin.indexのファイルの中に、手動で削除したリレーログのファイル名があるせいかも?
なので、手動で消した場合には、このファイルも手動で変更してあげるといいかも!?

あと、念のためにrelay-log.infoとmysql-relay-bin.indexのRelay_Log_Fileの名前が一致しているか確認した方が良いかも?
この値が一致していないと、この記事みたいな現象になる可能性があります。slave再設定時のエラー
relay-log.infoの確認
view /var/lib/mysql/relay-log.info
./mysql-relay-bin.000009
mysql-relay-bin.indexの確認
view /var/lib/mysql/mysql-relay-bin.index
./mysql-relay-bin.000009
以上です(`・ω・´)ゞビシッ!!