lulu

【AWS】EC2を使ってMySQLのレプリケーション環境を構築してみた

検証内容

EC2を2台使って、MySQLのMaster-Slave構成を構築し、レプリケーションを手動で設定する

検証した理由

RDSを使っている場合、マネージメントコンソール画面から設定をいじるだけで自動で構築できるが、実際に自分で作ってみたくなった。

環境構築

EC2

  • Amazon Linux2
  • 22(ssh)と3306(mysql)を開放したセキュリティグループを設定 上記のEC2インスタンスを2台起動

MySQLをsetup

2台のEC2インスタンスに、MySQLをinstallしてsetup
※MySQLのsetupはこちらの記事にまとまっています。

my.cnfの編集

master側のMySQL

log-bin
server_id=1
gtid_mode=on
enforce_gtid_consistency=on
log-slave-updates

を追加

slave側のMySQL

log-bin
server_id=2
gtid_mode=on
enforce_gtid_consistency=on
log-slave-updates
read_only

masterサーバーにレプリケーション用のユーザーを追加

こちら

slaveサーバーでCHANGE MASTERコマンドを実行

mysql> CHANGE MASTER TO MASTER_HOST='HOSTのIP', MASTER_USER='username', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1;
mysql> START SLAVE;

# 以下のコマンドで状態を確認できる(Waiting for master to send eventが正解)
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
...

masterサーバーでcreate databaseしてみる

masterサーバーでcreate databaseすると、slaveサーバーに同じデータベースが作成されていることが確認できる。