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

MySQL GaleraCluster4.0をAmazonAWSEC2にデプロイする

    Galera Clusterは、MySQLで最も人気のある高可用性ソリューションの1つです。これは実質的に同期クラスターであり、レプリケーションの遅延を制御するのに役立ちます。フロー制御のおかげで、Galeraクラスターはそれ自体を抑制し、より多くのロードされたノードがクラスターの残りの部分に追いつくことを可能にします。 Galera 4の最近のリリースは、新しい機能と改善をもたらしました。それらについては、MariaDB 10.4 Galera Clusterについて説明しているブログ投稿と、Galera4の既存および今後の機能について説明しているブログ投稿で取り上げました。

    AmazonEC2で使用した場合のGalera4の運賃はどうなりますか?ご存知かもしれませんが、Amazonはリレーショナルデータベースサービスを提供しています。これは、可用性の高いMySQLデータベースを簡単にデプロイする方法をユーザーに提供するように設計されています。私の同僚であるAshrafSharifは、彼のブログ投稿でRDSMySQLとRDSAuroraのフェイルオーバー時間を比較しました。 Auroraのフェイルオーバー時間は本当に素晴らしいように見えますが、しかしあります。まず第一に、あなたはRDSを使用することを余儀なくされています。管理するインスタンスにAuroraをデプロイすることはできません。 Auroraで利用可能な既存の機能とオプションでは不十分な場合は、他のオプションはありませんが、自分で何かを展開する必要があります。ここにガレラが入ります。ガレラは、オーロラとは異なり、独自のブラックボックスではありません。逆に、これはオープンソースソフトウェアであり、サポートされているすべての環境で自由に使用できます。 AWS Elastic Computing Cloud(EC2)にGalera Clusterをインストールし、それによって、フェイルオーバーがほぼ瞬時に行われる高可用性環境を構築できます。ノードの障害を検出するとすぐに、他のGaleraノードに再接続できます。 EC2にGalera4をデプロイするにはどうすればよいですか?このブログ投稿では、それを見て、それを達成するための最も簡単な方法を示すステップバイステップガイドを提供します。

    EC2にGalera4クラスターをデプロイする

    最初のステップは、Galeraクラスターに使用する環境を作成することです。 Ubuntu18.04LTS仮想マシンを使用します。

    このブログでは、t2.mediumインスタンスサイズを使用します役職。予想される負荷に基づいてインスタンスをスケーリングする必要があります。

    クラスターに3つのノードをデプロイします。なぜ3つ? Galeraが高可用性を維持する方法を説明するブログがあります。

    これらのインスタンスのストレージを構成します。

    ノードに適切なセキュリティグループも選択します。繰り返しますが、私たちの場合、セキュリティグループは非常にオープンです。アクセスを可能な限り制限する必要があります。データベースへのアクセスを許可する必要があるノードのみを許可する必要があります。

    最後に、既存のキーパーを選択するか、新しいキーパーを作成します。このステップの後、3つのインスタンスが起動されます。

    起動したら、SSH経由で接続して構成を開始できますデータベース。

    「node1、node2、node3」の命名規則を採用することにしたため、すべてのノードの/ etc / hostsを編集し、それぞれのローカルIPと一緒にリストする必要がありました。また、ノードに新しい名前を使用するように/ etc/hostnameを変更しました。これが完了すると、Galeraクラスターのセットアップを開始できます。執筆時点では、Galera 4のGAバージョンを提供するベンダーは10.4のMariaDBのみであるため、クラスターにはMariaDB10.4を使用します。 MariaDBWebサイトからの提案とガイドを使用してインストールを進めます。

    MariaDB10.4ガレラクラスターのデプロイ

    リポジトリの準備から始めます:

    wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
    
    bash ./mariadb_repo_setup

    リポジトリを設定するためのスクリプトをダウンロードして実行し、すべてが正しく設定されていることを確認しました。この構成済みリポジトリーは、執筆時点では10.4である最新のMariaDBバージョンを使用します。

    [email protected]:~# apt update
    
    Hit:1 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic InRelease
    
    Hit:2 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease
    
    Hit:3 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease
    
    Hit:4 http://downloads.mariadb.com/MariaDB/mariadb-10.4/repo/ubuntu bionic InRelease
    
    Ign:5 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic InRelease
    
    Hit:6 http://downloads.mariadb.com/Tools/ubuntu bionic InRelease
    
    Hit:7 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic Release
    
    Hit:8 http://security.ubuntu.com/ubuntu bionic-security InRelease
    
    Reading package lists... Done
    
    Building dependency tree
    
    Reading state information... Done
    
    4 packages can be upgraded. Run 'apt list --upgradable' to see them.

    ご覧のとおり、MariaDB10.4およびMaxScale2.4のリポジトリーが構成されています。これで、MariaDBをインストールできます。それを段階的に、ノードごとに行います。 MariaDBは、クラスターをインストールおよび構成する方法に関するガイドを提供します。

    パッケージをインストールする必要があります:

    apt-get install mariadb-server mariadb-client galera-4 mariadb-backup

    このコマンドは、MariaDB10.4Galeraを実行するために必要なすべてのパッケージをインストールします。 MariaDBは、構成ファイルのセットを作成します。必要なすべての設定を含む新しいものを追加します。デフォルトでは、構成ファイルの最後に含まれるため、設定した変数の以前の設定はすべて上書きされます。理想的には、後で、既存の構成ファイルを編集して、galera.cnfに設定した設定を削除し、特定の設定が構成されている場所での混乱を避けます。

    [email protected]:~# cat /etc/mysql/conf.d/galera.cnf
    
    [mysqld]
    
    bind-address=10.0.0.103
    
    default_storage_engine=InnoDB
    
    binlog_format=row
    
    innodb_autoinc_lock_mode=2
    
    
    
    # Galera cluster configuration
    
    wsrep_on=ON
    
    wsrep_provider=/usr/lib/galera/libgalera_smm.so
    
    wsrep_cluster_address="gcomm://10.0.0.103,10.0.0.130,10.0.0.62"
    
    wsrep_cluster_name="Galera4 cluster"
    
    wsrep_sst_method=mariabackup
    
    wsrep_sst_auth='sstuser:pa55'
    
    
    
    # Cluster node configuration
    
    wsrep_node_address="10.0.0.103"
    
    wsrep_node_name="node1"

    構成の準備ができたら、開始できます。

    [email protected]:~# galera_new_cluster

    これにより、最初のノードで新しいクラスターがブートストラップされます。次に、残りのノードで同様の手順を実行する必要があります。必要なパッケージをインストールし、ローカルIPが変更されることを念頭に置いて構成するため、それに応じてgalera.cnfファイルを変更する必要があります。

    構成ファイルの準備ができたら、スナップショット状態転送(SST)に使用されるユーザーを作成する必要があります。

    MariaDB [(none)]> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'pa55';
    
    Query OK, 0 rows affected (0.022 sec)
    
    MariaDB [(none)]> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
    
    Query OK, 0 rows affected (0.022 sec)
    最初のノードでこれを行う必要があります。残りのノードはクラスターに参加し、完全な状態のスナップショットを受信するため、ユーザーはノードに転送されます。今、私たちがしなければならないのは、残りのノードを起動することだけです:

    [email protected]:~# service mysql start
    
    [email protected]:~# service mysql start

    そして、クラスターが実際に形成されていることを確認します:

    MariaDB [(none)]> show global status like 'wsrep_cluster_size';
    
    +--------------------+-------+
    
    | Variable_name      | Value |
    
    +--------------------+-------+
    
    | wsrep_cluster_size | 3     |
    
    +--------------------+-------+
    
    1 row in set (0.001 sec)

    すべてが順調で、クラスターは稼働しており、3つのGaleraノードで構成されています。なんとかMariaDB10.4GaleraClusterをAmazonEC2にデプロイできました。


    1. C#-oraclelongraw型の値を取得する方法

    2. IRI Voracity(Total Data Management)の紹介[ビデオ]

    3. cxを使用してUnicodeを挿入できない-Oracle

    4. PostgreSQL:同じクエリで計算列を使用する