RHEL、Rocky、AlmaLinux で MySQL レプリケーションをセットアップする方法
データ レプリケーションは、データの可用性を向上させ、アプリケーションの信頼性とパフォーマンスを向上させるために、複数のサーバー間でデータをコピーするプロセスです。 MySQL レプリケーションでは、データの整合性を確保し、バックアップと冗長性を提供するために、データベースからマスター サーバーのデータがリアルタイムで他のノードにコピーされます。
このガイドでは、CentOS、などの RHEL ベースのディストリビューションで MySQL (マスター/スレーブ) レプリケーションを設定する方法を説明します。 >Fedora、Rocky Linux、およびAlmaLinux。
MySQL レプリケーションのセットアップ
ここではMySQL レプリケーション ラボのセットアップを示します。
MySQL Master - 10.128.0.14
MySQL Slave - 10.128.15.211
始めましょう…
ステップ 1: MySQL をマスターサーバーとスレーブサーバーにインストールする
まずマスターサーバーとスレーブサーバーの両方にMySQLデータベースをインストールします。
sudo dnf install @mysql
インストールが完了したら、必ずデータベース サーバーを起動してください。
sudo systemctl start mysqld
次に、システムの起動時または再起動時に開始できるようにします。
sudo systemctl enable mysqld
その後、次のようにMySQL データベース サーバーが実行されていることを確認します。
sudo systemctl status mysqld
ステップ 2: マスターサーバーとスレーブサーバーで MySQL を保護する
次のステップは、マスターサーバーとスレーブサーバーの両方でMySQLデータベースを保護することです。これは、デフォルト設定は安全ではなく、ハッカーによって簡単に悪用される可能性のあるいくつかの抜け穴が存在するためです。
したがって、MySQL を強化するには、次のコマンドを実行します。
sudo mysql_secure_installation
まず、MySQL の root パスワードを設定する必要があります。必ず強力な root パスワードを指定してください。できれば大文字、小文字、特殊文字、数字を組み合わせた 8 文字以上のパスワードを指定してください。
残りのプロンプトに対して、「'Y'
」と入力して、データベース サーバーを推奨設定に調整します。
マスターノードとスレーブノードへのMySQL のインストールと強化が完了したら、次はマスターノードを構成します。
ステップ 3: マスターノード (サーバー) を構成する
次の手順では、マスター ノードを構成し、スレーブ ノードにそのノードへのアクセスを許可します。まず、mysql-server.cnf 設定ファイルを編集する必要があります。
sudo vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
セクションに次の行を追加します。
bind-address = 10.128.0.14
server-id = 1
log_bin = mysql-bin
完了したら、変更を保存して終了します。次に、MySQL サーバーを再起動します。
sudo sysemctl restart mysqld
次に、MySQL シェルにログインします。
sudo mysql -u root -p
次のコマンドを実行して、レプリケーション用のマスターとスレーブをバインドするために使用されるデータベース ユーザーを作成します。
mysql> CREATE USER 'replica'@'10.128.15.211' IDENTIFIED BY 'P@ssword321';
mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'10.128.15.211';
変更を適用し、MySQL サーバーを終了します。
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
マスターの状態を確認してください。
mysql> SHOW MASTER STATUS\G
ファイル名と位置をメモします。これは、後でレプリケーション用にスレーブを設定するときに必要になります。この例では、ファイル名は mysql-bin.000001
、位置は 1232 です。
ステップ 4: スレーブ ノード (サーバー) を構成する
次に、スレーブ ノードに戻ります。もう一度、mysql-server.cnf 設定ファイルを編集します。
sudo vim /etc/my.cnf.d/mysql-server.cnf
前と同様に、これらの行を [mysqld]
セクションの下に貼り付けます。スレーブの IP に対応するように IP アドレスを変更します。また、 別のサーバー ID を割り当てます。ここでは値 2 を割り当てています。
bind-address = 10.128.15.211
server-id = 2
log_bin = mysql-bin
変更を保存してファイルを終了します。次に、データベースサーバーを再起動します。
sudo systemctl restart mysqld
マスター ノードから複製するようにスレーブ ノードを構成するには、スレーブの MySQL サーバーにログインします。
sudo mysql -u root -p
何よりもまず、レプリケーション スレッドを停止します。
mysql> STOP SLAVE;
次に、次のコマンドを実行して、マスターからデータベースを複製するようにスレーブ ノードを構成します。
mysql> CHANGE MASTER TO
MASTER_HOST='10.128.0.14' ,
MASTER_USER='replica' ,
MASTER_PASSWORD='P@ssword321' ,
MASTER_LOG_FILE='mysql-bin.000001' ,
MASTER_LOG_POS=1232;
MASTER_LOG_FILE フラグと MASTER_LOG_POS フラグは、ファイルの最後のマスター ノードからのファイルと位置 の値に対応していることに注意してください。ステップ1。
MASTER_HOST、MASTER_USER、MASTER_PASSWORDは、それぞれマスター IP アドレス、レプリケーション ユーザー、レプリケーション ユーザーのパスワードに対応します。
次に、スレーブ レプリケーション スレッドを開始します。
mysql> START SLAVE;
ステップ 4: MySQL マスター/スレーブ レプリケーションのテスト
ここで、マスター ノードとスレーブ ノード間のレプリケーションが機能しているかどうかをテストするために、マスター ノードの MySQL データベース サーバーにログインします。
sudo mysql -u root -p
テスト用データベースを作成します。ここで、テスト データベースは replication_db と呼ばれます。
mysql> CREATE DATABASE replication_db;
Verify the existence of the database.
mysql> SHOW DATABASES;
次に、スレーブ ノードに移動し、MySQL サーバーにログインし、replication_db データベースが存在することを確認します。以下の出力から、データベースが存在することがわかります。これは、マスターからスレーブ ノードへのレプリケーションが行われたことを確認します。
mysql> SHOW DATABASES;
以上で、データベースをマスター ノードからスレーブ ノードに複製できるMySQL マスター/スレーブ レプリケーション モデルをセットアップする方法を実証することができました。