Azure Database for MySQL フレキシブル サーバーのレプリケーション設定手順

2021-06-06Azure,Database For MySQL

Azure Database for MySQL フレキシブル サーバーのレプリケーション設定手順です。
マスターサーバーに読み取り専用レプリカを追加して、MySQLサーバーのレプリケーションします。
プライマリサーバーへのレプリカの追加から、レプリケーション停止、プライマリへの昇格までの手順を確認しています。

※本記事内では、Azure Database for MySQL Flexible ServerをAzureDatabase for MySQL フレキシブル サーバーとして表記しています。
※本記事で確認しているのは、読み取り専用レプリカを追加して利用する方法です。

スポンサーリンク

Azure Database for MySQL フレキシブル サーバーのレプリケーション設定

読み取り専用レプリケーションが利用できる

Azure Database for MySQL フレキシブル サーバーでは、レプリケーション機能が提供されています。
読み取り専用のレプリカを作成して利用することが可能です。

Azure Database for MySQL – フレキシブル サーバーでの読み取りレプリカ

リージョン間でのレプリケーションもサポートされています。
レプリケーションされたデータベースは読み取りが可能なため、読み取り専用のデータベースを準備する用途にも適しています。

レプリカで利用するコンピューティングとストレージに対して、課金が発生します。
汎用およびビジネス クリティカルレベルでのみ利用可能です。
バースト可能なモデルでは利用できません。

レプリケーションの設定内容

東日本リージョンに作成したプライマリサーバー対して、西日本リージョンにレプリカサーバーを追加します。

リソース 項目 設定値
プライマリサーバー 名前 mysql-zabbix-01
(mysql-zabbix-01.mysql.database.azure.com)
リージョン 東日本
コンピューティング サイズ Standard_D2ds_v4
ネットワーク プライベート アクセス
(VNET 統合)
レプリカ サーバー 名前 mysql-zabbix-02
(mysql-zabbix-02.mysql.database.azure.com)
リージョン 西日本
コンピューティング サイズ Standard_D2ds_v4
ネットワーク プライベート アクセス
(VNET 統合)

Azure Database for MySQL フレキシブル サーバーのリソース作成手順については、こちらで紹介しています。
今回はこちらで作成したリソースのコンピューティングサイズを変更して利用しています。

プライマリサーバーにレプリカを追加

公式サイトの手順を参考に、プライマリサーバーにレプリカを追加します。

Azure portal を使用して Azure Database for MySQL フレキシブル サーバー内に読み取りレプリカを作成して管理する方法

Azure Database for MySQL フレキシブル サーバーには、レプリケーションのメニューが用意されています。
レプリカの追加を選択すると、レプリカサーバーのリソース作成画面が表示されます。

レプリカサーバーのリソースは新規に作成されます。
既存のリソースをレプリカとして追加することはできません。

Azure Database for MySQL フレキシブル サーバーのレプリカ追加手順

レプリケーションのメニューを選択します。
レプリカの追加を選択します。

レプリカの追加(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)

レプリカサーバー名やレプリカサーバーを作成する場所を選択します。
認証情報はソースサーバーから引き継ぐため、設定は必要ありません。
OKを選択します。

※可用性ゾーンも選択できます。

レプリカサーバー名やリージョンを設定(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)

ネットワーク設定です。
レプリカサーバーのネットワークを設定します。

レプリカサーバーのネットワーク設定(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)

セキュリティ設定です。
レプリカサーバーのセキュリティ設定を行います。

レプリカサーバーのセキュリティ設定(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)

確認画面です。
プライマリサーバー名、新規に作成するレプリカサーバー名、場所を確認します。
問題がなければレプリカサーバーを作成します。

 

レプリカサーバーの作成確認画面(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)

プライマリサーバーとレプリカサーバーを確認

レプリケーション設定後の、プライマリサーバーとレプリカサーバーの状態を確認します。

レプリケーション設定確認

レプリケーションのメニューを表示します。
プライマリ(mysql-zabbix-01)とレプリカ(mysql-zabbix-02)の2つがリソースが確認できます。
レプリカサーバー側では、レプリカの追加が選択できません。

【プライマリサーバー】レプリケーション設定後のプライマリサーバー(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)
【レプリカサーバー】レプリケーション設定後のレプリカサーバー(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)

レプリケーション状態を確認するメトリック

レプリケーション状況を確認するためのメトリックが用意されています。

レプリケーションを監視します

これらのメトリックは、レプリカサーバー側で確認できます。

レプリケーション状態を確認

Replication Lag in Secondsのメトリックを利用して、プライマリサーバーとレプリカサーバー間のデータ同期遅延を秒単位で確認できます。

Replication Lag in SecondsやReplica SQL Statusのメトリックを利用することで、レプリカサーバー側の各スレッドが正常に動作しているかの状態を確認することができます。

【Replication Lag in Seconds】Replication Lag in Secondsのメトリック(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)
【Replica IO Status】Replica IO Statusのメトリック(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)
【Replica SQL Status】Replica SQL Statusのメトリック(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)

—広告—

MySQLサーバーのレプリケーション状態を確認

MySQLサーバーにログイン

プライマリサーバーとレプリカサーバーへログインします。
プライマリサーバー、レプリカサーバー共にログインできます。

MySQLサーバーへログイン

# プライマリのMySQLサーバーへログイン
[root@vm-01 ~]#
mysql -h mysql-zabbix-01.mysql.database.azure.com -u 管理者ユーザー名
 -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 842
Server version: 8.0.40-azure Source distribution

Copyright (c) 2000, 2025, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;’ or '\h’ for help. Type '\c’ to clear the current input statement.

# レプリカのMySQLサーバーへログイン
[root@vm-01 ~]#
mysql -h mysql-zabbix-02.mysql.database.azure.com -u 管理者ユーザー名 -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 25
Server version: 8.0.40-azure Source distribution

Copyright (c) 2000, 2025, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;’ or '\h’ for help. Type '\c’ to clear the current input statement.

mysql>

MySQLサーバーのレプリケーション状態を確認

MySQLサーバーでレプリケーションの状態を確認します。
レプリカサーバーでは、プライマリサーバーがマスターホストとして設定されていることを確認できます。
ログファイル名がプライマリサーバーで確認できるログファイル名と一致していることも確認できます。

MySQLサーバーのレプリケーション状態を確認

# プライマリのMySQLサーバーでレプリケーション状態を確認
mysql>
SHOW MASTER STATUS;
+—–+——–+—————–+———————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+—–+——–+—————–+———————+——————-+
| mysql-bin.000015 | 2444601 | | | |
+—–+——–+—————–+———————+——————-+
1 row in set (0.00 sec)

# レプリカのMySQLサーバーでレプリケーション状態を確認(抜粋)
mysql>
SHOW SLAVE STATUS\G;
***** 1. row *****
Slave_IO_State:
Master_Host: mysql-zabbix-01.mysql.database.azure.com
Master_Log_File: mysql-bin.000015
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 1

1 row in set, 1 warning (0.01 sec)

MySQLサーバーの書き込み権限を確認

MySQLサーバーの書き込み権限の設定状態を確認します。
プライマリサーバーでは、read_only が OFF となっており、読み書きが可能であることが確認できます。
一方、レプリカサーバーでは、read_only が ON となっており、読み取り専用であることが確認できます。

MySQLサーバーの書き込み権限を確認

# プライマリのMySQLサーバーで書き込み権限を確認
mysql>
show global variables like 'read_only’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| read_only | OFF |
+—————+——-+
1 row in set (0.01 sec)

# レプリカのMySQLサーバーで書き込み権限を確認
mysql>
show global variables like 'read_only’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| read_only | ON |
+—————+——-+
1 row in set (0.01 sec)

読み取り専用レプリカサーバーをプライマリサーバーに昇格

読み取り専用レプリカサーバーからプライマリサーバーへの昇格手順

昇格はレプリケーションのメニューから操作が可能です。
レプリケーションメニューに表示されているレプリカサーバーには、昇格ボタンが表示されています。

レプリケーションラグが発生している場合、データ欠損が生じる可能性があります。
そのため、事前に状態を確認した上で昇格を実施する必要があります。

レプリケーションの停止手順

レプリカサーバーで昇格を選択します。

レプリカサーバーのマスター昇格(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)

確認メッセージが表示されます。
レプリケーションの設定が元に戻せないとの注意メッセージが表示されます。
昇格を選択します。

レプリカサーバーのマスター昇格確認画面(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)

プライマリサーバー昇格後のレプリケーション設定

プライマリ昇格時に、レプリケーション設定は解除されます。

レプリケーション設定を確認
プライマリサーバー、レプリカサーバー共にレプリケーション設定が解除されています。 レプリカサーバーのマスター昇格後のレプリケーション設定(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)
レプリカサーバーのマスター昇格後のレプリケーション設定(Azure Database for MySQL フレキシブル サーバーのレプリケーション設定)

MySQL サーバーでプライマリサーバー昇格後のレプリケーション状態

MySQLサーバーでレプリケーション状態を確認します。
レプリカから昇格したサーバーは、読み書きできるようになっています。
レプリケーションが停止したため、レプリカから昇格したサーバーでは、バイナリログファイルのログの位置が変わっていません。

MySQLサーバーでレプリケーション状態を確認

【マスターサーバー】

# プライマリのMySQLサーバーで書き込み権限を確認
mysql>
show global variables like 'read_only’;

+—————+——-+
| Variable_name | Value |
+—————+——-+
| read_only | OFF |
+—————+——-+
1 row in set (0.00 sec)

# プライマのMySQLサーバーのバイナリログファイル内の位置
mysql>
SHOW MASTER STATUS;

+—–+——–+—————–+———————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+—–+——–+—————–+———————+——————-+
| mysql-bin.000015 | 8784713 | | | |
+—–+——–+—————–+———————+——————-+
1 row in set (0.00 sec)

mysql> SHOW MASTER STATUS;
+—–+——–+—————–+———————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+—–+——–+—————–+———————+——————-+
| mysql-bin.000015 | 8788928 | | | |
+—–+——–+—————–+———————+——————-+
1 row in set (0.00 sec) 

【レプリカから昇格したサーバー】

# レプリカから昇格したMySQLサーバーで書き込み権限を確認
mysql>
show global variables like 'read_only’;

+—————+——-+
| Variable_name | Value |
+—————+——-+
| read_only | OFF |
+—————+——-+
1 row in set (0.01 sec)

# レプリカから昇格したMySQLサーバーでレプリケーション状態を確認
mysql>
SHOW SLAVE STATUS\G;

Empty set, 1 warning (0.01 sec)

# レプリカから昇格したMySQLサーバーのバイナリログファイル内の位置
mysql>
SHOW MASTER STATUS;

+—–+——–+—————–+———————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+—–+——–+—————–+———————+——————-+
| mysql-bin.000016 | 2581253 | | | |
+—–+——–+—————–+———————+——————-+
1 row in set (0.00 sec)

mysql> SHOW MASTER STATUS;
+—–+——–+—————–+———————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+—–+——–+—————–+———————+——————-+
| mysql-bin.000016 | 2581253 | | | |
+—–+——–+—————–+———————+——————-+
1 row in set (0.01 sec)

—広告—

最後に

Azure Database for MySQL フレキシブル サーバーのレプリケーション設定手順について確認しました。
別リージョンに読み取り専用のレプリカを非常に簡単に作成でき、とても便利だと感じました。
また、マスターへの昇格も非常に簡単で、切り替え時の手順もシンプルに実施できました。

引き続き、いろいろな機能を試してみたいと思います。

Azure Database for MySQL フレキシブル サーバーのバックアップリストア手順については、こちらで紹介しています。

スポンサーリンク