[Donationsのために書く]の一部として寄付を受け取りましたプログラム。前書きクラスタリングは、異なるサーバーに変更を配布することにより、データベースに高可用性を追加します。インスタンスの1つに障害が発生した場合、他のインスタンスはすぐに利用可能になり、サービスを継続できます。クラスターには、_active-passive_と_active-active_の2つの一般的な構成があります。アクティブ/パッシブクラスタでは、すべての書き込みは単一のアクティブサーバーで行われ、アクティブサーバーに障害が発生した場合にのみ引き継ぐ準備ができている1つ以上のパッシブサーバーにコピーされます。アクティブ/アクティブクラスターでは、すべてのノードが読み取り/書き込みであり、1つに加えられた変更がすべてに複製されます。RDBMSシステムと完全に互換性のあるオープンソースのリレーショナルデータベースシステムです。このhttps://mariadb.com/kb/en/library/documentation/[page]でMariaDBの公式ドキュメントを読むことができます。Galeraは、同期レプリケーションを使用してマルチマスタークラスターをセットアップできるデータベースクラスタリングソリューションです。Galeraは、異なるノードのデータの同期を自動的に維持しながら、クラスター内の任意のノードに読み取りおよび書き込みクエリを送信できるようにします。[ドキュメントページ]をご覧ください。Galeraクラスターを構成します。18.04ドロップレットを構成してテストします。これは、構成可能な最小のクラスターです。前提条件これに従うには、次のほかにhttps://cloud.digitalocean.com/registrations/new[DigitalOceanアカウント]が必要です。18.04ドロップレット。+」特権を持つ非ルートユーザーです。Quickstart]ガイドに従ってください。18.04]チュートリアル。Droplets向けに作成およびテストされていますが、それらの多くは、プライベートネットワークが有効になっている非DigitalOceanサーバーにも適用できるはずです。手順1-MariaDBリポジトリをすべてのサーバーに追加するこのステップでは、関連するMariaDBパッケージリポジトリを3つのサーバーのそれぞれに追加して、このチュートリアルで使用する適切なバージョンのMariaDBをインストールできるようにします。3つのサーバーすべてでリポジトリが更新されると、MariaDBをインストールする準備が整います。」が表示されることです。[MariaDBバージョン10.4]を使用します。このバージョンはデフォルトのUbuntuリポジトリに含まれていないため、MariaDBプロジェクトで管理されている外部Ubuntuリポジトリを3つのサーバーすべてに追加することから始めます。+`コマンドで追加します。これは、APTパッケージマネージャーがパッケージが本物であることを確認するために使用します。0xF1656F24C74CD1D8データベースに信頼できるキーを取得したら、次のコマンドでリポジトリを追加できます。update最初のサーバーでこの手順を完了したら、2番目と3番目のサーバーについて繰り返します。3つのサーバーすべてにパッケージリポジトリを正常に追加したので、次のセクションでMariaDBをインストールする準備ができました。ステップ2-すべてのサーバーにMariaDBをインストールするこのステップでは、実際のMariaDBパッケージを3つのサーバーにインストールします。+`をインストールすると、Galeraといくつかの依存関係が自動的にインストールされます。mariadb-serverインストールを続行するかどうかの確認を求められます。MariaDBユーザーにはデフォルトでパスワードがありません。*ユーザーのパスワードを設定するには、MariaDBにログインすることから始めます。-urootMariaDBシェルに入ったら、次のステートメントを実行してパスワードを変更します。password("");パスワードが正しく設定されたことを示す次の出力が表示されます。sec)次のコマンドを実行して、MariaDBシェルを終了します。[MySQLチュートリアル]をご覧ください。+」に依存するため、インストールされていることを確認してください。+`がすでに利用可能であることを確認するか、アップグレードまたはインストールするように求められます。MariaDBをインストールし、最初のサーバーにルートパスワードを設定したら、他の2つのサーバーに対してこれらの手順を繰り返します。3つのサーバーのそれぞれにMariaDBが正常にインストールされたので、次のセクションの構成手順に進むことができます。手順3-最初のノードの構成この手順では、最初のノードを構成します。クラスター内の各ノードは、ほぼ同一の構成にする必要があります。このため、最初のマシンですべての構成を行い、それを他のノードにコピーします。デフォルトでは、MariaDBは、「。+」ディレクトリをチェックして、「。+」で終わるファイルから追加の設定を取得するように設定されています。すべてのクラスター固有のディレクティブを使用して、このディレクトリにファイルを作成します。/etc/mysql/conf.d/galera.cnf次の構成をファイルに追加します。この構成では、さまざまなクラスターオプション、現在のサーバーとクラスター内の他のサーバーの詳細、およびレプリケーション関連の設定を指定します。構成内のIPアドレスは、それぞれのサーバーのプライベートアドレスであることに注意してください。強調表示された行を適切なIPアドレスに置き換えます。MySQL設定を変更または再アサートします。GaleraはMyISAMまたは同様の非トランザクションストレージエンジンでは動作しません。+」のIPアドレスにバインドしないでください。[システム構成ページ]をご覧ください。*「Galeraプロバイダーの構成」セクション*は、WriteSetレプリケーションAPIを提供するMariaDBコンポーネントを構成します。Replication)プロバイダーであるため、これはGaleraを意味します。一般的なパラメーターを指定して、初期レプリケーション環境を構成します。[Galera設定オプション]の詳細をご覧ください。Configuration」セクション*はクラスターを定義し、IPアドレスまたは解決可能なドメイン名でクラスターメンバーを識別し、クラスターの名前を作成して、メンバーが正しいグループに参加するようにします。+`を更新する必要があります。Configuration」セクション*では、クラスターがメンバー間でデータを通信および同期する方法を定義しています。これは、ノードがオンラインになったときに発生する状態転送にのみ使用されます。+`を使用しています。これは、一般に利用可能であり、今必要なことを行うためです。Configuration」セクション*では、現在のサーバーのIPアドレスと名前を明確にします。これは、ログの問題を診断したり、複数の方法で各サーバーを参照したりするときに役立ちます。+`は現在使用しているマシンのアドレスと一致する必要がありますが、ログファイルでノードを識別するのに役立つ任意の名前を選択できます。クラスター構成ファイルに満足したら、内容をクリップボードにコピーし、ファイルを保存して閉じます。+`を押すことでこれを行うことができます。最初のノードを正常に構成したので、次のセクションで残りのノードの構成に進むことができます。手順4-残りのノードの構成この手順では、残りの2つのノードを構成します。2番目のノードで、構成ファイルを開きます。+」を更新して、設定している特定のノードのIPアドレスまたは解決可能なドメイン名を使用します。最後に、名前を更新します。ログファイル内のノードを識別するのに役立つ任意の名前に設定できます。.ファイルを保存して終了します。これらの手順を完了したら、3番目のノードで繰り返します。クラスタを起動する準備はほぼ整いましたが、実行する前に、ファイアウォールで適切なポートが開いていることを確認してください。ステップ5-すべてのサーバーでファイアウォールを開くこの手順では、ノード間通信に必要なポートが開くようにファイアウォールを構成します。すべてのサーバーで、次を実行してファイアウォールのステータスを確認します。(v6)この場合、SSHトラフィックのみが許可されるため、MySQLおよびGaleraトラフィックのルールを追加する必要があります。クラスターを起動しようとした場合、ファイアウォールルールが原因で失敗します。Galeraは4つのポートを使用できます。+`メソッドを使用するMySQLクライアント接続および状態スナップショット転送用。Clusterレプリケーショントラフィック用。マルチキャストレプリケーションは、このポートでUDPトランスポートとTCPの両方を使用します。+`他のすべての状態スナップショット転送。この例では、セットアップ中に4つのポートすべてを開きます。レプリケーションが機能していることを確認したら、実際に使用していないポートをすべて閉じて、クラスター内のサーバーだけにトラフィックを制限します。次のコマンドでポートを開きます。4567/udp最初のノードでファイアウォールを構成したら、2番目と3番目のノードで同じファイアウォール設定を作成します。ファイアウォールが正常に構成されたので、次のステップでクラスターを開始する準備ができました。ステップ6-クラスターの開始この手順では、MariaDBクラスターを起動します。開始するには、実行中のMariaDBサービスを停止して、クラスターをオンラインにできるようにする必要があります。3つのサーバーすべてでMariaDBを停止する3つのサーバーすべてで次のコマンドを使用してMariaDBを停止し、クラスター内でそれらを再起動できるようにします。+`はすべてのサービス管理コマンドの結果を表示するわけではないため、成功するためには次のコマンドを使用します。mysql最後の行が次のようになっている場合、コマンドは成功しています。+」をシャットダウンしたら、準備が整います。最初のノードを起動する最初のノードを起動するには、特別な起動スクリプトを使用する必要があります。`ファイルで指定された少なくとも1つの他のノードに接続して、初期状態を取得しようとします。galera_new_clusterこのコマンドは、実行が成功しても出力を表示しません。このスクリプトが成功すると、ノードはクラスターの一部として登録され、次のコマンドで表示できます。'wsrep_cluster_size'"クラスター内にノードが1つあることを示す次の出力が表示されます。mysql」を通常どおり起動できます。オンラインのクラスターリストのメンバーを検索するため、メンバーが見つかるとクラスターに参加します。2番目のノードを起動するこれで、2番目のノードを起動できます。mysql正常に実行されると、出力は表示されません。各ノードがオンラインになると、クラスターサイズが増加します。'wsrep_cluster_size'"2番目のノードがクラスターに参加し、合計2つのノードがあることを示す次の出力が表示されます。|+--------------------+-------+3番目のノードを起動するここで、3番目のノードを起動します。mysql次のコマンドを実行して、クラスターサイズを見つけます。'wsrep_cluster_size'"次の出力が表示されます。これは、3番目のノードがクラスターに参加し、クラスター内のノードの総数が3であることを示しています。|+--------------------+-------+この時点で、クラスター全体がオンラインになり、正常に通信します。次に、次のセクションで複製をテストすることにより、作業セットアップを確認できます。手順7-レプリケーションのテストこれまでの手順を実行して、クラスターが任意のノードから他のノードへの複製(アクティブ-アクティブ複製)を実行できるようにしました。以下の手順に従って、レプリケーションが期待どおりに機能しているかどうかをテストして確認します。最初のノードへの書き込み最初のノードでデータベースを変更することから始めます。+」というテーブルを作成します。`という名前のデータベースを作成します。equipment」という名前のテーブルを作成します。」列は、それぞれ機器のタイプ、数量、および色を格納するために定義されています。+」のエントリを挿入します。これで、テーブルに1つの値ができました。2番目のノードでの読み取りと書き込み次に、2番目のノードを見て、複製が機能していることを確認します。playground.equipment;'レプリケーションが機能している場合、最初のノードで入力したデータは2番目のノードでここに表示されます。|+----+-------+-------+-------+この同じノードから、クラスターにデータを書き込むことができます。"yellow");'3番目のノードでの読み取りと書き込み3番目のノードから、テーブルを再度クエリすることにより、このデータをすべて読み取ることができます。playground.equipment;'2行を示す次の出力が表示されます。+----+-------+-------+--------+繰り返しますが、このノードから別の値を追加できます。"green");'最初のノードで読む:最初のノードに戻って、どこでもデータが利用できることを確認できます。playground.equipment;'行が最初のノードで利用可能であることを示す次の出力が表示されます。+----+--------+-------+--------+すべてのノードに書き込むことができ、複製が適切に実行されていることを確認しました。結論この時点で、動作中の3ノードGaleraテストクラスターが構成されています。実稼働環境でGaleraクラスターを使用する予定がある場合は、5つ以上のノードから始めることをお勧めします。[その他の状態スナップショット転送(sst)エージェント]の一部を見てください。アクティブノードへの大きな中断なしに、非常に迅速に新しいノードをセットアップします。これは実際のレプリケーションには影響しませんが、ノードが初期化される際の懸念事項です。MySQLクラスターなどの他のクラスタリングソリューションにも興味があるかもしれません。その場合は、チュートリアルhttps://www.digitalocean.com/community/tutorials/how-to-create-a-multi-node-mysqlをご覧ください。Clusterを作成する方法]チュートリアル。