本ガイドでは、CentOS 6.8環境におけるMySQLのマスタースレブレプリケーション設定手順を説明します。
1. MySQLのインストール
両方のサーバー(マスタおよびスレーブ)にMySQLをインストールします。
yum -y install mysql mysql-server
2. MySQLサービスの起動とrootパスワード設定
MySQLサービスを起動し、rootユーザーのパスワードを設定します。
# MySQLサービスを起動
service mysqld start
# rootパスワード設定とセキュリティ強化
mysql_secure_installation
# 画面の指示に従い、rootパスワードの設定、匿名ユーザーの削除、リモートからのrootログインの禁止、テストデータベースの削除を行います。
mysql_secure_installation コマンドを実行すると、対話形式でセキュリティ設定が行われます。
3. マスタサーバーのMySQL設定変更
マスタサーバーのMySQL設定ファイル /etc/my.cnf を編集し、レプリケーションに必要な設定を追加します。
vim /etc/my.cnf
以下の行を [mysqld] セクションに追加します。
[mysqld]
server-id=1
log-bin=mysql-bin
設定変更後、MySQLサービスを再起動します。
service mysqld stop
service mysqld start
service mysqld status
4. レプリケーション用ユーザーの作成
マスタサーバーで、スレーブサーバーが接続するためのレプリケーション用ユーザーを作成します。
mysql> GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO 'backup'@'192.168.153.131' IDENTIFIED BY 'your_password';
Query OK, 0 rows affected (0.00 sec)
上記コマンドの '192.168.153.131' はスレーブサーバーのIPアドレス、'backup' はユーザー名、'your_password' はパスワードです。
5. テーブルロックの解除
マスタサーバーで、テーブルロックを解除します。
mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)
6. マスタステータスの確認
マスタサーバーの現在のバイナリログの状態を確認します。この情報はスレーブ設定時に必要となります。
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 275 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
File と Position の値を記録しておきます。
7. スレーブサーバーのMySQL設定変更
スレーブサーバーのMySQL設定ファイル /etc/my.cnf を編集し、レプリケーションに必要な設定を追加します。
vim /etc/my.cnf
以下の行を [mysqld] セクションに追加または編集します。
[mysqld]
log-bin = mysql-bin
server-id = 2
master-host = 192.168.153.130
master-user = backup
master-pass = your_password
master-port = 3306
master-connect-retry = 60
server-id はマスタとは異なる一意のIDを設定してください。
8. スレーブサーバーでのレプリケーション設定
スレーブサーバーでMySQLに接続し、マスタサーバーの情報を設定します。
mysql -u root -p
以下のコマンドを実行します。'your_password' はマスタで設定したパスワードに置き換えてください。MASTER_LOG_FILE と MASTER_LOG_POS は、ステップ6で確認した値を使用します。
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.153.130',
MASTER_USER='backup',
MASTER_PASSWORD='your_password',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=275,
MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected (0.02 sec)
もし設定中にエラーが発生した場合は、スレーブの I/O Thread が実行されていないか確認し、必要であれば停止してから再度設定を試みてください。
9. レプリケーション状態の確認
スレーブサーバーでレプリケーションの状態を確認します。
mysql> SHOW SLAVE STATUS\G
出力結果で Slave_IO_Running と Slave_SQL_Running が Yes になっていることを確認してください。これが Yes であれば、レプリケーションは正常に動作しています。
10. 動作確認
マスタサーバーでデータベースを作成し、スレーブサーバーでそれが同期されているか確認します。
-- マスタサーバーで実行
mysql> create database test_replication;
mysql> show databases;
スレーブサーバーで以下のコマンドを実行し、test_replication データベースが表示されれば、レプリケーションは成功です。
-- スレーブサーバーで実行
mysql> show databases;
これで基本的なMySQLマスタースレブレプリケーションの設定は完了です。