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 のように記述しておくことをおすすめします。
-
MySQLで現在選択中のデータベースを確認する方法|DATABASE()関数とstatusコマンドの使い方
MySQLに接続している際、「今どのデータベースを選択しているのか」を確認したい場面はよくあります。この記事では、DATABASE()関数やstatusコマンドを使って、現在選択中のデータベース名を簡単に確認する方法を解説します。 DATABASE()関数で選択中のデータベースを確認する MySQLでは、DUALテーブルに対してDATABASE()関数を実行することで、現在選択されているデータベース名を取得できます。 手順1:データベースを選択する まず、例として「business」というデータベースを選択してみましょう。以下のコマンドを実行します。 mysql> use busi
-
MySQLのバージョンを確認する方法をわかりやすく解説
この記事では、現在利用しているMySQLサーバーのバージョンを確認する方法について詳しく解説します。コンソールでクエリを実行する前に、まずクライアントがサーバーに正しく接続されていることを確認しておきましょう。接続が確立されていないと、クエリを実行しても結果を取得できません。MySQLのバージョンを確認する基本クエリ以下のクエリを実行すると、使用中のサーバーのバージョン番号と、実行時点の日付を同時に取得できます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント: 関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つ