【MySQL/MariaDB】複製設定で必須!「server-id」と「server_id」の違いとは?
MySQLとMariaDBにおける「server-id」と「server_id」の違い
MySQLとMariaDBでは、どちらも複製設定において重要な役割を果たす「server-id」というシステム変数があります。しかし、表記が似ているにもかかわらず、実は微妙な違いが存在します。
「server-id」
server-id
は、MySQLとMariaDBの両方で使用されるシステム変数です。- 主に複製において、各サーバーを識別するために用いられます。
- デフォルト値は1ですが、0以外の任意の値に変更可能です。
- 複数の複製サーバー間でユニークな値を設定する必要があります。
- 設定方法は、
my.cnf
ファイルやコマンドラインオプションなどがあります。
server_id
は、MySQL 5.7.5以前で使用されていたオプション名です。server-id
システム変数と同じ役割を果たしていました。- MySQL 5.7.6以降では、オプション名はserver-idに変更されています。
- 従って、MySQL 5.7.6以降では、
server_id
オプションを使用するとエラーが発生します。
置き換え
- MySQL 5.7.5以前の構成ファイルで
server_id
オプションを使用している場合は、server-idシステム変数に置き換える必要があります。 - 例:
# 誤り
server-id = 123
# 正しい
server_id=123
- MySQLとMariaDBでは、複製設定において「server-id」というシステム変数を使用します。
server-id
は、システム変数であり、オプション名ではありません。
補足
- 本記事では、MySQLとMariaDBにおける「server-id」と「server_id」の違いについて解説しました。
- 具体的な設定方法や詳細については、各公式ドキュメントを参照してください。
my.cnfファイルで設定
[mysqld]
server-id=123
コマンドラインオプションで設定
mysql -u root -p -e "SET GLOBAL server_id = 123"
MariaDBの場合も、上記と同様にserver-id
システム変数を使用して設定します。
注意事項
- 上記のコードはあくまで例であり、実際の環境に合わせて変更する必要があります。
- 既存の複製設定を変更する場合は、十分な注意が必要です。
本コードはあくまでも参考情報として提供されており、いかなる保証も伴いません。コードの使用によるいかなる損害も負いかねますので、ご了承ください。
他の方法
SHOW VARIABLESコマンド
mysql -u root -p -e "SHOW VARIABLES LIKE '%server_id%'"
このコマンドを実行すると、server_id
システム変数の現在の値を確認できます。
GLOBAL SESSION変数
mysql -u root -p -e "SET SESSION server_id = 123"
このコマンドを実行すると、現在のセッションにおけるserver-id
システム変数を一時的に設定できます。セッションが終了すると、値はデフォルト値に戻ります。
プロンプト
MySQLプロンプトで以下のコマンドを実行することもできます。
SET GLOBAL server_id = 123;
- 上記の方法で
server-id
システム変数を設定した場合、MySQLを再起動すると設定が失われます。 - 永続的に設定するには、
my.cnf
ファイルを変更する必要があります。
mysql mariadb