アンドロイド

mysqlマスターを構成する方法

目次:

Anonim

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

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

このチュートリアルでは、Ubuntu 18.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をインストールする

デフォルトのUbuntu 18.04リポジトリには、MySQLバージョン5.7が含まれています。 問題を回避するには、両方のサーバーに同じMySQLバージョンをインストールするのが最善です。

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

sudo apt-get update sudo apt-get install mysql-server

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

sudo apt-get update sudo apt-get install mysql-server

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

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

  • MySQLサーバーをプライベートIPでリッスンするように設定します。一意のサーバー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 ユーザーを作成し、ユーザーに REPLICATION SLAVE 特権を付与する次のSQLクエリを実行します。

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 slave:/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 TO MASTER_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)

結論

このチュートリアルでは、MySQLマスター/スレーブレプリケーションを作成することを示しました。

ご質問がある場合は、コメントをお気軽にお寄せください。

Ubuntu mysql mariadb