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

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

MariaDB Galeraは、MariaDBのマルチマスタークラスターです。 MariaDB 10.1以降、MariaDBサーバーとMariaDB Galeraサーバーパッケージが結合され、MariaDBのインストール時にGaleraパッケージとその依存関係が自動的にインストールされます。現在、MariaDBGaleraClusterはInnoDB/XtraDBストレージエンジンのみをサポートしています。 MariaDB 10.0および5.5では、個別にダウンロードする必要があります。 MariaDB Galeraは、サイトのデータベースに冗長性を追加します。 MariaDB Galera Clusterでは、複数のデータベースサーバーが相互接続され、同期が維持されます。

MariaDB Galeraは多くの機能を提供しますが、その一部を以下に示します。

  1. 同期レプリケーション。
  2. 自動ノード参加。
  3. アクティブ-アクティブマルチマスタートポロジ。
  4. 行レベルでの真の並列レプリケーション。
  5. 読み取りと書き込みのスケーラビリティ、クライアントの待ち時間の短縮。
  6. 失敗したノード、クラスターからの自動ドロップ。

このチュートリアルでは、Ubuntu16.04サーバーで実行されている3つのノードでMariaDBGaleraCluster10.1をセットアップする方法を説明します。また、すべてのノード間のデータベースレプリケーションをテストします。

要件
  • Ubuntu16.04サーバーを実行している3つのノード。
  • 静的IPアドレスが192.168.0.102のN​​ode1、静的IPアドレスが192.168.0.103のNode2、静的IPアドレスが192.168.0.104のNode3がサーバーで構成されます。
  • すべてのノードでsudo権限が設定されているroot以外のユーザー。
はじめに

まず、すべてのノードを最新バージョンに更新する必要があります。次のコマンドですべてを更新できます:

sudo apt-get update -y
sudo apt-get upgrade -y

次に、すべてのノードを再起動して、これらの変更を適用します。次に、sudo userでログインし、次の手順に進みます。

MariaDBGaleraをインストール

MariaDBサーバーとMariaDBガレラサーバーパッケージは、バージョンMariaDB10.1に統合されています。デフォルトでは、MariaDB 10.1はデフォルトのUbuntuリポジトリでは使用できないため、すべてのノードにMariaDBリポジトリを追加する必要があります。

まず、次のコマンドを使用してMariaDBリポジトリキーを追加します。

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

次に、リポジトリを追加し、次のコマンドを使用してAPTキャッシュを更新します。

sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main'
sudo apt-get update -y

リポジトリが更新されたら、次のコマンドを使用してMariaDBをインストールします。

sudo apt-get install mariadb-server rsync -y

上記のコマンドは、Galeraといくつかの依存関係を持つMariaDBをインストールします。プラグインやストレージエンジンのように、Galeraパーツは構成されるまで休止状態のままです。 MariaDBがすべてのノードにインストールされたら、MariaDBの保護に進むことができます。

デフォルトでは、MariaDBのインストールは保護されていないため、MariaDBのインストールを保護する必要があります。これを行うには、mysql_secure_installationスクリプトを実行します。

sudo mysql_secure_installation

このプロセスでは、rootパスワードを設定し、匿名ユーザーを削除し、rootログインをリモートで禁止し、テストデータベースを削除するように求められます。以下に示すように、すべての質問に答えてください。

Enter current password for root (enter for none):
Change the root password? [Y/n] n
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がすべてのノードで保護されたら、次のステップに進むことができます。

ノード1でMariaDBクラスターをセットアップ

まず、Node1に移動し、Galeraの構成ファイルを作成します。デフォルトでは、MariaDBは/etc/mysql/conf.d/ディレクトリから設定を読み取ります。これを行うには、次のコマンドを実行します。

sudo 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.102,192.168.0.103,192.168.0.104"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="192.168.0.102"
wsrep_node_name="Node1"

終了したらファイルを保存します。

注: 192.168.0.102はNode1のIPアドレスです

ガレラクラスターにノード2を追加

次に、Node2に移動して、Galeraの構成ファイルを作成します。

sudo 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.102,192.168.0.103,192.168.0.104"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="192.168.0.103"
wsrep_node_name="Node2"

終了したらファイルを保存します。

注: 192.168.0.103はNode2のIPアドレスです。

ガレラクラスターにノード3を追加

次に、Node3に移動して、Galeraの構成ファイルを作成します。

sudo 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.102,192.168.0.103,192.168.0.104"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="192.168.0.104"
wsrep_node_name="Node3"

終了したらファイルを保存します。

注: 192.168.0.104はNode3のIPアドレスです。

ファイアウォールの構成

Galera Clusterは、MySQLクライアント接続に3306、状態スナップショット転送に4444、Galera Clusterレプリケーショントラフィックに4567、インクリメンタル状態転送に4568の4つのポートを使用します。したがって、UFWファイアウォールを使用してこれらすべてのポートを許可する必要があります。これを行うには、すべてのノードで次のコマンドを実行します。

まず、次のコマンドでUFWファイアウォールを有効にします。

sudo ufw enable

次に、次のコマンドですべてのポートを許可します。

sudo ufw allow 3306/tcp
sudo ufw allow 4444/tcp
sudo ufw allow 4567/tcp
sudo ufw allow 4568/tcp
sudo ufw allow 4567/udp

次に、次のコマンドを使用してファイアウォールのステータスを確認できます。

sudo ufw status

すべてのノードでUFWファイアウォールを構成したら、次の手順に進むことができます。

MariaDBガレラクラスターを開始

すべてのノードを正常に構成したら、Node1に移動して、GaleraClusterを起動します。

Galeraを開始する前に、MariaDBサービスがすべてのノードで停止していることを確認する必要があります。

すべてのノードで次のコマンドを実行します。

sudo systemctl stop mysql

次に、次のコマンドを使用してNode1でGaleraClusterを起動します。

sudo galera_new_cluster

次に、次のコマンドを使用して、クラスターが実行されているかどうかを確認します。

mysql -u root -p -e "show status like 'wsrep_cluster_size'"

すべてが正常であれば、次の出力が表示されます。

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

Node2で、MariaDBサービスを開始します:

sudo systemctl start mysql

次のコマンドを使用して、MariaDBサービスが機能しているかどうかのステータスを確認できます。

sudo systemctl status mysql

すべてが正常であれば、次の出力が表示されます。

?? mariadb.service - MariaDB database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2017-09-17 10:11:20 EDT; 10min ago
  Process: 715 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 713 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
  Process: 545 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set
  Process: 535 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 514 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
 Main PID: 661 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 26 (limit: 4915)
   CGroup: /system.slice/mariadb.service
           ??????661 /usr/sbin/mysqld

Sep 17 10:11:11 debian systemd[1]: Starting MariaDB database server...
Sep 17 10:11:15 debian mysqld[661]: 2017-09-17 10:11:15 140287134630464 [Note] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) starting as process
Sep 17 10:11:20 debian systemd[1]: Started MariaDB database server.

これで、2番目のノードがクラスターに自動的にリンクされているはずです。次のコマンドで確認できます:

mysql -u root -p -e "show status like 'wsrep_cluster_size'"

すべてが正常に機能している場合は、クラスターサイズを2に設定する必要があります。

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

Node3で、MariaDBサービスを開始します:

sudo systemctl start mysql
mysql -u root -p -e "show status like 'wsrep_cluster_size'"

すべてが正常に機能している場合は、クラスターサイズを3に設定する必要があります。

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

これで、クラスターは機能し、相互に通信しています。

データベースレプリケーションのテスト

これで、すべてのノードがオンラインになりました。次は、Galeraクラスター全体でデータベースレプリケーションをテストします。まず、Node1にデータベースを作成し、それがすべてのノードに複製されているかどうかを確認しましょう。

まず、次のコマンドを使用してMariaDbコンソールにログインします。

mysql -u root -p

ルートパスワードを入力し、test_dbという名前のデータベースを作成します:

MariaDB [(none)]> create database test_db;
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| test_db            |
+--------------------+

次に、Node2とNode3に移動し、レプリケーションが機能しているかどうかを確認します。

mysql -u root -p
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| test_db            |
+--------------------+

おめでとう!これで、MariaDBGaleraClusterがUbuntu16.04サーバーに正常にインストールおよび構成されました。

結論

Ubuntu16.04にMariaDBGaleraClusterをインストールして構成するための十分な知識が得られたことを願っています。これで、数個、場合によっては数十個の個別のノードに簡単にスケールアップできます。疑問や質問がある場合は、Galera Cluster Doc

のリンクを参照してください。
Ubuntu
  1. Ubuntu20.04でMariaDBGaleraクラスターをセットアップする方法

  2. Ubuntu15.04にLiteCartをインストールする方法

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

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

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

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

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

  2. Ubuntu 18.04 /Ubuntu16.04にMariaDBをインストールする方法

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