[前][次][番号順一覧][スレッド一覧]

mysql:14604

From: 松尾 健司 <松尾 健司 <matsuo@xxxxxxxxxx>>
Date: Mon, 23 Jun 2008 14:14:40 +0900
Subject: [mysql 14604] transactionの処理について質問させてください。

はじめまして。
松尾といいます。

replicationを行っているなかでslave側のtransactionの処理でROLLBACKが
行われない?状態となっておりました。
私の思い違いなのかもしれませんが。

バージョンはMySQL 4.0.25。
ストレージエンジンはinnodbです。
(途中に非トランザクションテーブルの更新がかかっているという事はありませ
んでした。)

その為レプリケーション側で下記のようなエラーが発生いたしました。
ERROR: 1062  Duplicate entry '9841620' for key
Duplicate entryになっているという事は、slave側ではmaster側でROLLBACKされ
た処理が実行されててしまったのではないかと思ってます。

master側のbin-logを見る限りでは、下記のようになっておりました。
(個人情報を含むため一部省略させていただきます。)
■■■■■BEGIN;
# at 562347345
#080621 12:06:45 server id 1  log_pos 562309839         Query   thread_id=136278939     exec_time=0     error_code=0
SET TIMESTAMP=1214017605;

中略

# at 562353083
#080621 12:06:47 server id 1  log_pos 562353083         Query   thread_id=136278939     exec_time=0     error_code=0
SET TIMESTAMP=1214017607;
▲▲▲▲▲ROLLBACK;
該当時間のslaveのrelay-bin-logはない状態です。

innodb_flush_log_at_trx_commitがmasterでは1になっていますが、
slaveではinnodb_flush_log_at_trx_commit=0にしております。

私のイメージとしては、master側でROLLBACKされた処理については、slave側で
もトランザクション処理が行われエラーになったSQLについては、DBに書き込ま
れないなのでないかと思っております。

slave側でこのような現象になることについてなにか御存じの方がいらっしゃい
ましたらご教授いただければと思います。

よろしくお願いします。


[前][次][番号順一覧][スレッド一覧]