sql >> データベース >  >> RDS >> MariaDB

高可用性のためにMariaDBクラスター10.5をデプロイする方法

    MariaDB Cluster 10.5のデプロイは、バージョン1.8.1以降のClusterControlでサポートされています。

    MariaDB 10.5には以下が装備されています:

    • その他の詳細な権限

    • InnoDBのパフォーマンスの向上

    • ガレラクラスターの完全なGTIDサポート

    • レプリケーションとバイナリログのその他のメタデータ

    • その他のSQL構文ステートメント(ステートメントをINSERT、EXCEPTALLおよびINTERSECTALLに戻す、…)

    • MySQL5.7に一致するパフォーマンススキーマの更新

    • S3ストレージエンジン

    以前のブログでさらに確認できます

    この特定のバージョンのリリースの詳細については、MariaDB10.5の新機能を確認してください。バージョン10.4から10.5への最も重要な変更には、次のものがあります。

    • GTIDの一貫性

    • クラスターの不整合/エラー投票

    • ノンブロッキングDDL操作(エンタープライズバージョンでのみ使用可能)

    • ブラックボックス(エンタープライズバージョンでのみ使用可能)

    • 26.4.6が最新バージョンであるGalerawsrepライブラリをアップグレードしました

    当初、このリリースではXAトランザクションのサポートが期待されていました(XAトランザクションはMariaDBサーバーでサポートされていますが、Galeraクラスターではサポートされていないため混乱しないでください)。ただし、パフォーマンスに影響するため、MariaDBGaleraClusterはXAトランザクションをサポートしていません。

    このブログでは、高可用性を実現するためにMariaDBCluster10.5をデプロイする方法について説明します。

    高可用性のためのMariaDBクラスター

    MariaDBクラスターは、本質的には、MariaDB実装をデータベースレイヤーとして使用してInnoDBまたはXtraDBエンジンとインターフェイスするGaleraクラスターです。 MariaDB Galera Clusterは、MariaDB用の仮想同期マルチマスタークラスターです。 Linuxでのみ使用可能で、XtraDB / InnoDBストレージエンジンをサポートします(ただし、MyISAMは実験的にサポートされています。wsrep_replicate_myisamシステム変数を参照してください)。 Galera Clusterを使用すると、データベースの読み取りと書き込みを任意のノードに送信できます。個々のノードは、操作を中断したり、複雑なフェイルオーバー手順を使用したりすることなく失われる可能性があります。

    MariaDBクラスター内に適応されたGaleraの性質により、同期レプリケーション、フェイルオーバー、および再同期を備えた高可用性ソリューションです。データ損失がなく、スレーブラグがなく、読み取りと書き込みのスケーラビリティがあり、さまざまなデータセンターで高可用性が得られるという利点があります。

    MariaDBCluster10.5のデプロイ

    MariaDBは、MariaDBCluster10.5をインストールするための簡単で簡単なセットアップを提供します。手動プロセスは面倒な場合がありますが、MariaDBが提供する自動スクリプトを使用すると、ターゲットデータベースのバージョン、OSタイプ、およびOSバージョンに応じてリポジトリを設定できます。

    この演習では、次の3ノードのGaleraクラスターをセットアップします。IPアドレスは192.168.40.210、192.168.40.220、192.168.40.230です。

    リポジトリを設定する

    前述のように、MariaDBにはmariadb_repo_setupという名前のスクリプトがあり、使いやすいです。データベースのターゲットバージョン、OSタイプ、およびOSバージョンを指定できます。

    たとえば、EL 8を使用してインストールしています:

    curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=rhel --os-version=8
    またはUbuntuFocalFossaにインストールする

    curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=ubuntu --os-version=focal

    mariadb_repo_setupスクリプトを使用する場合、依存関係としてパッケージapt-transport-httpsが必要であることに注意してください。したがって、mariadb_repo_setupスクリプトを利用する前に、まずこのパッケージをインストールしてください。

    apt update
    
    apt install apt-transport-https

    次に、OSに応じて3つのノードに対してコマンドを実行します。もちろん、MariaDBのバージョンは10.5である必要があります。

    MySQL構成のセットアップ

    構成ファイルは、サーバーリソース、サーバー環境のタイプ、および割り当てられたIPアドレスによって異なります。このブログでは、ClusterControlを使用してPercona XtraDB Cluster /MariaDBClusterデータベースにデプロイするために使用したこの本番環境対応のMariaDBCluster/PXC構成セットアップを使用できます。必要な、または変更される可能性のある注目すべき変数は次のとおりです。

    • innodb_buffer_pool_size —サーバーの70%〜80%の使用可能なRAMからバッファープールを設定します

    • wsrep_provider —ガレラコンパイル済みライブラリのパス。 Enterprise Linuxの場合、パスは/usr/lib64/galera-4/libgalera_smm.soになります。 Debian/Ubuntuは/usr/lib/galera/libgalera_smm.soにあります。

    • wsrep_node_address —これはノードのIPアドレスです

    • wsrep_sst_method —どちらも変更できますが、mariabackupを使用することをお勧めします。選択できる値は、rsync、mysqldump、xtrabackup、xtrabackup-v2、mariabackupです。

    • wsrep_cluster_name —MariaDBクラスターの名前。単一のMariaDBクラスター内のすべてのノードと同一である必要があります。

    • wsrep_cluster_address —これにはクラスター内のノードのアドレスが含まれます。有効なIP、ホスト名、またはFQDNである必要があります。

    • wsrep_node_name —ノードの名前。この名前は、wsrep_sst_donorで優先ドナーとして使用できます。クラスタ内の複数のノードが同じ名前を持つことができることに注意してください。

    SSTを実行するために、次のセクション[mysqldump]、[xtrabackup]、および[mysqld]のユーザーとパスワードを必要に応じて変更できます。この演習では、単純に保ち、値をそのままにしておくことができます。

    ここで、構成ファイルをコピーして/etc/my.cnfに配置します。これを3つのGaleraノードすべてに対して行います。

    必要なパッケージのインストール

    3つのGaleraノードすべてのパッケージをインストールします。ターゲットOS環境に基づいて、以下のコマンドに従います。

    RHEL / Rocky / AlmaLinuxの場合:

    sudo yum install MariaDB-server MariaDB-client galera-4 MariaDB-backup
    Debian / Ubuntuの場合:

    sudo apt update
    
    sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-common

    インストールが完了したら、MariaDBプロセスを停止し、クラスターを単一ノードとして初期化します。これにより、Galeraクラスターがブートストラップされます。この段階では、ノード192.168.40.210で実行しています。

    $ /usr/bin/galera_new_cluster

    SST/ISTユーザーの作成

    SSTまたはISTに使用されるバックアップユーザーを作成します。以下のSQLステートメントは、クラスターを開始した最初のノードでのみ実行してください。この段階で、ノード192.168.40.210で実行しました。

    CREATE USER [email protected] IDENTIFIED BY 'backuppassword';
    
    GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

    この時点で、残りのノードを接続する準備が整いました。

    MariaDBサーバーを起動します

    これで、最初のノードがすでに設定されています。残りのノードを接続する準備が整いました。単純に、MariaDBサービスを開始するだけです。以下のコマンドを実行するだけです:

    systemctl start mariadb
    残りのノードに対して一度に1つずつコマンドを実行します。この時点で、すべてのノードが同期しています。

    高可用性を実現するために、MariaDBクラスター10.5にステロイドを追加する

    同様に、高可用性のためにMariaDB Cluster 10.5をデプロイしても、本番環境でのニーズでは不十分な場合があります。冗長性のためにKeepalivedと一緒にHAProxyをインストールするなど、ステロイドを追加すると、データベース環境の可用性が向上します。

    HAProxyとKeepalivedを設定して、目的のトポロジと環境を取得すると、さらに面倒になる可能性があります。ただし、ClusterControlを使用してこれを自動化できます。 ClusterControlを使用すると、MariaDB Cluster 10.5をデプロイし、ProxySQL、MaxScale、garbdなどの負荷分散のためのソリューションをさらに追加できます。クラスタにキープアライブを追加して、災害時に冗長性と自動フェイルオーバーソリューションを追加できます。

    ClusterControlの無料試用版をダウンロードして、これらのHAソリューションを展開し、データベース操作全体を1枚のガラス板から管理できるようにすることができます。 ClusterControlを使用してMariaDB10.5クラスターをデプロイする方法について説明します。

    ClusterControlを使用したMariaDB10.5クラスターのデプロイ

    ClusterControlをインストールしたら、右上隅のアイコンをクリックすると、次のような展開ウィザードが表示されます。

    簡単に設定できます。 UIのフローに基づいた一連の手順に従うだけです。

    負荷分散管理のためにHAProxyをデプロイする

    この時点で、MariaDBCluster10.5がすべてセットアップされていると思います。それでは、HAProxyをデプロイしましょう:

    または、[管理]→[ロードバランサー]→[HAProxy]に移動できます。

    次に、HAProxyをインストールするアドレスを選択または入力し、HAProxyによって監視されるGaleraノードを選択します。以下の例を参照してください:

    HAProxyのデプロイメントを少なくとも2つ追加して、可用性を高めます。 HAProxyの1つがダウンすると、アプリケーションはまだ利用可能またはオンラインである他のノードにルーティングされます。これは、壊滅的なイベントや災害イベントを除いて、特にデータベースやシステムのアップグレードを処理する場合に非常に重要です。

    キープアライブを展開

    以下に示すように、上記と同じプロセスを使用してキープアライブをデプロイします。

    気付いた場合は、KeepalivedをインストールするHAProxyインスタンスが2つあります。 、HAProxyが実行されているすべてのノードに存在する必要があります。

    高可用性を備えたMariaDBクラスター10.5の完成

    これですべての設定が完了したので、次のような環境になります。

    まとめ

    MariaDB 10.5クラスターのこのセットアップには、数ナインで高可用性を実現するという利点があります。 HAProxyは、読み取りと書き込みの分離により、より多くの負荷分散機能を提供します。Keepalivedは、HAProxyのいずれかが停止した場合に、次に使用可能なノードにフェイルオーバーすることを保証します。アプリケーションは仮想IPアドレス(VRRPに続く)にのみ接続し、追加の構成やセットアップは必要ありません。

    1つのポートでのみ再生することで、さらに柔軟性と読み取り/書き込みの分離を追加するには、HAProxyをProxySQLに置き換えることができます。高可用性のための完璧なセットアップを実現することは困難な場合があり、それぞれに欠点があります。ただし、最も重要なのは、ダウンタイムが少ないかまったくないことです。

    高可用性MariaDBセットアップを構築するためのその他のヒントについては、MariaDBレプリケーションのデプロイに関するこの記事をご覧ください。

    データベースのトレンドとベストプラクティスの最新情報を入手したい場合は、ニュースレターを購読し、TwitterとLinkedInでフォローしてください。


    1. PL / SQLでスレッドを使用できますか?

    2. SQLServerの既存のテーブルに計算列を追加する

    3. SQL:NOTINとNOTEQUAL TOに関しては、どちらがより効率的で、なぜですか?

    4. MicrosoftAccessがスタートアップに最適な5つの理由