2026年6月2日

2026年6月2日

WordPressのMasterSlave レプリケーション設定

はじめに

この記事では、WordPressサイトのパフォーマンスと信頼性を向上させるためにMySQLデータベースでのマスタースレーブレプリケーション設定について解説します。マスタースレーブレプリケーションは、データベースの読み書き操作を分離することで、高可用性やスケーラビリティを確保することができます。

症状・背景

このテーマが必要になる主な場面:

  • データベース読み込み遅延がある場合
  • サイトへのアクセスが急激に増加した場合
  • データベースの障害によりサービスが停止した場合
  • レプリカを使用してバックアップを定期的に取得したい場合

手順・設定方法

ステップ1: MySQLレプリケーションの準備

# サーバーへの接続
ssh root@master_server_ip

# MySQLをrootユーザーで起動
mysql -u root -p

ステップ2: マスターサーバー設定

# レプリケーションのためのユーザを作成
CREATE USER 'replication_user'@'slave_server_ip' IDENTIFIED BY 'password';

# ユーザに適切な権限を付与
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'slave_server_ip';

# データベースの状態をロック
FLUSH TABLES WITH READ LOCK;

# 現在の二進化されたロギングポジションとファイル名を取得
SHOW MASTER STATUS;

ステップ3: スレーブサーバー設定

# サーバーへの接続
ssh root@slave_server_ip

# MySQLをrootユーザーで起動
mysql -u root -p
# マスターサーバーからデータベースのバックアップを取得
mysqldump --all-databases > full_backup.sql

# スレーブサーバーにバックアップファイルをインポート
mysql < full_backup.sql

# MySQL設定ファイル(my.cnf)の調整
# ロギングエンジンとバイナリログファイル名を指定
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log

ステップ4: マスターデータベースの状態をスレーブに設定

# MySQLをrootユーザーで起動
mysql -u root -p
# マスターサーバーから取得した情報を指定
CHANGE MASTER TO
  MASTER_HOST='master_server_ip',
  MASTER_USER='replication_user',
  MASTER_PASSWORD='password',
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=0;

# スレーブを開始
START SLAVE;

注意事項

  • データ同期の確認: データベースが正常に同期していることを定期的にチェックする。
  • セキュリティ強化: レプリケーションユーザの権限は最小限に抑え、必要最低限のみを付与する。
  • パフォーマンス監視: スレーブサーバーのパフォーマンスがマスターサーバーと比較して低下していないか確認する。

まとめ

1. マスタースレーブレプリケーション: データベースの読み書き操作を分離し、高可用性やスケーラビリティを確保。

2. ユーザ作成と権限設定: レプリケーション専用ユーザーを作成し、適切な権限を付与。

3. データ同期確認: データベースの同期状況を定期的にチェックする。

4. セキュリティ強化: 必要最低限の権限しか付与しない。

5. パフォーマンス監視: スレーブサーバーのパフォーマンス低下に注意。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ