一部のIT担当者が「データベースレプリケーション」というフレーズを聞いた場合でも 「彼らはしばしば、ハードウェア障害やデータ破損の場合のデータ損失を回避するために、同じ情報の複数のコピーを持つ必要性と関連付けます。これはある程度当てはまりますが、データベースレプリケーションには、データベースとデータの可用性をバックアップするという一般的な概念よりもはるかに多くのことがあります。
マスタースレーブセットアップでのデータベースレプリケーションの他の利点の中で、私たちは言及することができます:
- バックアップは、マスターの書き込み操作に影響を与えることなく(および影響を受けることなく)スレーブサーバーで実行できます。
- リソースを大量に消費する操作(データ分析など)は、マスターのパフォーマンスに影響を与えることなく、スレーブで実行できます。
この記事では、 MariaDB 10.1でマスター/スレーブレプリケーションを設定する方法について説明します。 。従来のレプリケーションとは対照的に、MariaDBはグローバルトランザクションIDの概念を導入しました ( GTID ) v10.0 、これにより、スレーブを変更して、別のマスターに接続したり、別のマスターから簡単に複製したりできます。さらに、スレーブの状態はクラッシュセーフな方法で記録されます(状態の更新は、データの更新と同じトランザクションで実行されます)。
MySQLをお探しの場合 CentOS / RHEL 6でのレプリケーション 、このガイドに従ってくださいCentOS / RHEL 6でのMySQL(マスタースレーブ)レプリケーションのセットアップ
CentOS /RHEL7およびDebian8/9へのMariaDB10.1のインストール
私たちのテスト環境は、次のマシンで構成されています(どちらも CentOS 7 ):
マスター:192.168.0.18スレーブ:192.168.0.19
最新バージョンのMariaDBをインストールするには、サーバーにリポジトリを追加する必要があります。古いバージョンのMariaDB、たとえば5.5を使用している場合は、以下の記事を使用して最新の10.1バージョンにアップグレードすることを検討してください。
- MariaDB5.5をMariaDB10.1にアップグレードする
CentOS/RHELの場合
MariaDB.repo
という名前のファイルを作成します /etc/yum.repos.d内 両方のマスターに次の内容が含まれています およびスレーブ システム:
#MariaDB10.1CentOSリポジトリリスト-作成済み2016-01-2314:16UTC#http://mariadb.org/mariadb/repositories/ [mariadb] name =MariaDBbaseurl =http://yum.mariadb.org/ 10.1 / centos7-amd64gpgkey =https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1
ファイルを保存し、yumを使用して両方のサーバーにMariaDBをインストールします:
#yum update &&yum install MariaDB-server MariaDB-client
Debian/Ubuntuの場合
パッケージとMariaDBリポジトリを認証するためのキーを追加します:
#apt-get install software-properties-common#apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db#add-apt-repository'deb [arch =amd64、i386] http:/ /mirror.edatel.net.co/mariadb/repo/10.1/ debian jessie メイン'
apt-getを使用してインストールします コマンド:
#apt-get update#apt-get install mariadb-server
MariaDBをインストールしたら、mysql_secure_installation
を実行します マスターとスレーブの両方で手順を実行し、マスターマシンにサンプルテストデータベースを設定しましょう。
マスターでのサンプルMySQLデータベースのセットアップ
ここで、マスターサーバーにEmployees
を設定します。 https://github.com/datacharmer/test_dbのデータベース ( 4のデータセットを提供します 2つの簡単なステップで100万件のレコードが6つのテーブルに分散します:
リポジトリのクローンを作成し、それを使用してサンプルデータベースをMariaDBインストールにインポートします。
#git clone https://github.com/datacharmer/test_db# cd test_db#mysqlマスターでのMySQLサーバーの構成
マスターを構成するには、次の手順に従います。
ステップ1:
/etc/my.cnf
を編集します ファイル。[mysqld]
の下 セクションに、次の4行を追加します。log-binserver_id =1replicate-do-db =employeesbind-address =192.168.0.18MariaDBを再起動します:
#systemctl restart mariadbステップ2: rootとしてMariaDBサーバーにログオンし、ユーザースレーブを作成して、必要な権限を割り当てます。
MariaDB [(なし)]> CREATE USER'slave' @'localhost' IDENTIFIED BY'SlavePassword'; MariaDB [(none)]> GRANT REPLICATION SLAVEON*。*GRANTOPTIONを使用して'SlavePassword'で識別されるスレーブに;MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(なし)]> 読み取りロック付きのフラッシュテーブル; MariaDB [(none)]> マスターステータスを表示; 最後 コマンド(マスターステータスを表示 )は、バイナリログの現在の位置を返します(スレーブが複製を開始するポイントを正確に示す正確な座標:
ステップ3: MariaDBプロンプトを終了します(
exit;
を使用) )そして、次のコマンドを使用して、employeesデータベースのスナップショットを作成します。 Enterを押したとき 、mysql_secure_installation
を使用して以前に設定したrootのパスワードを入力するように求められます :#mysqldump -u root -p employees> employees-dump.sqlダンプが完了したら、データベースサーバーに再度接続してテーブルのロックを解除し、終了します。
MariaDB [(なし)]> テーブルのロックを解除;MariaDB [(none)]> 終了; ステップ4: ダンプをスレーブにコピーします:
#scp employees-dump.sql [email protected]:/ root /ステップ5:
mysql_upgrade
を実行します システムテーブルをアップグレードする手順(MariaDBルートパスワードの入力を求められます):#mysql_upgrade -u root -pステップ6: ファイアウォールを通過するデータベースサービスを許可します:
#firewall-cmd --add-service =mysql#firewall-cmd --add-service =mysql --permanent#firewall-cmd --reloadそれでは、スレーブを構成しましょう。
スレーブでのMySQLサーバーの構成
スレーブを構成するには、次の手順に従います。
ステップ1: レプリケーションタスクを実行するためのアカウントを作成します。次のコマンドでローカルMariaDBサーバーに接続します:
#mysql -u root –p以前に設定したパスワードを入力します。
ステップ2: データベースサーバーに接続したら、ユーザーと空のデータベースを作成し、権限を付与します。
MariaDB [(なし)]> CREATEDATABASE従業員;MariaDB [(なし)]> 従業員にすべての特権を付与します。*付与オプションを使用して'slave'@'localhost'に; MariaDB [(none)]> フラッシュ特権; ステップ3: MariaDBプロンプトを終了し、マスターサーバーで作成されたダンプをロードします。
#mysql -u root -p employeesステップ4:
/etc/my.cnf
を編集します サーバーを割り当てるファイルID[mysqld]
の下のスレーブに セクション。 1とは異なる整数である必要があることに注意してください 、 1を使用したため マスターで:server_id =2replicate-do-db =employeesデータベースサーバーを再起動します:
#systemctl restart mariadbステップ5:
mysql_upgrade
を実行します システムテーブルをアップグレードする手順(MariaDBルートパスワードの入力を求められます):#mysql_upgrade -u root -pステップ6: ダンプがスレーブにインポートされたら、複製を開始するためのほんの数ステップです。データベースにログオンし、MariaDBプロンプトで次のコマンドを実行します。
MASTER_LOG_FILE
に特に注意してください およびMASTER_LOG_POS
変数。SHOWMASTERSTATUSによって返される値と一致する必要があります 上記の「マスターの構成」のステップ2で。MariaDB [(なし)]> MASTERをMASTER_HOST='192.168.0.18'、MASTER_USER ='slave'、MASTER_PASSWORD ='SlavePassword'、MASTER_PORT =3306、MASTER_LOG_FILE ='master-bin.000001'、MASTER_LOG_POS =314、MASTER_CONNECT_RETRY =10、MASTER_USE_GTID =current_pos;<に変更します。 / pre>ステップ7: スレーブを起動し、MariaDBプロンプトを終了せずにそのステータスを確認します:
MariaDB [(なし)]> START SLAVE; MariaDB [(none)]> スレーブステータスを表示\G;今これが必要なわけではありませんが、次の方法でスレーブを停止できることに注意してください:
MariaDB [(なし)]> 奴隷制をやめなさい;
SHOW SLAVE STATUS\G;
の場合 コマンドはエラーを返します。これらのエラーを使用してトラブルシューティングを行い、START SLAVE;
を実行します。 もう一度テストします。MySQL/MariaDBデータベースレプリケーションのテスト
従業員にレコードを追加しましょう マスターサーバーのテーブル:
MariaDB [(なし)]> INSERT INTO employees(emp_no、birth_date、first_name、last_name、gender、hire_date)VALUES(500000、 '1983-07-12'、'Dave'、'Null'、'M'、 '2014-12-12');次に、この変更がスレーブで複製されたことを確認します。
MariaDB [(なし)]> USE従業員;MariaDB [(なし)]> SELECT*FROM従業員WHEREemp_no=500000; ご覧のとおり、レプリケーションはマスターからスレーブへと正しく機能しています。
概要
この記事では、最新バージョンのMariaDBを CentOS / RHEL 7にインストールする方法について説明しました。 およびDebian8/9で、GTIDを使用してマスター/スレーブレプリケーションを設定する方法について説明しました。詳細については、MariaDBレプリケーションガイドを参照してください。質問やコメントがある場合は、以下のフォームを使用して遠慮なくお問い合わせください。