GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu20.04でMariaDBGaleraクラスターをセットアップする方法

データベースシステムの高可用性を実現するには、本番環境で負荷分散とクラスタリングが非常に重要です。 MariaDB Galera Clusterは、マルチマスタークラスタリングソリューションを提供し、XtraDB/InnoDBストレージエンジンをサポートします。マルチマスタークラスターでは、任意のクラスターノードへの読み取りと書き込みが可能です。いずれかのノードのデータを変更すると、それらは他のすべてのノードに複製されます。 Galeraクラスターは、クラウドおよびWAN環境もサポートしており、国や大陸全体に分散クラスターを構築します。

この投稿では、Ubuntu20.04サーバーで3ノードのMariaDBGaleraクラスターをセットアップする方法を示します。

前提条件
  • Ubuntu20.04を実行している3台のサーバー。
  • ルートパスワードはサーバーで構成されています。
はじめに

開始する前に、システムパッケージを最新バージョンに更新する必要があります。次のコマンドを使用して更新できます:

apt-get update -y

サーバーが更新されたら、次のステップに進むことができます。

MariaDBサーバーをインストールする

まず、すべてのノードにMariaDBサーバーをインストールする必要があります。次のコマンドを実行してインストールできます:

apt-get install mariadb-server -y

インストールが完了したら、MariaDBサービスを開始し、システムの再起動時に開始できるようにします。

systemctl start mariadb
systemctl status mariadb

次に、MariaDBのインストールを保護し、各ノードにMariaDBルートパスワードを設定する必要があります。次のコマンドで実行できます:

mysql_secure_installation

以下に示すように、MariaDBルートパスワードを設定するように求められます。

Enter current password for root (enter for none): 
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

MariaDBサーバーが保護されたら、次のステップに進むことができます。

ガレラクラスターの構成

次に、各ノードが相互に通信できるように、各ノードにGalera構成ファイルを作成する必要があります。

最初のノードで、次のコマンドを使用してgalera.cnfファイルを作成します。

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://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node1-ip-address"
wsrep_node_name="node1"

終了したら、ファイルを保存して閉じます。

2番目のノードで、次のコマンドを使用してgalera.cnfファイルを作成します。

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://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node2-ip-address"
wsrep_node_name="node2"

終了したら、ファイルを保存して閉じます。

3番目のノードで、次のコマンドを使用してgalera.cnfファイルを作成します。

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://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node3-ip-address"
wsrep_node_name="node3"

終了したら、ファイルを保存して閉じます。

ガレラクラスターを初期化します

この時点で、すべてのノードが相互に通信するように構成されています。

次に、すべてのノードでMariaDBサービスを停止する必要があります。次のコマンドを実行して、MariaDBサービスを停止できます。

systemctl stop mariadb

最初のノードで、次のコマンドを使用してMariaDBGaleraクラスターを初期化します。

galera_new_cluster

次に、次のコマンドを使用してクラスターのステータスを確認します。

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

次の出力が表示されます。

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 1     |
+--------------------+-------+

2番目のノードで、次のコマンドを使用してMariaDBサービスを開始します。

systemctl start mariadb

次に、次のコマンドを使用して、MariaDBGaleraクラスターのステータスを確認します。

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

次の出力が表示されます。

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 2     |
+--------------------+-------+

3番目のノードで、次のコマンドを使用してMariaDBサービスを開始します。

systemctl start mariadb

次に、次のコマンドを使用して、MariaDBGaleraクラスターのステータスを確認します。

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

次の出力が表示されます。

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

この時点で、MariaDBGaleraクラスターが初期化されます。これで、次のステップに進むことができます。

クラスターレプリケーションを確認する

次に、レプリケーションが機能しているかどうかを確認する必要があります。

最初のノードで、次のコマンドを使用してMariaDBに接続します。

mysql -u root -p

接続したら、次のコマンドを使用してデータベースを作成します。

MariaDB [(none)]> create database db1;
MariaDB [(none)]> create database db2;

次に、次のコマンドを使用してMariaDBを終了します。

MariaDB [(none)]> exit;

次に、2番目のノードに移動し、次のコマンドを使用してMariaDBにログインします。

mysql -u root -p

次に、次のコマンドを実行して、すべてのデータベースを表示します。

MariaDB [(none)]> show databases;

最初のノードで作成した両方のデータベースが2番目のノードに複製されていることがわかります。

+--------------------+
| Database           |
+--------------------+
| db1                |
| db2                |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.001 sec)

次に、3番目のノードに移動し、次のコマンドを使用してMariaDBにログインします。

mysql -u root -p

次に、次のコマンドを実行して、すべてのデータベースを表示します。

MariaDB [(none)]> show databases;

最初のノードで作成した両方のデータベースが3番目のノードに複製されていることがわかります。

+--------------------+
| Database           |
+--------------------+
| db1                |
| db2                |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.001 sec)
結論

上記のガイドでは、Ubuntu20.04サーバーで3ノードのMariaDBGaleraクラスターをセットアップする方法を学びました。これで、MariaDBGaleraクラスターにノードを簡単に追加できます。ご不明な点がございましたら、お気軽にお問い合わせください。


Ubuntu
  1. Ubuntu16.04でHAProxyをセットアップする方法

  2. Ubuntu18.04でUFWファイアウォールを設定する方法

  3. Ubuntu18.04にMariaDBGaleraクラスターをインストールして構成する方法

  1. Ubuntu18.04にMariaDB10.4をインストールする方法

  2. Ubuntu18.04にMariaDBをインストールする方法

  3. Ubuntu16.04にMariaDBGaleraクラスターをインストールする方法

  1. Ubuntu20.04にMariaDBをインストールする方法

  2. Ubuntu20.04LTSにMariaDBをインストールする方法

  3. UbuntuでDockerSwarmクラスターをセットアップおよび構成する方法