How to Install CentOS 7 on VirtualBox in Windows 8 / Windows 10
目次:
MySQLレプリケーションは、1つのデータベースサーバーから1つ以上のサーバーにデータを自動的にコピーできるプロセスです。
MySQLは多くのレプリケーショントポロジをサポートします。マスター/スレーブトポロジは、1つのデータベースサーバーがマスターとして機能し、1つ以上のサーバーがスレーブとして機能する最も有名なトポロジの1つです。 デフォルトでは、レプリケーションは非同期であり、マスターはデータベースの変更を記述するイベントをバイナリログに送信し、スレーブは準備ができたらイベントを要求します。
このチュートリアルでは、CentOS 7で1つのマスターサーバーと1つのスレーブサーバーを使用してMySQLマスター/スレーブレプリケーションをセットアップする方法について説明します。MariaDBにも同じ手順が適用されます。
このタイプのレプリケーショントポロジは、リードスケーリング用のリードレプリカの展開、災害復旧用のライブデータベースバックアップ、および分析ジョブに最適です。
前提条件
この例では、プライベートネットワークを介して相互に通信できるCentOS 7を実行する2つのサーバーがあると想定しています。 ホスティングプロバイダーがプライベートIPアドレスを提供しない場合、パブリックIPアドレスを使用して、信頼できるソースからのポート3306でのみトラフィックを許可するようにファイアウォールを構成できます。
この例のサーバーには次のIPがあります。
Master IP: 192.168.121.59 Slave IP: 192.168.121.14
MySQLをインストールする
デフォルトのCentOS 7リポジトリにはMySQLパッケージが含まれていないため、公式のYumリポジトリからMySQLをインストールします。 問題を回避するために、両方のサーバーに同じMySQLバージョン5.7をインストールします。
マスターサーバーとスレーブサーバーの両方にMySQLをインストールします。
sudo yum localinstall
sudo yum install mysql-community-server
インストールが完了したら、MySQLサービスを開始し、起動時に自動的に開始できるようにします:
sudo systemctl enable mysqld
sudo systemctl start mysqld
MySQLサーバーを初めて起動すると、MySQLルートユーザーの一時パスワードが生成されます。 パスワードを見つけるには、次のgrepコマンドを使用します。
sudo grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation
コマンドを実行して、新しいルートパスワードを設定し、MySQLインスタンスのセキュリティを向上させます。
mysql_secure_installation
一時的なルートパスワードを入力し、すべての質問に
Y
(はい)と答えます。
マスターサーバーを構成する
まず、マスターMySQLサーバーを構成し、次の変更を行います。
- プライベートIPでリッスンするようにMySQLサーバーを設定します。一意のサーバーIDを設定します。バイナリロギングを有効にします。
これを行うには、MySQL構成ファイルを開き、次の行を
セクション:
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
ユーザーを作成し、ユーザーに
REPLICATION SLAVE
特権を付与する次のSQLクエリを実行します。
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
slave:/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 TO
MASTER_HOST='192.168.121.59',
MASTER_USER='replica',
MASTER_PASSWORD='strong_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1427;
正しいIPアドレス、ユーザー名、およびパスワードを使用していることを確認してください。 ログファイルの名前と位置は、マスターサーバーから取得した値と同じである必要があります。
完了したら、スレーブスレッドを開始します。
構成をテストする
この時点で、有効なマスター/スレーブ複製セットアップが必要です。
すべてが期待どおりに機能することを確認するために、マスターサーバーに新しいデータベースを作成します。
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)
結論
このチュートリアルでは、CentOS 7でMySQL Master / Slaveレプリケーションを作成することを示しました。
ご質問がある場合は、コメントをお気軽にお寄せください。
centos mysql mariadbmysqlマスターを構成する方法

MySQLレプリケーションは、1つのデータベースサーバーからのデータを1つ以上のサーバーに自動的にコピーできるようにするプロセスです。 このチュートリアルでは、Ubuntu 18.04で1つのマスターサーバーと1つのスレーブサーバーを使用したMySQLマスター/スレーブレプリケーションの基本的な例を取り上げます。