著者はhttps://www.brightfunds.org/funds/foss-nonprofits [無料およびオープンソース基金]を選択して、https://do.co/w4do-cta [Donationsのために書く]の一部として寄付を受け取りましたプログラム。
前書き
クラスタリングは、異なるサーバーに変更を配布することにより、データベースに高可用性を追加します。 インスタンスの1つに障害が発生した場合、他のインスタンスはすぐに利用可能になり、サービスを継続できます。
クラスターには、_active-passive_と_active-active_の2つの一般的な構成があります。 アクティブ/パッシブクラスタでは、すべての書き込みは単一のアクティブサーバーで行われ、アクティブサーバーに障害が発生した場合にのみ引き継ぐ準備ができている1つ以上のパッシブサーバーにコピーされます。 一部のアクティブ/パッシブクラスターでは、パッシブノードでの「+ SELECT +」操作も可能です。 アクティブ/アクティブクラスターでは、すべてのノードが読み取り/書き込みであり、1つに加えられた変更がすべてに複製されます。
MariaDBは、一般的なMySQL RDBMSシステムと完全に互換性のあるオープンソースのリレーショナルデータベースシステムです。 このhttps://mariadb.com/kb/en/library/documentation/[page]でMariaDBの公式ドキュメントを読むことができます。 Galeraは、同期レプリケーションを使用してマルチマスタークラスターをセットアップできるデータベースクラスタリングソリューションです。 Galeraは、異なるノードのデータの同期を自動的に維持しながら、クラスター内の任意のノードに読み取りおよび書き込みクエリを送信できるようにします。 Galeraの詳細については、公式のhttp://galeracluster.com/library/documentation/ [ドキュメントページ]をご覧ください。
このガイドでは、アクティブ/アクティブMariaDB Galeraクラスターを構成します。 デモンストレーションのために、クラスター内のノードとして機能する3つのCentOS 7ドロップレットを構成してテストします。 これは、構成可能な最小のクラスターです。
前提条件
これに従うには、次のほかにhttps://cloud.digitalocean.com/registrations/new[DigitalOceanアカウント]が必要です。
-
プライベートネットワーキングが有効になっている3つのCentOS 7ドロップレット。それぞれに「+ sudo +」特権を持つ非ルートユーザーとファイアウォールが有効になっています。
-
3つのDropletでプライベートネットワークを設定するには、https://www.digitalocean.com/docs/networking/private-networking/quickstart/ [Private Networking Quickstart]ガイドに従ってください。
-
`+ sudo +`特権を持つ非ルートユーザーのセットアップについては、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 [CentOS 7での初期サーバーセットアップ]を参照してください。 ]チュートリアル。 ファイアウォールを設定するには、https://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-centos-7-servers#configuring-aの「基本ファイアウォールの設定」ステップを確認してください。 -basic-firewall [新しいCentOS 7サーバーの追加の推奨手順]。
このチュートリアルの手順は、DigitalOcean Droplets向けに作成およびテストされていますが、それらの多くは、プライベートネットワークが有効になっている非DigitalOceanサーバーにも適用できるはずです。
手順1-MariaDBリポジトリをすべてのサーバーに追加する
このステップでは、関連するMariaDBパッケージリポジトリを3つのサーバーのそれぞれに追加して、このチュートリアルで使用する適切なバージョンのMariaDBをインストールできるようにします。 3つのサーバーすべてでリポジトリが更新されると、MariaDBをインストールする準備が整います。
MariaDBの注意点の1つは、MySQLのドロップイン置換として作成されたため、多くの構成ファイルと起動スクリプトでは、「+ mariadb 」ではなく「 mysql 」が表示されることです。 多くの場合、これらは交換可能です。 一貫性を保つために、このガイドではどちらかが機能する場合に「 mariadb +」を使用します。
このチュートリアルでは、https://mariadb.com/kb/en/library/mariadb-1040-release-notes/ [MariaDBバージョン10.4]を使用します。 このバージョンはデフォルトのCentOSリポジトリに含まれていないため、MariaDBプロジェクトで管理されている外部CentOSリポジトリを3つのサーバーすべてに追加することから始めます。
まず、テキストエディターでリポジトリファイルを作成して、MariaDBリポジトリキーを追加します。 このチュートリアルでは、 `+ vi +`を使用します。
sudo vi /etc/yum.repos.d/mariadb.repo
次に、 `+ i +`を押して挿入モードに入り、次の内容を追加して、ファイルに次の内容を追加します。
/etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org//centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
`+ esc `キーを押して通常モードに戻り、 `:wq `と入力してファイルを保存して終了します。 テキストエディタ「 vi 」とその前身である「 vim +」の詳細については、https://www.digitalocean.com/community/tutorials/installing-and-using-のチュートリアルをご覧ください。 the-vim-text-editor-on-a-cloud-server#modal-editing [クラウドサーバーでのVimテキストエディターのインストールと使用]。
リポジトリファイルを作成したら、次のコマンドで有効にします。
sudo yum makecache --disablerepo='*' --enablerepo='mariadb'
`+ makecache `コマンドはリポジトリメタデータをキャッシュして、パッケージマネージャーがMariaDBをインストールできるようにします。作成した ` mariadb `リポジトリファイルをコマンドのターゲットとする `-disablerepo `と `-enablerepo +`を使用します。
次の出力が表示されます。
OutputLoaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
mariadb | 2.9 kB 00:00:00
(1/3): mariadb/primary_db | 43 kB 00:00:00
(2/3): mariadb/other_db | 8.3 kB 00:00:00
(3/3): mariadb/filelists_db | 238 kB 00:00:00
Metadata Cache Created
最初のサーバーでリポジトリを有効にしたら、2番目と3番目のサーバーで繰り返します。
3つのサーバーすべてにパッケージリポジトリを正常に追加したので、次のセクションでMariaDBをインストールする準備ができました。
ステップ2-すべてのサーバーにMariaDBをインストールする
このステップでは、実際のMariaDBパッケージを3つのサーバーにインストールします。
バージョン `+ 10.1 `以降、MariaDBサーバーパッケージとMariaDB Galeraサーバーパッケージが結合されるため、 ` MariaDB-server +`をインストールすると、Galeraといくつかの依存関係が自動的にインストールされます。
sudo yum install MariaDB-server MariaDB-client
インストールを続行するかどうかの確認を求められます。 インストールを続行するには、「+ yes 」と入力します。 その後、MariaDBパッケージを認証するGPGキーを受け入れるように求められます。 もう一度「 yes +」と入力します。
インストールが完了したら、次を実行して `+ mariadb +`サービスを開始します。
sudo systemctl start mariadb
次を実行して、ブート時に `+ mariadb +`サービスを自動的に開始できるようにします。
sudo systemctl enable mariadb
MariaDBバージョン `+ 10.4 +`以降、* root * MariaDBユーザーにはデフォルトでパスワードがありません。 * root *ユーザーのパスワードを設定するには、MariaDBにログインすることから始めます。
sudo mysql -uroot
MariaDBシェルに入ったら、次のステートメントを実行してパスワードを変更し、「++」を目的のパスワードに置き換えます。
set password = password("");
パスワードが正しく設定されたことを示す次の出力が表示されます。
OutputQuery OK, 0 rows affected (0.001 sec)
次のコマンドを実行して、MariaDBシェルを終了します。
quit;
SQLの詳細を知りたい場合やクイックリフレッシャーが必要な場合は、https://www.digitalocean.com/community/tutorials/a-basic-mysql-tutorial [MySQLチュートリアル]をご覧ください。
これでクラスターの設定を開始するのに必要なすべてのピースが手に入りましたが、サーバーを同期してSecurity-Enhanced Linux(SELinux)を制御するために、後の手順で `+ rsync `と ` policycoreutils-python +`に依存するため、先に進む前にインストールされていることを確認してください:
sudo yum install rsync policycoreutils-python
これにより、 + rsync`と
+ policycoreutils-python`の最新バージョンが既に利用可能であることを確認するか、アップグレードまたはインストールするように求められます。
これらの手順を完了したら、他の2台のサーバーに対して手順を繰り返します。
3つのサーバーのそれぞれにMariaDBが正常にインストールされたので、次のセクションの構成手順に進むことができます。
手順3-最初のノードの構成
このステップでは、最初のGaleraノードを構成します。 クラスター内の各ノードは、ほぼ同一の構成にする必要があります。 このため、最初のマシンですべての構成を行い、それを他のノードにコピーします。
デフォルトでは、MariaDBは、「。etc / mysql / conf.d +」ディレクトリをチェックして、「。cnf +」で終わるファイルから追加の設定を取得するように設定されています。 すべてのクラスター固有のディレクティブを使用して、このディレクトリにファイルを作成します。
sudo vi /etc/my.cnf.d/galera.cnf
次の構成をファイルに追加します。 この構成では、さまざまなクラスターオプション、現在のサーバーとクラスター内の他のサーバーの詳細、およびレプリケーション関連の設定を指定します。 構成内のIPアドレスは、それぞれのサーバーのプライベートアドレスであることに注意してください。強調表示された行を適切なIPアドレスに置き換えます。
/etc/my.cnf.d/galera.cnf
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="test_cluster"
wsrep_cluster_address="gcomm://,,"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address=""
wsrep_node_name=""
-
*最初のセクション*は、クラスターが正しく機能するようにするMariaDB / MySQL設定を変更または再アサートします。 たとえば、GaleraはMyISAMまたは同様の非トランザクションストレージエンジンでは動作しません。また、「+ mysqld 」を「 localhost +」のIPアドレスにバインドしないでください。
-
*「Galeraプロバイダーの構成」セクション*は、WriteSetレプリケーションAPIを提供するMariaDBコンポーネントを構成します。 Galeraは_wsrep_(WriteSet Replication)プロバイダーであるため、これはGaleraを意味します。 一般的なパラメーターを指定して、初期レプリケーション環境を構成します。 これはカスタマイズを必要としませんが、http://www.codership.com/wiki/doku.php?id = galera_parameters [Galera設定オプションはこちら]の詳細をご覧ください。
-
*「Galera Cluster Configuration」セクション*はクラスターを定義し、IPアドレスまたは解決可能なドメイン名でクラスターメンバーを識別し、クラスターの名前を作成して、メンバーが正しいグループに参加するようにします。 `+ wsrep_cluster_name `を ` test_cluster `よりも意味のあるものに変更するか、そのままにすることができますが、3つのサーバーのプライベートIPアドレスで ` wsrep_cluster_address +`を更新する必要があります。
-
*「Galera Synchronization Configuration」セクション*では、クラスターがメンバー間でデータを通信および同期する方法を定義しています。 これは、ノードがオンラインになったときに発生する状態転送にのみ使用されます。 初期セットアップでは、 `+ rsync +`を使用しています。これは、一般に利用可能であり、今必要なことを行うためです。
-
*「Galera Node Configuration」セクション*では、現在のサーバーのIPアドレスと名前を明確にします。 これは、ログの問題を診断したり、複数の方法で各サーバーを参照したりするときに役立ちます。 `+ wsrep_node_address +`は現在使用しているマシンのアドレスと一致する必要がありますが、ログファイルでノードを識別するのに役立つ任意の名前を選択できます。
クラスター構成ファイルに満足したら、内容をクリップボードにコピーし、ファイルを保存して閉じます。
最初のノードを正常に構成したので、次のセクションで残りのノードの構成に進むことができます。
手順4-残りのノードの構成
この手順では、残りの2つのノードを構成します。 2番目のノードで、構成ファイルを開きます。
sudo vi /etc/mysql/my.cnf.d/galera.cnf
最初のノードからコピーした設定を貼り付け、「+ Galera Node Configuration +」を更新して、設定している特定のノードのIPアドレスまたは解決可能なドメイン名を使用します。 最後に、名前を更新します。ログファイル内のノードを識別するのに役立つ任意の名前に設定できます。
/etc/mysql/my.cnf.d/galera.cnf
. . .
# Galera Node Configuration
wsrep_node_address=""
wsrep_node_name=""
. . .
ファイルを保存して終了します。
これらの手順を完了したら、3番目のノードで繰り返します。
すべてのノードでGaleraを構成すると、クラスターを起動する準備がほぼ整います。 ただし、その前に、ファイアウォールで適切なポートが開いていること、およびGalera用のSELinuxポリシーが作成されていることを確認してください。
ステップ5-すべてのサーバーでファイアウォールを開く
この手順では、ノード間通信に必要なポートが開くようにファイアウォールを構成します。
すべてのサーバーで、次のコマンドを実行して、「前提条件」セクションで設定したファイアウォールのステータスを確認します。
sudo firewall-cmd --list-all
この場合、SSH、DHCP、HTTP、およびHTTPSトラフィックのみが許可されます。
Outputpublic
target: default
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
ここでクラスターを開始しようとすると、ファイアウォールがノード間の接続をブロックするため、クラスターが失敗します。 この問題を解決するには、MariaDBとGaleraのトラフィックを許可するルールを追加します。
Galeraは4つのポートを使用できます。
-
+ 3306 +
`+ mysqldump +`メソッドを使用するMariaDBクライアント接続および状態スナップショット転送用。 -
+ 4567 +
Galera Clusterレプリケーショントラフィック用。 マルチキャストレプリケーションは、このポートでUDPトランスポートとTCPの両方を使用します。 -
+ 4568 +
Incremental State Transfers、またはISTの場合、クラスター内の他のノードが欠落状態を受信するプロセス。 -
`+ 4444 +`他のすべての_State Snapshot Transfers_、またはSSTの場合、ジョイナーノードがドナーノードからその状態とデータを取得するメカニズム。
この例では、セットアップ中に4つのポートすべてを開きます。 レプリケーションが機能していることを確認したら、実際に使用していないポートをすべて閉じて、クラスター内のサーバーだけにトラフィックを制限します。
次のコマンドでポートを開きます。
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4567/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4568/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4444/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4567/udp
ここで「-zone = public」と「-add-port = 」を使用して、「 firewall-cmd」はこれらのポートを公開トラフィックに開放します。 `+-permanent +`は、これらのルールが持続することを保証します。
次に、以下のコマンドを実行して、各サーバーを「+ public +」ゾーンに追加し、強調表示されたテキストをノードのそれぞれのプライベートIPアドレスに置き換えます。
sudo firewall-cmd --permanent --zone=public --add-source=/32
sudo firewall-cmd --permanent --zone=public --add-source=/32
sudo firewall-cmd --permanent --zone=public --add-source=/32
ファイアウォールをリロードして、変更を適用します。
sudo firewall-cmd --reload
最初のノードでファイアウォールを構成したら、2番目と3番目のノードで同じファイアウォール設定を作成します。
ファイアウォールが正常に構成されたので、次のステップでSELinuxポリシーを作成する準備ができました。
ステップ6-SELinuxポリシーの作成
このセクションでは、クラスター内のすべてのノードが相互に通信してクラスター操作を実行できるようにするSELinuxポリシーを作成します。
SELinuxは、アクセス制御および必須アクセス制御ポリシーのサポートにより、オペレーティングシステムのセキュリティを向上させるLinuxカーネルモジュールです。 CentOS 7ではデフォルトで有効になっており、MariaDBデーモンが多くのアクティビティを実行することを制限しています。
ポリシーを作成するには、MySQLに対してpermissiveに設定されたSELinuxモードでクラスターでさまざまなアクティビティを実行します。 次に、ログに記録されたイベントからポリシーを作成し、ポリシーが正常にインストールされたら、最終的にSELinuxモードを強制に設定します。
最初に、3つのサーバーすべてで次のコマンドを実行して、関連するポートへのアクセスを許可します。
sudo semanage port -a -t mysqld_port_t -p tcp 4567
sudo semanage port -a -t mysqld_port_t -p udp 4567
sudo semanage port -a -t mysqld_port_t -p tcp 4568
sudo semanage port -a -t mysqld_port_t -p tcp 4444
これらのコマンドでは、指定されたポートを追加し、データベースサーバーを無視するために、SELinux管理ツールの `+ semanage `と ` -a +`フラグを使用しています。
次に、3つすべてのサーバーで次のコマンドを実行します。これにより、MySQL SELinuxドメインが一時的に許容モードに設定されます。
sudo semanage permissive -a mysqld_t
このコマンドの完了には1分かかる場合があり、出力は表示されません。
次に、すべてのノードでデータベースサーバーを停止して、共有SELinuxポリシーを使用してデータベースクラスターをブートストラップできるようにします。 これを行うには、3つのノードすべてで次のコマンドを実行します。
sudo systemctl stop mariadb
次に、クラスターをブートストラップして、SELinuxポリシーに追加されるノード間通信イベントを生成します。 最初のノードで、次を実行してクラスターをブートストラップします。
sudo galera_new_cluster
最初のノードで次を実行して、SSTイベントを記録する特定の目的のデータベースとテーブルを作成します。
mysql -u root -p -e 'CREATE DATABASE selinux;
CREATE TABLE selinux.selinux_policy (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id));
INSERT INTO selinux.selinux_policy VALUES ();'
次に、2番目のノードでサーバーを起動します。
sudo systemctl start mariadb
次に、3番目のノードで同じことを行います。
sudo systemctl start mariadb
前のコマンドの出力は表示されません。 ISTイベントを生成するには、3つのサーバーすべてで次を実行します。
mysql -u root -p -e 'INSERT INTO selinux.selinux_policy VALUES ();'
3つのサーバーすべてで次のコマンドを実行して、SELinuxポリシーを作成して有効にします。
sudo grep mysql /var/log/audit/audit.log | sudo audit2allow -M Galera
この最初のコマンドは、生成されたイベントを `+ audit.log `ファイルで検索し、それらを ` audit2allow `ツールによって生成された ` Galera.pp +`というモジュールにパイプします。 これにより、次のような出力が得られます。
Output******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i Galera.pp
次に、出力の指示に従い、次のコマンドを使用して生成されたモジュールをインストールします。
sudo semodule -i Galera.pp
ポリシーがアクティブになったので、MariaDBサーバーの許容モードを無効にします。
sudo semanage permissive -d mysqld_t
SELinuxポリシーを正常に作成して有効にしたので、次のセクションでクラスターを開始する準備ができました。
ステップ7-クラスターの開始
この手順では、MariaDBクラスターを起動します。 開始するには、実行中のMariaDBサービスを停止して、クラスターをオンラインにできるようにする必要があります。
3つのサーバーすべてでMariaDBを停止する
MariaDBサービスを停止するときは、サーバーで特定の順序でこのアクションを実行することが重要です。 このシャットダウンシーケンスにより、最初のノードが起動時にクラスターを安全にブートストラップできるようになります。
最初に、3番目のノードで次のコマンドを実行します。
sudo systemctl stop mariadb
次に、2番目のノードでサービスを停止します。
sudo systemctl stop mariadb
最後に、最初のノードでサービスを停止します。
sudo systemctl stop mariadb
`+ systemctl +`はすべてのサービス管理コマンドの結果を表示するわけではないため、成功するためには、各サーバーで次のコマンドを使用します。
sudo systemctl status mariadb
最後の行は次のようになります。
Output. . .
Apr 26 03:34:23 galera-node-01 systemd[1]: Stopped MariaDB 10.4.4 database server.
すべてのサーバーで「+ mariadb +」をシャットダウンしたら、準備が整います。
最初のノードを起動する
最初のノードを起動するには、特別な起動スクリプトを使用する必要があります。 クラスターの設定方法では、オンラインになる各ノードは、 `+ galera.cnf `ファイルで指定された少なくとも1つの他のノードに接続して、初期状態を取得しようとします。 systemdが `-wsrep-new-cluster `パラメーターを渡すことを許可する ` galera_new_cluster `スクリプトを使用しないと、接続する最初のノードで実行されているノードがないため、通常の ` systemctl start mariadb +`は失敗します。
sudo galera_new_cluster
このコマンドは、実行が成功しても出力を表示しません。 このスクリプトが成功すると、ノードはクラスターの一部として登録され、次のコマンドで表示できます。
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
クラスター内にノードが1つあることを示す次の出力が表示されます。
Output+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 1 |
+--------------------+-------+
残りのノードでは、「+ mariadb +」を通常どおり起動できます。 オンラインのクラスターリストのメンバーを検索するため、メンバーが見つかるとクラスターに参加します。
2番目のノードを起動する
これで、2番目のノードを起動できます。 `+ mariadb`を開始します。
sudo systemctl start mariadb
正常に実行されると、出力は表示されません。 各ノードがオンラインになると、クラスターサイズが増加します。
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
2番目のノードがクラスターに参加し、合計2つのノードがあることを示す次の出力が表示されます。
Output+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 2 |
+--------------------+-------+
3番目のノードを起動する
ここで、3番目のノードを起動します。 `+ mariadb`を開始します。
sudo systemctl start mariadb
次のコマンドを実行して、クラスターサイズを見つけます。
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
次の出力が表示されます。これは、3番目のノードがクラスターに参加し、クラスター内のノードの総数が3であることを示しています。
Output+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
この時点で、クラスター全体がオンラインになり、正常に通信します。 次に、次のセクションで複製をテストすることにより、作業セットアップを確認できます。
ステップ8-レプリケーションのテスト
これまでの手順を実行して、クラスターが任意のノードから他のノードへの複製(アクティブ-アクティブ複製)を実行できるようにしました。 次の手順に従って、レプリケーションが期待どおりに機能しているかどうかをテストして確認します。
最初のノードへの書き込み
最初のノードでデータベースを変更することから始めます。 次のコマンドは、「+ playground 」というデータベースと、このデータベース内に「 equipment +」というテーブルを作成します。
mysql -u root -p -e 'CREATE DATABASE playground;
CREATE TABLE playground.equipment ( id INT NOT NULL AUTO_INCREMENT, type VARCHAR(50), quant INT, color VARCHAR(25), PRIMARY KEY(id));
INSERT INTO playground.equipment (type, quant, color) VALUES ("slide", 2, "blue");'
前のコマンドで、 + CREATE DATABASE`ステートメントは
+ playground + `という名前のデータベースを作成します。 「+ CREATE 」ステートメントは、「 id 」と呼ばれる自動インクリメント識別子列と他の列を持つ「 playground 」データベース内に「 equipment」という名前のテーブルを作成します。 「+ type 」列、「 quant 」列、および「 color 」列は、それぞれ機器のタイプ、数量、および色を格納するために定義されています。 「 INSERT 」ステートメントは、タイプ「 slide 」、数量「+2」、および色「+ blue +」のエントリを挿入します。
これで、テーブルに1つの値ができました。
2番目のノードでの読み取りと書き込み
次に、2番目のノードを見て、複製が機能していることを確認します。
mysql -u root -p -e 'SELECT * FROM playground.equipment;'
レプリケーションが機能している場合、最初のノードで入力したデータは2番目のノードでここに表示されます。
Output+----+-------+-------+-------+
| id | type | quant | color |
+----+-------+-------+-------+
| 1 | slide | 2 | blue |
+----+-------+-------+-------+
この同じノードから、クラスターにデータを書き込むことができます。
mysql -u root -p -e 'INSERT INTO playground.equipment (type, quant, color) VALUES ("swing", 10, "yellow");'
3番目のノードでの読み取りと書き込み
3番目のノードから、テーブルを再度クエリすることにより、このデータをすべて読み取ることができます。
mysql -u root -p -e 'SELECT * FROM playground.equipment;'
2行を示す次の出力が表示されます。
Output +----+-------+-------+--------+
| id | type | quant | color |
+----+-------+-------+--------+
| 1 | slide | 2 | blue |
| 2 | swing | 10 | yellow |
+----+-------+-------+--------+
繰り返しますが、このノードから別の値を追加できます。
mysql -u root -p -e 'INSERT INTO playground.equipment (type, quant, color) VALUES ("seesaw", 3, "green");'
最初のノードで読む
最初のノードに戻って、どこでもデータが利用できることを確認できます。
mysql -u root -p -e 'SELECT * FROM playground.equipment;'
次の出力が表示されます。これは、最初のノードで行が使用可能であることを示しています。
Output +----+--------+-------+--------+
| id | type | quant | color |
+----+--------+-------+--------+
| 1 | slide | 2 | blue |
| 2 | swing | 10 | yellow |
| 3 | seesaw | 3 | green |
+----+--------+-------+--------+
すべてのノードに書き込むことができ、複製が適切に実行されていることを確認しました。
結論
この時点で、動作中の3ノードGaleraテストクラスターが構成されています。 実稼働環境でGaleraクラスターを使用する予定がある場合は、5つ以上のノードから始めることをお勧めします。
本番環境で使用する前に、* XtraBackup *などのhttp://galeracluster.com/documentation-webpages/sst.html [その他の状態スナップショット転送(SST)エージェント]の一部をご覧ください。アクティブノードへの大きな中断なしに、非常に迅速に新しいノードをセットアップします。 これは実際のレプリケーションには影響しませんが、ノードが初期化される際の懸念事項です。
SQLデータベースについて引き続き学習したい場合は、https://www.digitalocean.com/community/tutorials/how-to-manage-sql-database-cheat-sheet [SQLデータベースの管理方法]をご覧ください。 ] 論文。