MySQL マスタースレーブレプリケーションは、データベースファイルをネットワーク内の1つ以上のノード間でレプリケートまたはコピーできるようにする手順です。このセットアップは、マスターノードで障害が発生した場合に、冗長性とフォールトトレランスを提供します。 、データベースは引き続きスレーブノードで復元できます 。これにより、データベースのレプリカを別のサーバーから取得できるため、万が一すべてが失われることはないという安心感が得られます。
このガイドでは、 MySQLを実行する方法を学習します。 データベースマスタースレーブ Ubuntu 18.04でのレプリケーション システム。
前提条件
セットアップでは、2台のサーバーで Ubuntu 18.04を実行します。 次のIPアドレスを使用します。
Master server: 10.128.0.28 Slave server: 10.128.0.29
それでは、マスタースレーブを構成する方法を見てみましょう。 Ubuntuでのレプリケーション設定 。
ステップ1:マスターノードとスレーブノードにMySQLをインストールする
Ubuntu リポジトリにはバージョン5.7が含まれています MySQL 。新しい機能を利用して潜在的な問題を回避するには、最新のMySQLバージョンをインストールする必要があります。ただし、最初に、次のaptコマンドを使用して2つのノードを更新しましょう。
$ sudo apt update
MySQLをインストールするには 両方のノードで、コマンドを実行します。
$ sudo apt install mysql-server mysql-client
次に、 mysqlを開きます 構成ファイル。
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
マスターノード 、スクロールしてbind-address
を見つけます 以下に示す属性。
bind-address =127.0.0.1
マスターノードのIPアドレスと一致するようにループバックアドレスを変更します 。
bind-address =10.128.0.28
次に、server-id
の値を指定します [mysqld]
の属性 セクション。選択する番号は、他のサーバーID番号と一致してはなりません。値1
を割り当てましょう 。
server-id =1
構成ファイルの最後に、以下の行をコピーして貼り付けます。
log_bin = /var/log/mysql/mysql-bin.log log_bin_index =/var/log/mysql/mysql-bin.log.index relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index
構成ファイルを終了し、MySQLサービスを再起動して、変更をマスターノードで有効にします。
$ sudo systemctl restart mysql
MySQLサーバーが期待どおりに実行されていることを確認するには、コマンドを発行します。
$ sudo systemctl status mysql
完全! MySQLサーバーは期待どおりに実行されています!
ステップ2:マスターノードでレプリケーション用の新しいユーザーを作成する
このセクションでは、マスターノードにレプリケーションユーザーを作成します。 。これを実現するには、図のようにMySQLサーバーにログインします。
$ sudo mysql -u root -p
次に、以下のクエリに進んで実行し、レプリカユーザーを作成して、レプリカスレーブへのアクセスを許可します。 IPアドレスを使用することを忘れないでください。
mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';
次に、次のコマンドを実行します。
mysql> SHOW MASTER STATUS\G
出力は、以下のようになります。
熱心に注意し、mysql-bin.000002
に注意してください 値と位置ID1643
。これらの値は、スレーブサーバーを設定するときに重要になります 。
ステップ3:MySQLスレーブサーバーを構成する
スレーブサーバーに向かい、マスターサーバーで行ったように 、MySQL構成ファイルを開きます。
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
マスターサーバーと同じように 、次の行の編集に進みます。
bind-address = 10.128.0.29
前と同じように、server-id
の値を指定します [mysqld]
の属性 セクション。今回は別の値を選択します。 2
で行きましょう 。
server-id =2
繰り返しになりますが、以下の行を構成ファイルの最後に貼り付けてください。
log_bin = /var/log/mysql/mysql-bin.log log_bin_index =/var/log/mysql/mysql-bin.log.index relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index
次に、スレーブノードでMySQLサーバーを再起動します。
$ sudo systemctl restart mysql
完了したら、テキストエディタを保存して終了します
次に、図のようにMySQLシェルにログインします。
$ sudo mysql -u root -p
このステップでは、スレーブサーバーを許可する構成を行う必要があります。 マスターサーバーに接続するには 。ただし、最初に、図のようにスレーブスレッドを停止します。
mysql> STOP SLAVE;
スレーブサーバーを許可するには マスターサーバーを複製するには 、コマンドを実行します。
mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='[email protected]', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;に変更します。
十分に熱心であれば、mysql-bin.00002
を使用したことがわかります。 値と位置ID1643
スレーブレプリケーションユーザーの作成後に以前に表示されました。
さらに、マスターサーバーのIPアドレス、レプリケーションユーザー、およびパスワードが使用されています。
後で、以前に停止したスレッドを開始します。
mysql> START SLAVE;
ステップ4:MySQLマスタースレーブレプリケーションを確認する
セットアップが実際に期待どおりに機能しているかどうかを確認するために、マスター上に新しいデータベースを作成し、それがMySQLスレーブサーバーに複製されているかどうかを確認します。
マスターサーバーでMySQLにログインします 。
$ sudo mysql -u root -p
テストデータベースを作成しましょう。この場合、 Replication_dbというデータベースを作成します 。
mysql> CREATE DATABASE replication_db;
次に、スレーブサーバーでMySQLインスタンスにログインします。 。
$ sudo mysql -u root -p
次に、クエリを使用してデータベースを一覧表示します。
mysql> SHOW DATABASES;
マスターで作成したデータベースに気付くでしょう スレーブに複製されました 。素晴らしい ! MySQLマスタースレーブレプリケーションは期待どおりに機能しています!これで、障害が発生した場合に、データベースファイルのコピーがスレーブサーバーに複製されるので安心できます。
結論
このガイドでは、MySQLマスタースレーブを設定する方法を学びました。 Ubuntu 18.04でのレプリケーション設定 。