GNU/Linux >> Linux の 問題 >  >> Debian

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

MySQLレプリケーションは、1つのデータベースサーバー(マスター)から1つ以上のサーバー(スレーブ)にデータをコピーするプロセスです。

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

このガイドでは、Debian 10で1つのマスターサーバーと1つのスレーブサーバーを使用してMariaDBマスター/スレーブレプリケーションを設定する方法を示します。MariaDBは、DebianでのMySQLのデフォルトの実装です。同じ手順がOracleMySQLにも当てはまります。

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

前提条件#

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

この例で使用されているサーバーには、次のIPアドレスがあります。

Master IP: 10.10.8.12
Slave IP:  10.10.8.164

MariaDBのインストール#

デフォルトのDebian10リポジトリには、MariaDBバージョン10.3が含まれています。潜在的な問題を回避するために、両方のサーバーに同じMariaDBバージョンをインストールすることをお勧めします。

次のコマンドを発行して、マスターとスレーブの両方にMariaDBをインストールします。

sudo apt-get updatesudo apt-get install mariadb-server

マスターサーバーの構成#

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

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

MariaDB構成ファイルを開き、コメントを解除するか、次の行を設定します。

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

完了したら、ファイルを保存してMySQLサービスを再起動し、変更を有効にします。

sudo systemctl restart mariadb

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

sudo mysql

次のSQLクエリを実行して、replicaという名前のユーザーを作成します REPLICATION SLAVEを付与します ユーザーへの特権:

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

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

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

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

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

スレーブサーバーでも、マスターサーバーと同じ変更を加えます。

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

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

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

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

sudo systemctl restart mariadb

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

sudo mysql

スレーブスレッドを停止することから始めます:

STOP SLAVE;

次のクエリを実行して、マスター/スレーブレプリケーションを構成します。

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

正しい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)

Debian
  1. MySQL 8.0/5.7をDebian11/Debian10にインストールする方法

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

  3. MySQLサーバーをDebian9にインストールする方法

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

  2. Debian9にZabbixをインストールする方法

  3. Debian9でCSFを使用してファイアウォールを構成する方法

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

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

  3. Debian9にVNCをインストールして設定する方法