MySQL の読み取りと書き込みの分離の構成は、一般的なデータベース アーキテクチャの方法であり、読み取りリクエストと書き込みリクエストを異なる MySQL インスタンスに分散して、データベースのパフォーマンスとスケーラビリティを向上させることができます。ユーザーフレンドリーなステップバイステップガイドは次のとおりです。
- マスター データベース (マスター) と少なくとも 1 つのスレーブ データベース (スレーブ) をデプロイします。すべてのデータベース インスタンスに MySQL がインストールされ、適切に実行されていることを確認してください。
-
プライマリ データベースで構成を変更します。MySQL 構成ファイル (通常は
my.cnf
) を編集し、次の行を見つけて、それに応じて変更します。server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = your_database_name
これらの構成では、バイナリ ログ (バイナリ ログ) が有効になり、レプリケートされるデータベースが指定されます。
-
構成の変更を有効にするには、マスター データベースを再起動します。
sudo service mysql restart
-
スレーブ データベースで構成を変更します。MySQL 構成ファイルを編集し、次の行を見つけて、それに応じて変更します。
server-id = 2 relay_log = /var/log/mysql/mysql-relay-bin.log read_only = 1
これらの構成により、リレー ログが有効になり、スレーブ データベースが読み取り専用モードに設定されます。
-
構成の変更を有効にするには、スレーブ データベースを再起動します。
sudo service mysql restart
-
master データベース上でレプリケーション用の MySQL ユーザーを作成し、そのユーザーにレプリケーション権限を付与します。
CREATE USER 'replication_user'@'slave_ip_address' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'slave_ip_address'; FLUSH PRIVILEGES;
slave_ip_address
スレーブ データベースの IP アドレスpassword
とユーザーのパスワードに置き換えられます 。 -
スレーブ データベースでレプリケーションを構成します。スレーブ データベースの MySQL インスタンスに接続し、次のコマンドを実行します。
STOP SLAVE; CHANGE MASTER TO MASTER_HOST='master_ip_address', MASTER_USER='replication_user', MASTER_PASSWORD='password'; START SLAVE;
master_ip_address
プライマリ データベースの IP アドレスをpassword
レプリケーション ユーザーのパスワードに置き換えます 。 -
スレーブ データベースがマスター データベースに正常に接続されていることを確認し、レプリケーションを開始します。レプリケーションのステータスは、次のコマンドで確認できます。
SHOW SLAVE STATUS\G
上記の手順により、MySQL の読み取りと書き込みの分離を構成できます。この時点で、書き込みリクエストをマスター データベースに送信し、読み取りリクエストを任意のスレーブ データベースに送信できるため、マスター データベースの負荷が分散され、データベースのパフォーマンスとスケーラビリティが向上します。構成中は機密情報 (パスワードなど) に注意し、DB インスタンス間のネットワーク接続とセキュリティ設定が正しいことを確認してください。