データレプリケーションは、データの可用性を向上させ、アプリケーションの信頼性とパフォーマンスを向上させるために、複数のサーバー間でデータをコピーするプロセスです。 MySQL レプリケーションでは、データの一貫性を確保し、バックアップと冗長性を提供するために、データがデータベースからマスターサーバーから他のノードにリアルタイムでコピーされます。
このガイドでは、 MySQLを設定する方法を示します (マスタースレーブ ) CentOSなどのRHELベースのディストリビューションでのレプリケーション 、 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を設定する必要があります ルートパスワード。強力なルートパスワードを必ず入力してください。できれば、大文字、小文字、特殊文字、数字を組み合わせた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 '[email protected]'; 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アドレスを変更します。また、別の server-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='[email protected]' , 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サーバーにログインして、複写_dbを確認します。 データベースが存在します。以下の出力から、データベースが存在することがわかります。これは、マスターからスレーブノードへのレプリケーションが行われたことの確認です。
mysql> SHOW DATABASES;


以上で、 MySQLを設定する方法のデモンストレーションに成功しました。 マスターノードからスレーブノードにデータベースを複製できるマスタースレーブ複製モデル。