最終更新日:2024年6月5日
こんばんは、サービス基盤部の森田です。
前回の記事ではIDCFクラウド RDBへのリージョン/ゾーン間接続例を紹介させていただきましたが、レプリケーション構成において異なるNW間でRDB自身がレプリカとしてソースのデータベースに通信を行うケースについてはRDB側に接続先のスタティックルートの設定が入っていないためRDBからの接続を行うことが出来ません。しかし、去年の12月にRDBでリリースしたスタティックルーティング機能を利用することで今まで実現できなかったRDBからの接続についても可能となりました。 今回はこの機能を使用してリージョン間を跨いだ外部データベース(ソース)/RDB(レプリカ)のレプリケーション構成例についてご紹介してみたいと思います。
事前準備
voltに追加ネットワークを作成
augustaに追加ネットワークを作成
追加ネットワークをプライベートコネクトに接続
仮想ルーターを作成するためにvoltの追加ネットワークを選択してコンピュート上に仮想マシンを作成します(諸々の事情で...)
augustaに外部データベース(ソース)用仮想マシン作成
外部データベース(ソース)側
スタティックルートを追加
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/255.255.254.0' identified with mysql_native_password by 'password';
作成したアカウントにREPLICATION SLAVE 権限を追加
GRANT REPLICATION SLAVE ON *.* to 'replication_user'@'192.168.0.0/255.255.254.0';
IDCF RDB(レプリカ)側
ネットワークを選択してRDBを作成(今回はvoltを使用)
以下のパラメータを追加したパラメータグループを作成
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"
作成したパラメータグループをRDBに適用
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
レプリカの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では外部サービスとのレプリケーションを組める仕組みなども検討予定ですのでご期待ください!!