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