0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS RDS で MySQL5.7 と MariaDB10.6 でレプリケーションを組んだ話

Posted at

AWS RDSにて、
MySQL5.7をマスター、MariaDB10.6をリードレプリカとしてレプリケーションを組んでみました。

目的

AWS RDSにおける、MySQL5.7からMariaDB10.6への無停止切り替えが可能か検証するため

概要

手法として、まず通常のMySQL5.7レプリケーションを構築し、
リードレプリカのレプリケーションを停止させマスターのポジションを確認しておき、
レプリケーションを停止させた状態のスナップショットを取得し、
それを元にRDSのスナップショットの移行機能でMariaDBを作成。
作成したMariaDBからマスターのMySQL5.7へレプリケーションを開始させる。
という流れです。

手順

  1. MySQL5.7の標準的なレプリケーションを構築
  2. リードレプリカにおけるレプリケーションを停止
  3. マスターのポジション情報を確認
  4. リードレプリカのスナップショットを取得
  5. スナップショットの移行を実施(※ターゲットDBにてMariaDBを選択)
  6. 新たに作成したMariaDBにて、レプリケーションを開始
  7. レプリケーションの必要がなくなったリードレプリカを削除

詳細

MySQL5.7の標準的なレプリケーションを構築

以下の手順でリードレプリカを作成する
AWSコンソール > RDS > 任意のMySQL5.7サーバのラジオボタンを選択 > アクション > リードレプリカの作成

リードレプリカにおけるレプリケーションを停止

作成したリードレプリカにてレプリケーションを停止する

CALL mysql.rds_stop_replication;

マスターのポジション情報を確認

リードレプリカからマスターの情報を参照し、確認しておく

mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State:
                  Master_Host: 172.X.X.X
                  Master_User: rdsrepladmin
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin-changelog.000032
          Read_Master_Log_Pos: 154
〜(略)〜

リードレプリカのスナップショットを取得

AWSコンソール > RDS > 作成したリードレプリカのラジオボタンを選択 > アクション > スナップショットの取得

スナップショットの移行を実施

AWSコンソール > RDS > 作成したリードレプリカのラジオボタンを選択 > アクション > スナップショットの移行 >
データベースエンジンの名前にてmariadbを選択

※その後は各環境に合わせた設定を行い、作成する
※リードレプリカのレプリケーションは、作業中終始停止したままの方が良いかと思われる(※max_binlog_sizeの設定によってはMaster_Log_Fileがローテートされていってしまい、後ほどレプリケーションの開始ができなくなるため)

新たに作成したMariaDBにて、レプリケーションを開始

CALL mysql.rds_set_external_master(
'<hostname>',
<port>,
'<username>',
'<password>',
'<Master_Log_Fileの値>',
<Read_Master_Log_Posの値>,
0
);

CALL mysql.rds_start_replication;

mysql> show slave status \G;
〜(略)〜
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes

Slave_IO_Running、Slave_SQL_RunningがYesであることを確認

レプリケーションの必要がなくなったリードレプリカを削除

AWSコンソール > RDS > 作成したリードレプリカのラジオボタンを選択 > アクション > 削除

完了です

考察

AWS公認の手法ではないが、
この手法でMySQL5.7におけるMariaDB10.6のリードレプリカを作成できることがわかった。

この手法をうまく使えば、MySQL5.7からMariaDB10.6への無停止切り替えが可能となるかもしれない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?