GNU/Linux >> Linux の 問題 >  >> Ubuntu

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

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

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

このチュートリアルでは、Ubuntu18.04で1つのマスターサーバーと1つのスレーブサーバーを使用したMySQLマスター/スレーブレプリケーションの基本的な例について説明します。同じ手順がMariaDBにも当てはまります。

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

前提条件#

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

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

Master IP: 192.168.121.190
Slave IP:  192.168.121.236

MySQLのインストール#

デフォルトのUbuntu18.04リポジトリには、MySQLバージョン5.7が含まれています。問題を回避するには、両方のサーバーに同じMySQLバージョンをインストールすることをお勧めします。

マスターサーバーにMySQLをインストールします:

sudo apt-get updatesudo apt-get install mysql-server

同じコマンドを使用して、MySQLをスレーブサーバーにインストールします。

sudo apt-get updatesudo apt-get install mysql-server

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

最初のステップは、マスターMySQLサーバーを構成することです。次の変更を行います:

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

これを行うには、MySQL構成ファイルを開き、コメントを解除するか、以下を設定します。

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
master:/etc/mysql/mysql.conf.d/mysqld.cnf
bind-address           = 192.168.121.190
server-id              = 1
log_bin                = /var/log/mysql/mysql-bin.log

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

sudo systemctl restart mysql

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

sudo mysql

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

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

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

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

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

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

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

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

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

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
スレーブ:/etc/mysql/mysql.conf.d/mysqld.cnf
bind-address           = 192.168.121.236
server-id              = 2
log_bin                = /var/log/mysql/mysql-bin.log

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

sudo systemctl restart mysql

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

sudo mysql

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

STOP SLAVE;

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

CHANGE MASTER TOMASTER_HOST='192.168.121.190',MASTER_USER='replica',MASTER_PASSWORD='replica_password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=629;

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

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

START SLAVE;

構成をテストする#

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

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

sudo mysql
CREATE DATABASE replicatest;

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

sudo mysql

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

SHOW DATABASES;

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

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

Ubuntu
  1. Ubuntu16.04にMySQLサーバーをインストールする方法

  2. Ubuntu17.04にMySQLサーバーをインストールする方法

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

  1. Ubuntu20.04にNFSサーバーをインストールして構成する方法

  2. Ubuntu20.04にVNCをインストールして構成する方法

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

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

  2. Debian 10でMySQL(MariaDB)マスタースレーブレプリケーションを構成する方法

  3. Debian 9 /Ubuntu16.04サーバーでHAProxyを設定する方法