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

CentOS7でMySQLマスタースレーブレプリケーションを構成する方法

MySQLレプリケーションは、1つのデータベースサーバーから1つ以上のサーバーにデータを自動的にコピーできるようにするプロセスです。

MySQLは多くのレプリケーショントポロジをサポートしており、マスター/スレーブトポロジは、1つのデータベースサーバーがマスターとして機能し、1つ以上のサーバーがスレーブとして機能する最もよく知られたトポロジの1つです。デフォルトでは、レプリケーションは非同期であり、マスターはデータベースの変更を説明するイベントをバイナリログに送信し、スレーブは準備ができたときにイベントを要求します。

このチュートリアルでは、CentOS7で1つのマスターサーバーと1つのスレーブサーバーを使用してMySQLマスター/スレーブレプリケーションを設定する方法を説明します。同じ手順がMariaDBにも当てはまります。

このタイプのレプリケーショントポロジは、リードスケーリングのためのリードレプリカの展開、ディザスタリカバリおよび分析ジョブのためのライブデータベースバックアップに最適です。

前提条件#

この例では、CentOS 7を実行している2台のサーバーがあり、プライベートネットワークを介して相互に通信できることを前提としています。ホスティングプロバイダーがプライベートIPアドレスを提供していない場合は、パブリックIPアドレスを使用して、信頼できるソースからのポート3306のみのトラフィックを許可するようにファイアウォールを構成できます。

この例のサーバーには、次のIPがあります。

Master IP: 192.168.121.59
Slave IP:  192.168.121.14

MySQLのインストール#

デフォルトのCentOS7リポジトリにはMySQLパッケージが含まれていないため、公式のYumリポジトリからMySQLをインストールします。問題を回避するために、両方のサーバーに同じMySQLバージョン5.7をインストールします。

マスターサーバーとスレーブサーバーの両方にMySQLをインストールします:

sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmsudo yum install mysql-community-server

インストールが完了したら、MySQLサービスを開始し、次のコマンドで起動時に自動的に開始できるようにします。

sudo systemctl enable mysqldsudo systemctl start mysqld

MySQLサーバーが初めて起動すると、MySQLrootユーザーの一時パスワードが生成されます。パスワードを見つけるには、次のgrepコマンドを使用します。

sudo grep 'temporary password' /var/log/mysqld.log

mysql_secure_installationを実行します 新しいルートパスワードを設定し、MySQLインスタンスのセキュリティを向上させるコマンド:

mysql_secure_installation

一時的なルートパスワードを入力し、Yと答えます (はい)すべての質問に。

新しいパスワードは、少なくとも8文字の長さで、少なくとも1つの大文字、1つの小文字、1つの数字、および1つの特殊文字を含む必要があります。

マスターサーバーを構成する#

まず、マスターMySQLサーバーを構成し、次の変更を加えます。

  • プライベートIPでリッスンするようにMySQLサーバーを設定します。
  • 一意のサーバーIDを設定します。
  • バイナリロギングを有効にします。

これを行うには、MySQL構成ファイルを開き、[mysqld]に次の行を追加します。 セクション:

sudo nano /etc/my.cnf
master:/etc/my.cnf
bind-address           = 192.168.121.59
server-id              = 1
log_bin                = mysql-bin

完了したら、変更を有効にするためにMySQLサービスを再起動します

sudo systemctl restart mysqld

次のステップは、新しいレプリケーションユーザーを作成することです。 rootユーザーとしてMySQLサーバーにログインします:

mysql -uroot -p

MySQLプロンプト内から、replicaを作成する次のSQLクエリを実行します。 ユーザーとREPLICATION SLAVEを付与します ユーザーへの特権:

CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14';
必ずスレーブIPアドレスでIPを変更してください。必要に応じてユーザーに名前を付けることができます。

MySQLプロンプト内で、次のコマンドを実行して、バイナリのファイル名と位置を出力します。

SHOW MASTER STATUS\G
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 1427
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

ファイル名‘mysql-bin.000001’をメモします と位置「1427」 。スレーブサーバーを構成するときにこれらの値が必要になります。これらの値は、サーバーによって異なる可能性があります。

スレーブサーバーの構成#

上記のマスターサーバーと同様に、スレーブサーバーに次の変更を加えます。

  • プライベートIPでリッスンするようにMySQLサーバーを設定します
  • 一意のサーバーIDを設定する
  • バイナリロギングを有効にする

MySQL構成ファイルを開き、次の行を編集します。

sudo nano /etc/my.cnf
スレーブ:/etc/my.cnf
bind-address           = 192.168.121.14
server-id              = 2
log_bin                = mysql-bin

MySQLサービスを再起動します:

sudo systemctl restart mysqld

次のステップは、スレーブサーバーがマスターサーバーに接続するために使用するパラメーターを構成することです。 MySQLシェルにログインします:

mysql -uroot -p

まず、スレーブスレッドを停止します:

STOP SLAVE;

マスターを複製するようにスレーブを設定する次のクエリを実行します。

CHANGE MASTER TOMASTER_HOST='192.168.121.59',MASTER_USER='replica',MASTER_PASSWORD='strong_password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1427;

正しいIPアドレス、ユーザー名、およびパスワードを使用していることを確認してください。ログファイルの名前と位置は、マスターサーバーから取得した値と同じである必要があります。

完了したら、スレーブスレッドを開始します。

START SLAVE;

構成をテストする#

この時点で、マスター/スレーブレプリケーションのセットアップが機能しているはずです。

すべてが期待どおりに機能することを確認するために、マスターサーバー上に新しいデータベースを作成します。

mysql -uroot -p
CREATE DATABASE replicatest;

スレーブMySQLシェルにログインします:

mysql -uroot -p

次のコマンドを実行して、すべてのデータベースを一覧表示します。

SHOW DATABASES;

マスターサーバーで作成したデータベースがスレーブに複製されていることに気付くでしょう:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| replicatest        |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

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

  2. CentOS7でOpenSSHを構成する方法

  3. CentOS 6.x に MySQL 5.6 をインストールする方法

  1. CentOS7にMySQLをインストールする方法

  2. CentOS8にMySQLをインストールする方法

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

  1. Ubuntu18.04でMySQLマスタースレーブレプリケーションを構成する方法

  2. CentOS7にZabbixをインストールして設定する方法

  3. CentOS8にMySQLをインストールする方法