MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLレプリケーション:特定のSQLステートメントがスレーブにレプリケートされるのを一時的に防止しますか?


これを実現するには、sql_log_binを0に設定する必要があります。概念を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです

mysql> create table SQLStatementsDemo
   -> (
   -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> UserName varchar(20)
   -> );
Query OK, 0 rows affected (0.79 sec)

挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。クエリは次のとおりです-

mysql> insert into SQLStatementsDemo(UserName) values('John');
Query OK, 1 row affected (0.18 sec)
mysql> insert into SQLStatementsDemo(UserName) values('Carol');
Query OK, 1 row affected (0.14 sec)
mysql> insert into SQLStatementsDemo(UserName) values('Bob');
Query OK, 1 row affected (0.14 sec)
mysql> insert into SQLStatementsDemo(UserName) values('Mike');
Query OK, 1 row affected (0.14 sec)
mysql> insert into SQLStatementsDemo(UserName) values('Sam');
Query OK, 1 row affected (0.14 sec)
mysql> insert into SQLStatementsDemo(UserName) values('David');
Query OK, 1 row affected (0.14 sec)

selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです-

mysql> select *from SQLStatementsDemo;

以下は出力です

+--------+----------+
| UserId | UserName |
+--------+----------+
|      1 | John     |
|      2 | Carol    |
|      3 | Bob      |
|      4 | Mike     |
|      5 | Sam      |
|      6 | David    |
+--------+----------+
6 rows in set (0.00 sec)

SQLステートメントのMySQLレプリケーションを実装するクエリは次のとおりです

mysql> SET sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)
mysql> update SQLStatementsDemo set UserName='Maxwell' where UserId=6;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select *from SQLStatementsDemo;
+--------+----------+
| UserId | UserName |
+--------+----------+
|      1 | John     |
|      2 | Carol    |
|      3 | Bob      |
|      4 | Mike     |
|      5 | Sam      |
|      6 | Maxwell  |
+--------+----------+
6 rows in set (0.00 sec)
mysql> insert into SQLStatementsDemo(UserName) values('Chris');
Query OK, 1 row affected (0.16 sec)
mysql> select *from SQLStatementsDemo;
+--------+----------+
| UserId | UserName |
+--------+----------+
|      1 | John     |
|      2 | Carol    |
|      3 | Bob      |
|      4 | Mike     |
|      5 | Sam      |
|      6 | Maxwell  |
|      7 | Chris    |
+--------+----------+
7 rows in set (0.00 sec)
mysql> delete from SQLStatementsDemo where UserId=7;
Query OK, 1 row affected (0.10 sec)
mysql> SET sql_log_bin=1 ;
Query OK, 0 rows affected (0.00 sec)

  1. MySQLコマンドラインクライアント

    mysqlは、入力行編集機能を備えた単純なSQLシェルです。インタラクティブおよび非インタラクティブな使用法をサポートします。インタラクティブに使用する場合、クエリ結果はASCIIテーブル形式で表示されます。フィルタのように非対話的に使用すると、結果はタブ区切り形式で表示されます。 出力形式は、コマンドオプションを使用して変更できます。大きな結果セットに対してメモリが不足しているために問題が発生した場合は、-quickオプションを使用できます。 これにより、mysqlは、結果セット全体を一度に取得して表示される前にメモリにバッファリングするのではなく、一度に1行ずつサーバーから結果を取得す

  2. MySQLクライアントでテキストファイルからSQLステートメントを実行する

    MySQLクライアントのテキストファイルからSQLステートメントを実行する方法を理解しましょう。 mysqlクライアントは一般的にインタラクティブな方法で使用されます。同じ例を見てみましょう- shell> mysql db_name SQLSatementsをテキストファイルに配置する SQLステートメントをファイルに入れてから、その特定のファイルから入力を読み取るようにmysqlに指示することもできます。これを行うには、最初にテキストファイルtext_fileが作成されます。 このテキストファイルには、実行する必要のあるステートメントが含まれています。同じことを理解するために例を