share facebook facebook twitter menu hatena pocket slack

EC2でMySQL(リージョン間レプリケーション編)

三浦 悟

WRITTEN BY 三浦 悟

EC2でMySQL(簡単インストール編)に引き続き、MySQLについてです。
今回は、リージョン間でMySQLのレプリケーションを行います。
まず、マスター用(Asia Pacific Tokyo)とスレーブ用(EU-West Ireland)、それぞれ1インスタンスずつ
用意します。

ここでは、例として下記のようにします。

  • マスターのIP:mmm.mmm.mmm.mmm
  • スレーブのIP:sss.sss.sss.sss
  • データベース:clouadpack
  • レプリケーション用のユーザー:repl_user
  • レプリケーション用のパスワード:repl_pass

また、各IPはElasticIPでパブリックなIPを適用しておきます。

まず、マスター、スレーブ、それぞれでデータベースを作成します。

$ mysql -u root

mysql> create database cloudpack;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| cloudpack |
| mysql |
| performance_schema |
| test |
+--------------------+

次にマスターサーバーで、スレーブサーバーからのアクセスを許可し、バイナリログを生成するようにします。

$ myql -u root 

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON cloudpack.* TO repl_user@"sss.sss.sss.sss" IDENTIFIED BY 'repl_pass';
mysql> flush privileges;
# vi /etc/my.cnf

...
log-bin = /var/db/repl/binary-log
...
server-id = 1

スレーブサーバーでは、マスターサーバーの情報を登録します。

# vi /etc/my.cnf

...
server-id = 2
$ mysql -u root

mysql> CHANGE MASTER TO
MASTER_HOST='mmm.mmm.mmm.mmm',
MASTER_USER='repl_user',
MASTER_PASSWORD='repl_pass',
MASTER_PORT=3306;

それぞれのMySQLを起動するEC2のセキュリティグループに3306(MySQLポート。
それ以外を使用する場合はそのポート番号)を互いのIPで許可します。

そして、マスターサーバー、スレーブサーバーの順で再起動します。

# /etc/init.d/mysqld restart

実際に、レプリケーションが動いているか確認します。

○マスター

$ mysql -u root cloudpack; 

mysql>
CREATE TABLE `hoge` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(256) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
;
mysql>
mysql>
mysql> insert into hoge (name) values('moge');
Query OK, 1 row affected (0.02 sec)

○スレーブ

$ mysql -u root cloudpack;  

mysql> show tables;
+---------------------+
| Tables_in_cloudpack |
+---------------------+
| hoge |
+---------------------+
1 rows in set (0.00 sec)
mysql>
mysql>
mysql> select * from hoge;
+----+------+
| id | name |
+----+------+
| 1 | moge |
+----+------+
1 row in set (0.00 sec)

上記より、スレーブにも反映されていることが確認できました。
リージョン間の接続はオーバーインターネットになるため、SSL接続を行いたい場合は、
suz-labのMySQLのレプリケーションをSSL接続でのエントリーが参考になります。

こちらの記事はなかの人(memorycraft)監修のもと掲載しています。
元記事は、こちら

三浦 悟

三浦 悟

高円寺在住のなんじゃ系男子 またの名をmemorycraftといいます。 炭水化物大好き 日々の「なんじゃ?」を記事にしてます。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。