IDCF テックブログ

IDCF テックブログ

クラウド・データセンターを提供するIDCフロンティアの公式テックブログ

IDCFクラウド RDBのスタティックルーティング機能を使用したリージョン間のレプリケーション構成例のご紹介

こんばんは、サービス基盤部の森田です。

前回の記事ではIDCFクラウド RDBへのリージョン/ゾーン間接続例を紹介させていただきましたが、レプリケーション構成において異なるNW間でRDB自身がレプリカとしてソースのデータベースに通信を行うケースについてはRDB側に接続先のスタティックルートの設定が入っていないためRDBからの接続を行うことが出来ません。しかし、去年の12月にRDBでリリースしたスタティックルーティング機能を利用することで今まで実現できなかったRDBからの接続についても可能となりました。 今回はこの機能を使用してリージョン間を跨いだ外部データベース(ソース)/RDB(レプリカ)のレプリケーション構成例についてご紹介してみたいと思います。

f:id:kmorita01:20210414175048p:plain

事前準備

voltに追加ネットワークを作成

f:id:kmorita01:20210414134645p:plain

augustaに追加ネットワークを作成

f:id:kmorita01:20210414135026p:plain

追加ネットワークをプライベートコネクトに接続

f:id:kmorita01:20210414135244p:plain

仮想ルーターを作成するためにvoltの追加ネットワークを選択してコンピュート上に仮想マシンを作成します(諸々の事情で...)

augustaに外部データベース(ソース)用仮想マシン作成

f:id:kmorita01:20210414145426p:plain

外部データベース(ソース)側

スタティックルートを追加

nmcli c mod "有線接続 1" +ipv4.routes "192.168.0.0/23 192.168.3.254"

設定を有効

nmcli c down "有線接続 1"
nmcli c up "有線接続 1"

ルーティングの設定を確認

[root@mysql8-source-01 ~]#  ip route
default via 10.21.0.1 dev ens160 proto dhcp metric 100 
10.21.0.0/21 dev ens160 proto kernel scope link src 10.21.0.60 metric 100 
192.168.0.0/23 via 192.168.3.254 dev ens192 proto static metric 101 
192.168.2.0/23 dev ens192 proto kernel scope link src 192.168.2.83 metric 101

MySQLの構築(MySQL8.0を使用)

# Yumリポジトリ追加
dnf localinstall https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm

# デフォルトのMySQLモジュール無効化
dnf module disable mysql


# MySQLのインストール
dnf install mysql-community-server

# MySQLの起動
systemctl start mysqld

# 初期設定
mysql_secure_installation

my.cnfに以下のパラメータを追加

server_id= 1
gtid_#### mode= "ON"
enforce_gtid_consistency= "ON"
log_bin= "bin_log"
sync_binlog= "1"

MySQL再起動

systemctl restart mysqld

レプリケーション用のユーザーを作成

CREATE USER 'replication_user'@'192.168.0.0/23' identified with mysql_native_password by 'password';

作成したアカウントにREPLICATION SLAVE 権限を追加

GRANT REPLICATION SLAVE ON *.* to 'replication_user'@'192.168.0.0/23';

IDCF RDB(レプリカ)側

ネットワークを選択してRDBを作成(今回はvoltを使用)

f:id:kmorita01:20210414165623p:plain

以下のパラメータを追加したパラメータグループを作成

server_id= "2"
gtid_mode= "ON"
enforce_gtid_consistency= "ON"
log_bin= "bin_log"
sync_binlog= "1"
super_read_only= "1"
log_slave_updates= "1"
relay_log_recovery= "1"
relay_log_purge= "1"

f:id:kmorita01:20210414170101p:plain

作成したパラメータグループをRDBに適用

f:id:kmorita01:20210414170328p:plain

CHANGE MASTER TOの設定

CHANGE MASTER TO
MASTER_HOST="192.168.2.83",
MASTER_USER="replication_user",
MASTER_PASSWORD="password",
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;

レプリカのRDBでスタティックルーティング機能を使用しルーティング設定を追加

192.168.2.83/32 via 192.168.1.254

f:id:kmorita01:20210414170814p:plain

レプリカのRDBでレプリケーション開始

start slave;

レプリケーション確認

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.2.83
                  Master_User: replication_user
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: bin_log.000001
          Read_Master_Log_Pos: 1384
               Relay_Log_File: rdb-90d8a3a5-f0b5-4a05-800c-bc2039fc16f0-relay-bin.000003
                Relay_Log_Pos: 1595
        Relay_Master_Log_File: bin_log.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 1384
              Relay_Log_Space: 1839
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
                  Master_UUID: 761ed903-9cf2-11eb-a50c-020223a50004
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 761ed903-9cf2-11eb-a50c-020223a50004:1-4
            Executed_Gtid_Set: 761ed903-9cf2-11eb-a50c-020223a50004:1-4
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
       Master_public_key_path: 
        Get_master_public_key: 0
            Network_Namespace:

最後に

今回はIDCFクラウド内の別リージョンに構築した仮想マシンとIDCFクラウド RDBを使用してレプリケーションを組んでみましたが、バーチャルブリッジを利用してIDCフロンティアのデータセンターとIDCFクラウド RDB間でのレプリケーションを組むこともできます。 IDCFクラウド RDBでは外部サービスとのレプリケーションを組める仕組みなども検討予定ですのでご期待ください!!

Copyright © IDC Frontier Inc.