CentOS 6.8でのMySQLレプリケーション設定

本ガイドでは、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)

FilePosition の値を記録しておきます。

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_FILEMASTER_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_RunningSlave_SQL_RunningYes になっていることを確認してください。これが Yes であれば、レプリケーションは正常に動作しています。

10. 動作確認

マスタサーバーでデータベースを作成し、スレーブサーバーでそれが同期されているか確認します。

-- マスタサーバーで実行
mysql> create database test_replication;
mysql> show databases;

スレーブサーバーで以下のコマンドを実行し、test_replication データベースが表示されれば、レプリケーションは成功です。

-- スレーブサーバーで実行
mysql> show databases;

これで基本的なMySQLマスタースレブレプリケーションの設定は完了です。

タグ: MySQL Replication CentOS database Master-Slave

8月3日 17:35 投稿