GNU/Linux >> Linux の 問題 >  >> Cent OS

RHEL/CentosでMySQLレプリケーションを設定する方法

この記事では、マスターデータベースサーバーとスレーブデータベースサーバー間でMySQLレプリケーションを設定する方法を示します。これは2つのサーバーを使用し、そのうちの1つはもう1つのサーバー(マスターからスレーブ)からデータを複製します。システム構成から信頼性とパフォーマンスを向上させたい場合は、この設定を使用してください。

RHELベースのシステムのセットアップについてサポートが必要な場合は、他のチュートリアルの1つを参照してください。

このガイドでは、このMySQLレプリケーションラボのセットアップを使用します。

MySQL Master - 192.168.56.1
MySQL Slave  - 192.168.56.2 

ステップ1:マスターサーバーとスレーブサーバーにMySQLをインストールする

マスターサーバーとスレーブサーバーの両方にMySQLデータベースをインストールすることから始めます。

$ sudo dnf install @mysql

or

$ sudo yum install mysql-server

インストールが完了したら、データベースサービスを開始します。

$ sudo systemctl start mysqld

次に、systemctlで開始できるようにします。これを有効にすると、サービスは起動シーケンスで開始するように指示されます。

$ sudo systemctl enable mysqld

次に、MySQLデータベースサーバーが実行されていることを確認します。

$ sudo systemctl status mysqld

ステップ2:マスターサーバーとスレーブサーバーで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	 = 192.168.56.1
server-id 	 = 1
log_bin		 = mysql-bin

完了したら、変更を保存して終了します。次に、MySQLサーバーを再起動します。

$ sudo sysemctl restart mysqld

次に、MySQLシェルにログインします。

$ sudo mysql -u root -p

次のコマンドを実行して、レプリケーションのためにマスターとスレーブをバインドするために使用されるデータベースユーザーを作成します。

mysql> CREATE USER 'replica'@'192.168.56.2' IDENTIFIED BY 'Password';
mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'192.168.56.2';

変更を適用して、MySQLサーバーを終了します。

mysql> FLUSH PRIVILEGES;
mysql> EXIT;

マスターのステータスを確認します。

mysql> SHOW MASTER STATUS\G

ファイル名と位置をメモします。これは、後でレプリケーション用にスレーブを設定するときに必要になります。この場合、ファイル名はbinlog.000001およびPosition854です。

ステップ4:スレーブノード(サーバー)を構成する

ここで、スレーブノードに戻ります。もう一度、mysql-server.cnf構成ファイルを編集します。

$ sudo vim /etc/my.cnf.d/mysql-server.cnf

前と同じように、これらの行を[mysqld]セクションの下に貼り付けます。スレーブのIPに対応するようにIPアドレスを変更します。また、別のサーバーIDを割り当てます。ここでは、値2を割り当てています。

bind-address	 = 192.168.56.2
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='192.168.56.1' ,
     MASTER_USER='replica' ,
     MASTER_PASSWORD='Password' ,
     MASTER_LOG_FILE='binlog.000001' ,
     MASTER_LOG_POS=854;

MASTERLOGFILEフラグとMASTERLOGPOSフラグは、ステップ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;

データベースの存在を確認します。

mysql> SHOW DATABASES;

次に、スレーブノードに移動し、MySQLサーバーにログインして、レプリケーションデータベースデータベースが存在することを再確認します。以下の出力にデータベースが存在することがわかります。これは、マスターからスレーブノードへのレプリケーションが発生したことを示しています。

mysql> SHOW DATABASES;

Cent OS
  1. CentOS 7 /RHEL7でNFSサーバーをセットアップする方法

  2. CentOS 7 /RHEL7でIcingaWeb2をセットアップする方法

  3. CentOS/RHEL で mutt をセットアップする方法

  1. CentOS 7ノードを使用してMySQLマスタースレーブセットアップをセットアップする方法は?

  2. CentOS 7 /RHEL7でSysLogサーバーをセットアップする方法

  3. CentOS/RHEL 7 で squid プロキシ サーバーをセットアップする方法

  1. CentOSおよびRedHatでMySQLを使用してPure-FTPDをセットアップする方法

  2. CentOS /RHEL8にMySQL8.0をインストールする方法

  3. CentOSでMySQLレプリケーションを設定する方法