データベースクラスタリングは、複数のサーバーを単一のデータベースに接続して結合するプロセスです。クラスタリングは、負荷をさまざまなサーバーに分散することにより、データベースの可用性を向上させます。いずれかのサーバーに障害が発生した場合、他のサーバーはすぐにサービスを継続できます。
MariaDB Galeraは、クラスター内の任意のノードの読み取りと書き込みを可能にするマルチマスタークラスタリングソリューションです。 MariaDB Galeraを使用すると、任意の1つのノードに加えられた変更がすべてのノードに複製されます。 MariaDBGaleraはXtraDB/InnoDBストレージエンジンをサポートしており、Linuxでのみ使用できます。
機能
- アクティブ-アクティブマルチマスタートポロジ
- 自動ノード参加
- 任意のクラスターノードの読み取りおよび書き込み機能
- 自動メンバーシップ制御、障害が発生したノードはクラスターから削除されます
- 自動ノードプロビジョニング
このチュートリアルでは、Ubuntu18.04で3ノードのMariaDBGaleraクラスターをセットアップする方法を示します。
前提条件
- Atlantic.Netクラウドプラットフォーム上の3つの新しいUbuntu18.04VPS。
- すべてのサーバーで構成されているrootパスワード。
このチュートリアルでは、次の構成の3台のサーバーを使用します。
server1 :192.168.0.101
server2 :192.168.0.102
server3 :192.168.0.103
ステップ1–Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。 2GB以上のRAMを搭載したオペレーティングシステムとしてUbuntu18.04を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
Ubuntu 18.04サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
apt-get update -y
ステップ2–すべてのサーバーにMariaDBサーバーをインストールする
まず、次のコマンドを使用してMariaDBリポジトリキーを追加します。
apt-get install software-properties-common apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
次に、次のコマンドを使用してリポジトリを追加します。
add-apt-repository "deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.4/ubuntu $(lsb_release -cs) main"
リポジトリが追加されたら、次のコマンドでリポジトリを更新します。
apt-get update -y
最後に、次のコマンドを使用してMariaDBサーバーをインストールします。
apt-get install mariadb-server -y
バージョン10.1以降、Galeraクラスター機能はMariaDBにバンドルされています。 MariaDB Galera Serverパッケージは、MariaDBサーバーとともに自動的にインストールされます。
次のコマンドで設定できます:
mysql_secure_installation
以下に示すように、すべての質問に答えてください。
Enter current password for root (enter for none): Provide your root user password Switch to unix_socket authentication [Y/n] n Change the root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
注 :3台のサーバーすべてで上記の手順を繰り返してください。
ステップ3–クラスター内の各サーバーを構成する
この時点で、各サーバーにMariaDBサーバーをインストールして構成しました。次に、サーバー間で通信するようにGaleraクラスターを構成する必要があります。そのためには、各サーバーに共通の構成ファイルを作成する必要があります。
このセクションでは、クラスター内の各サーバーを構成する方法を示します。
最初のサーバーの構成
まず、最初のサーバーにログインし、次のコマンドを使用してGalera構成ファイルを作成します。
nano /etc/mysql/conf.d/galera.cnf
次の行を追加します(必ず独自のサーバーIPアドレスを入力してください):
[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/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.101" wsrep_node_name="server1"
終了したら、ファイルを保存して閉じます。次に、2番目のサーバーに進むことができます。
2番目のサーバーの構成
次に、2番目のサーバーにログインし、次のコマンドを使用してGalera構成ファイルを作成します。
nano /etc/mysql/conf.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/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.102" wsrep_node_name="server2"
終了したら、ファイルを保存して閉じます。次に、3番目のサーバーに進むことができます。
サードサーバーの構成
次に、3番目のサーバーにログインし、次のコマンドを使用してGalera構成ファイルを作成します。
nano /etc/mysql/conf.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/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.103" wsrep_node_name="server3"
終了したら、ファイルを保存して閉じます。
この時点で、3台のサーバーすべてが相互に通信するように構成しました。
ステップ4–ガレラクラスターを初期化する
クラスタを開始する前に、すべてのサーバーでMariaDBサービスを停止する必要があります。
次のコマンドを実行して、すべてのサーバーでMariaDBサービスを停止します。
systemctl stop mariadb
次に、次のコマンドを使用して、最初のノードのクラスターを初期化します。
galera_new_cluster
上記のコマンドは、クラスターを起動し、server1をクラスターに追加します。
次のコマンドで確認できます:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
ルートパスワードを入力し、Enterキーを押します。次の出力が表示されます。
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 1 | +--------------------+-------+
次に、2番目のサーバーに移動し、MariaDBサービスを開始します。
systemctl start mariadb
次に、次のコマンドを使用してクラスターサイズを確認します。
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
ルートパスワードを入力し、Enterキーを押します。 2番目のサーバーがクラスターに参加していることがわかります。
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 2 | +--------------------+-------+
次に、3番目のサーバーに移動し、MariaDBサービスを開始します。
systemctl start mariadb
次に、次のコマンドを使用してクラスターサイズを確認します。
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
ルートパスワードを入力し、Enterキーを押します。 3番目のサーバーがクラスターに参加していることがわかります。
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+
ステップ5–ガレラクラスターレプリケーションのテスト
これで、Galeraクラスターが稼働しています。レプリケーションが機能しているかどうかをテストして確認するときが来ました。
これを行うには、最初のサーバーにデータベースを作成し、それが他のサーバーに複製されているかどうかを確認します。
server1で、次のコマンドを使用してMySQLシェルにログインします。
mysql -u root -p
プロンプトが表示されたらrootパスワードを入力し、次のコマンドでデータベースを作成します。
create database replicadb; create database mydb;
次に、次のコマンドを使用してMySQLシェルを終了します。
exit;
server2で、次のコマンドを使用してMySQLシェルにログインします。
mysql -u root -p
プロンプトが表示されたらrootパスワードを入力し、データベースが存在するかどうかを確認します。
show databases;
次の出力が得られるはずです:
+--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | | replicadb | +--------------------+
server3で、次のコマンドを使用してMySQLシェルにログインします。
mysql -u root -p
プロンプトが表示されたらrootパスワードを入力し、データベースが存在するかどうかを確認します。
show databases;
次の出力が得られるはずです:
+--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | | replicadb | +--------------------+
上記の出力は、レプリケーションが正しく機能していることを明確に示しています。
結論
おめでとう!これで、Ubuntu18.04VPSに3ノードのMariaDBGaleraクラスターが正常にインストールおよび構成されました。これで、本番環境でMariaDBGaleraクラスターをセットアップするための十分な知識が得られます。詳細については、MariaDBGaleraのドキュメントをご覧ください。