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

MySQLのレプリケーションタイプ(binlog_format)の確認・変更方法を徹底解説

MySQLでは、レプリケーションの方式(バイナリログのフォーマット)は binlog_format システム変数によって制御されています。現在の設定を確認するには、SHOW GLOBAL VARIABLES コマンドを使用します。基本的な構文は以下のとおりです。

SHOW GLOBAL VARIABLES LIKE 'binlog_format';

レプリケーションタイプの種類とデフォルト値

このコマンドを実行すると、結果として「ROW」「MIXED」「STATEMENT」のいずれかが返されます。MySQLのデフォルト値は「ROW」です。それぞれの特徴は以下のとおりです。

  • ROW: 行データそのものをバイナリログに記録する方式。最も安全で、デフォルト設定です。
  • STATEMENT: 実行されたSQL文をそのまま記録する方式。ログサイズは小さくなりますが、非決定的な関数などで不整合が起こる可能性があります。
  • MIXED: 通常はSTATEMENT形式で記録し、必要に応じてROW形式へ自動的に切り替えるハイブリッド方式です。

実際にレプリケーションタイプを確認してみよう

それでは、上記の構文を使って現在のレプリケーションタイプを確認してみましょう。実行クエリは次のとおりです。

mysql> SHOW GLOBAL VARIABLES LIKE 'binlog_format';

実行結果は以下のようになります。

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.10 sec)

この例では、binlog_format の値が「ROW」に設定されていることがわかります。

ROWからSTATEMENTへ変更する方法

続いて、レプリケーションタイプを「ROW」から「STATEMENT」へ切り替えるクエリを見てみましょう。

mysql> SET GLOBAL binlog_format = 'STATEMENT';
Query OK, 0 rows affected (0.04 sec)

変更後、もう一度レプリケーションタイプを確認します。実行クエリは以下のとおりです。

mysql> SHOW GLOBAL VARIABLES LIKE 'binlog_format';

実行結果はこちらです。

+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+
1 row in set (0.01 sec)

これで binlog_format が「STATEMENT」に変更されました。同様の手順で、「STATEMENT」から「MIXED」へ、「MIXED」から「ROW」へといった切り替えも自由に行えます。

セッション単位での変更方法

SET GLOBAL による変更はサーバー全体に影響しますが、現在のセッションだけに適用したい場合は SET SESSION を使用します。実行クエリは次のとおりです。

mysql> SET SESSION binlog_format = 'ROW';
Query OK, 0 rows affected (0.00 sec)

セッション変数を確認する場合は、GLOBAL を付けずに SHOW VARIABLES を実行します。

mysql> SHOW VARIABLES LIKE 'binlog_format';

実行結果は以下のとおりです。

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.04 sec)

このように、グローバル変数とセッション変数を使い分けることで、サーバー全体または特定の接続に対して柔軟にレプリケーションタイプを管理できます。なお、SET GLOBAL による変更は再起動後には失われるため、恒久的に設定したい場合は設定ファイル(my.cnf / my.ini)の [mysqld] セクションに binlog_format=ROW のように記述しておくことをおすすめします。

  1. MySQLで現在選択中のデータベースを確認する方法|DATABASE()関数とstatusコマンドの使い方

    MySQLに接続している際、「今どのデータベースを選択しているのか」を確認したい場面はよくあります。この記事では、DATABASE()関数やstatusコマンドを使って、現在選択中のデータベース名を簡単に確認する方法を解説します。 DATABASE()関数で選択中のデータベースを確認する MySQLでは、DUALテーブルに対してDATABASE()関数を実行することで、現在選択されているデータベース名を取得できます。 手順1:データベースを選択する まず、例として「business」というデータベースを選択してみましょう。以下のコマンドを実行します。 mysql> use busi

  2. MySQLのバージョンを確認する方法をわかりやすく解説

    この記事では、現在利用しているMySQLサーバーのバージョンを確認する方法について詳しく解説します。コンソールでクエリを実行する前に、まずクライアントがサーバーに正しく接続されていることを確認しておきましょう。接続が確立されていないと、クエリを実行しても結果を取得できません。MySQLのバージョンを確認する基本クエリ以下のクエリを実行すると、使用中のサーバーのバージョン番号と、実行時点の日付を同時に取得できます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント: 関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つ