35

大きなファイルの MySQL へのインポートを実行したいと考えています。ただし、インポートに時間がかかり、スレーブが大幅に遅れる原因となるため、バイナリ ログに書き込みたくありません。システム上ではるかに簡単になるため、実際にはスレーブで個別に実行したいと思います。問題のテーブルは新しいテーブルなので、マスターとすべてのスレーブが同じファイルをインポートするため、マスターとすべてのスレーブが最終的に同じデータを持つため、同期が取れなくなることを実際に心配する必要はありません。最終的。また、問題のサーバーの再起動が必要になるため、replicate-ignore-* または binlog_ignore-* オプションも変更したくありません。バイナリログに書き込まずに単一のクエリを実行する方法はありますか?

私はすでに答えを知っていますが、ネット上で簡単に見つけることができなかったので、誰かに答えを投稿させて、いくつかの担当者ポイントを獲得しています。少し白く答えがない場合は、見つけた答えを投稿します。

4

2 に答える 2

57

sql-log-binセッション変数を使用して、現在のセッションのロギングをオフにすることができます。次のように入力するだけです。

SET sql_log_bin = 0;

現在のセッションのすべてのクエリはバイナリ ログに送信されません。バイナリ ログをオンに戻したい場合は、次を実行します。

SET sql_log_bin = 1;

これは、現在実行中のセッションのみです。他のすべての接続からの他のすべてのクエリは、引き続きログに記録されます。また、これが機能するには SUPER 権限が必要です。

于 2010-06-02T14:54:22.833 に答える
24

これをcliから実行したい場合は、これを試してください。私にとってはうまくいきました:

$ mysqldump old_DB | mysql --init-command="SET SQL_LOG_BIN = 0;" new_DB

「init-command」パラメーターが新しい MySQL バージョンに追加された可能性があります。

于 2015-02-02T15:15:16.810 に答える