2

MySQL は、TRUNCATE のフラグ「NO_WRITE_TO_BINLOG」をサポートしていないようです。そのため、遅延が 0 になるまで待ってから、レプリケーションを停止し、テーブルの TRUNCATE を作成し、マスターをリセットしてから、レプリケーションを再開する必要があります。本当に痛い。他の提案はありますか?

4

3 に答える 3

3

このコマンドを使用して、セッションのバイナリ ログを無効にして、必要なことを行うことができます。

SET SQL_LOG_BIN = 0;
テーブルを切り捨てます。
SET SQL_LOG_BIN = 1;

TRUNCATE をスレーブに送信しないことで事実上レプリケーションを中断しているため、これには SUPER 権限が必要です。

于 2008-10-07T14:14:51.157 に答える
1

TRUNCATE は軽々しく使用するべきではありません。基本的には、実行したという事実をログに記録せずにフロアにデータをドロップするだけだからです。これはトランザクション的に安全ではなく、回復することが不可能であり、その結果、レプリケーションと互換性がありません。レプリケーションのセットアップで TRUNCATE を使用できたとしても、レプリケートされたデータは破損するか、せいぜい無効になります。

于 2008-10-07T14:18:33.287 に答える
0

TRUNCATEはかなり手間がかかります。DELETEクエリだけでうまくいくことができますか?

于 2008-10-07T11:47:59.973 に答える