複数のノードやサイトを持つ MySQL NDB Cluster のインストール管理は、DBAにとって大きな課題の 1 つでしょう。この課題の軽減を目指して、MySQL Cluster Manager は開発されました。

MySQL Cluster Manager (MCM) は、MySQL NDB Cluster Carrier Grade Edition のコンポーネントであり、MySQL NDB Cluster の構成、起動、停止など、一般的な管理タスクを自動化するコマンドラインインターフェースを提供します。本記事では、MCM のダウンロードとインストールの基本、そして単一ホスト上でのクラスターのブートストラップについて紹介します。

MCMの操作、コンポーネント、およびコンセプト

MCMは以下のような、手動であれば多数のコマンドを実行する必要がある操作をサポートし、DBA の負荷を大幅に簡素化します:

  • MySQL NDB Clusterの構成と起動
  • アップグレード
  • クラスターノードの追加と削除
  • サイトホストの追加と削除
  • 構成変更
  • バックアップと復元

MCM の 3 つの主要コンポーネントを紹介しますと:

  • mcmd – MCM エージェントバイナリ
  • mcm – MCM クライアント
  • NDB – MySQL NDB Clusterバイナリ

まず MCM を使い始める前に、知っておくべき 4 つの基本的な用語概念があります:

  • ホスト – 物理/クラウドホスト、または仮想マシン
  • サイト – クラスターが設定される可能性のあるホストの管理グループ
  • パッケージ – サイト内のホストでの、インストールパスセットの論理名
  • クラスター – サイト内のホストで実行される、クラスタープロセスセットの論理名

サイト内の各ホストは、ローカルでの NDB プロセスを連携させるために mcmd プロセスを実行する必要があります。

MCM は、サイト内のすべての mcmd プロセス間のメッセージングバスとしてグループ通信システム (XCOM) を実行し、メッセージの配信、順序付け、および最終的な一貫性を確保します。

インストール

MySQL Cluster Manager は、My Oracle Support (MOS) のウェブサイト、または Oracle Software Delivery Cloud からダウンロードできます。

ご利用のプラットフォームに適合するパッケージをダウンロードしてください。本記事では、Oracle Linux 8 を実行する OCI クラウド VM を使用しますが、MCM は複数のプラットフォーム対応が用意され、オンプレミスハードウェアでも同様に機能します。また、MySQL NDB Cluster パッケージをダウンロードする必要があります。MCM と MySQL NDB Cluster を単一の tarball にバンドルした汎用 Linux 用の便利なパッケージも提供しています。例をより一般的にするために、以下の例では汎用 Linux 向け tarball を用いて説明を進めます。

tarball をインストールしたい階層のフォルダに展開します。

$ cd /export/home/tmp/foo
$ tar zxvf ./mcm-8.4.4-linux-glibc2.28-x86-64bit.tar.gz
...
$ tar zxvf  ./mysql-cluster-commercial-8.4.4-linux-glibc2.28-x86_64.tar.gz
...
$ cd mcm-8.4.4-linux-glibc2.28-x86-64bit
$ ln -s ../mysql-cluster-commercial-8.4.4-linux-glibc2.28-x86_64 cluster

MCM は、デフォルトでは NDB インストールを cluster という名前のフォルダに探しにいくため、展開されたクラスターフォルダへのソフトリンクを作成します。

$ tree -L 1
.
|-- cluster -> ../mysql-cluster-commercial-8.4.4-linux-glibc2.28-x86_64
`-- mcm8.4.4

バージョン

mcmdは --version オプションで、MySQL の標準形式でバージョン情報を表示します。

$ ./bin/mcmd --version
MySQL Cluster Manager  v8.4.4 on linux-glibc2.28 (64-bit) (MySQL Enterprise - Commercial)

ブートストラップ

MCMs --bootstrap option is the simplest way to get your NDB cluster up and running.

In about 30 seconds it starts a newly created MySQL NDB Cluster instance, with two datanodes, one management server, and two mysqlds already connected and running.MCM の --bootstrap オプションは、NDB クラスターを起動して実行するための簡便な手順です。

約 30 秒で、2 つのデータノード、1 つの管理サーバー、そして接続され実行されている 2 つの mysqld を含む、MySQL NDB クラスターインスタンスが新しく作成され、起動されます。

$ ./bin/mcmd --bootstrap
MySQL Cluster Manager 8.4.4 (64bit) started
Connect with "/export/home/tmp/foo/mcm-8.4.4-linux-glibc2.28-x86-64bit/mcm8.4.4/bin/mcm" -h lagoon -P 1862
Configuring default cluster 'mycluster'...
Setting default_storage_engine to ndbcluster...
Starting default cluster 'mycluster' version '8.4.4-cluster'...
Cluster 'mycluster' started successfully
    ndb_mgmd    lagoon:1186
    ndbmtd        lagoon
    ndbmtd        lagoon
    mysqld        lagoon:3306
    mysqld        lagoon:3307
    ndbapi        *
Connect to the database by running "/export/home/tmp/foo/mcm-8.4.4-linux-glibc2.28-x86-64bit/cluster/bin/mysql" -h 127.0.0.1 -P 3306 -u root

bootstrap オプションは、mysite という名前のサイト、mypackage という名前のパッケージ、および mycluster という名前のクラスターを作成します。--bootstrap オプションで作成された NDB クラスターには、一定の制限があることに注意してください。このオプションは、すぐに始めるのに役立ちます。

mcm クライアント

MCM コマンドラインクライアントは mcm で、MCM インストールの ./bin フォルダにあります。

$ ./bin/mcm --version
./bin/mcm  Ver 8.4.4-commercial for Linux on x86_64 (MySQL Enterprise Server - Commercial)

これは、おなじみ mysql クライアントとの間で、コマンドラインオプションとほとんどの機能を共有していますが、デフォルト値が若干異なっています。

サイト内の任意のホストの mcmd プロセスに接続して、クラスターを管理できます。

$ ./bin/mcm
Welcome to the MySQL Cluster Manager client. Commands end with ; or \g.
Your connection id is 1
Agent version: 8.4.4 MySQL Cluster Manager

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mcm> 

基本的な使い方

mcm クライアントを使って、ブートストラップした NDB クラスターを確認できます。

MCM の list commands コマンドは、利用可能なすべての管理コマンドを表示します。

mcm> list commands;
+---------------------------------------------------------------------------------------------+
| Help                                                                                        |
+---------------------------------------------------------------------------------------------+
| COMMANDS                                                                                    |
|                                                                                             |
| abort backup                   Abort an ongoing cluster backup.                             |
| add hosts                      Add hosts to site.                                           |
| add package                    Add a package alias.                                         |
| add process                    Add cluster process.                                         |
| autotune                       Autotune a cluster to given use-case template.               |
| backup agents                  Backup the agents repository and metadata.                   |
| backup cluster                 Backup a cluster.                                            |
| change log-level               Change the log-level                                         |
| change process                 Change process type.                                         |
| collect logs                   Collect log files.                                           |
| create certs                   Create certificates.                                         |
| create cluster                 Create a cluster.                                            |
| create site                    Create a site.                                               |
| delete backup                  Delete backup image.                                         |
| delete cluster                 Delete a cluster.                                            |
| delete package                 Delete a package.                                            |
| delete site                    Delete a site.                                               |
| get                            Get configuration variables.                                 |
| import cluster                 Import a running cluster.                                    |
| import config                  Import the configuration of a running cluster.               |
| list backups                   List backup images.                                          |
| list clusters                  List all clusters.                                           |
| list commands                  List the help text.                                          |
| list hosts                     List hosts in site.                                          |
| list nextnodeids               List next nodeids to be allocated.                           |
| list packages                  List all packages.                                           |
| list processes                 List processes.                                              |
| list sites                     List all sites.                                              |
| list warnings                  List warnings.                                               |
| remove hosts                   Remove hosts from site.                                      |
| remove process                 Remove a cluster process.                                    |
| reset                          Reset configuration variables.                               |
| restart cluster                Restart a cluster.                                           |
| restore cluster                Restore a cluster.                                           |
| rotate log                     Rotate the mcmd log.                                         |
| set                            Set configuration variables.                                 |
| show settings                  Show agent settings.                                         |
| show status                    Show cluster, process, operation, progress or backup status. |
| show warnings                  Show warnings.                                               |
| start cluster                  Start a cluster.                                             |
| start process                  Start a cluster process.                                     |
| stop agents                    Stop agents in site.                                         |
| stop cluster                   Stop a cluster.                                              |
| stop process                   Stop a cluster process.                                      |
| update process                 Update a cluster process.                                    |
| upgrade cluster                Upgrade a cluster.                                           |
| version                        Print version information.                                   |
|                                                                                             |
| GLOBAL OPTIONS                                                                              |
| Options that can be used with all commands                                                  |
|                                                                                             |
|   --help|-?                      Print detailed help.                                       |
|                                                                                             |
| Use '<COMMAND> --help' to see verbose help for individual commands.                         |
+---------------------------------------------------------------------------------------------+
56 rows in set (0.00 sec)

サイト、パッケージ、クラスターを一覧表示するための、いくつかの list コマンドがあります。

mcm> list sites;
+--------+------+-------+--------+
| Site   | Port | Local | Hosts  |
+--------+------+-------+--------+
| mysite | 1862 | Local | lagoon |
+--------+------+-------+--------+
1 row in set (0.10 sec)

mcm> list packages mysite;
+-----------+------------------------------------------------------------------+--------+
| Package   | Path                                                             | Hosts  |
+-----------+------------------------------------------------------------------+--------+
| mypackage | /export/home/tmp/foo/mcm-8.4.4-linux-glibc2.28-x86-64bit/cluster | lagoon |
+-----------+------------------------------------------------------------------+--------+
1 row in set (0.10 sec)

mcm> list clusters mysite;
+-----------+-----------+
| Cluster   | Package   |
+-----------+-----------+
| mycluster | mypackage |
+-----------+-----------+
1 row in set (0.10 sec)

show status コマンドを使用して、新しくブートストラップしたクラスターを確認できます。

mcm> show status mycluster;
+-----------+-------------------+---------+
| Cluster   | Status            | Comment |
+-----------+-------------------+---------+
| mycluster | fully operational |         |
+-----------+-------------------+---------+
1 row in set (0.10 sec)

または、プロセスごとの詳細情報も表示できます。

mcm> show status --process mycluster;
+--------+----------+--------+---------+-----------+-----------+
| NodeId | Process  | Host   | Status  | Nodegroup | Package   |
+--------+----------+--------+---------+-----------+-----------+
| 145    | ndb_mgmd | lagoon | running |           | mypackage |
| 1      | ndbmtd   | lagoon | running | 0         | mypackage |
| 2      | ndbmtd   | lagoon | running | 0         | mypackage |
| 146    | mysqld   | lagoon | running |           | mypackage |
| 147    | mysqld   | lagoon | running |           | mypackage |
| 148    | ndbapi   | *      | added   |           |           |
+--------+----------+--------+---------+-----------+-----------+
6 rows in set (0.10 sec)

MySQL NDB Cluster の管理

完全なクラスター構成を停止、起動できます。

mcm> stop cluster mycluster;
+------------------------------+
| Command result               |
+------------------------------+
| Cluster stopped successfully |
+------------------------------+
1 row in set (15.73 sec)

mcm> show status mycluster;
+-----------+---------+---------+
| Cluster   | Status  | Comment |
+-----------+---------+---------+
| mycluster | stopped |         |
+-----------+---------+---------+
1 row in set (0.11 sec)

mcm> start cluster mycluster;
+------------------------------+
| Command result               |
+------------------------------+
| Cluster started successfully |
+------------------------------+
1 row in set (12.83 sec)

…または、クラスターの個別のプロセス(以下の例の場合は mysqld 146)を管理できます。

mcm> stop process 146 mycluster;
+------------------------------+
| Command result               |
+------------------------------+
| Process stopped successfully |
+------------------------------+
1 row in set (6.11 sec)

mcm> show status --process mycluster;
+--------+----------+--------+---------+-----------+-----------+
| NodeId | Process  | Host   | Status  | Nodegroup | Package   |
+--------+----------+--------+---------+-----------+-----------+
| 145    | ndb_mgmd | lagoon | running |           | mypackage |
| 1      | ndbmtd   | lagoon | running | 0         | mypackage |
| 2      | ndbmtd   | lagoon | running | 0         | mypackage |
| 146    | mysqld   | lagoon | stopped |           | mypackage |
| 147    | mysqld   | lagoon | running |           | mypackage |
| 148    | ndbapi   | *      | added   |           |           |
+--------+----------+--------+---------+-----------+-----------+
6 rows in set (0.10 sec)

mcm> start process 146 mycluster;
+------------------------------+
| Command result               |
+------------------------------+
| Process started successfully |
+------------------------------+
1 row in set (2.50 sec)

NDB の設定パラメータは get および set コマンドを使用して変更できます。

mcm> get -d port:mysqld mycluster;
+------+-------+----------+---------+----------+---------+-------+---------+
| Name | Value | Process1 | NodeId1 | Process2 | NodeId2 | Level | Comment |
+------+-------+----------+---------+----------+---------+-------+---------+
| port | 3306  | mysqld   | 146     |          |         |       |         |
| port | 3307  | mysqld   | 147     |          |         |       |         |
+------+-------+----------+---------+----------+---------+-------+---------+
2 rows in set (0.10 sec)

完全にクリーンアップするには、クラスター、パッケージ、サイトを削除し、最終的にすべてのエージェントを停止します。

mcm> delete cluster mycluster;
+------------------------------+
| Command result               |
+------------------------------+
| Cluster deleted successfully |
+------------------------------+
1 row in set (0.30 sec)

mcm> delete package mypackage;
+------------------------------+
| Command result               |
+------------------------------+
| Package deleted successfully |
+------------------------------+
1 row in set (0.10 sec)

mcm> delete site mysite;
+---------------------------+
| Command result            |
+---------------------------+
| Site deleted successfully |
+---------------------------+
1 row in set (0.10 sec)

mcm> stop agents mysite;
+-----------------------------+
| Command result              |
+-----------------------------+
| Agents stopped successfully |
+-----------------------------+
1 row in set (0.10 sec)

最後のコマンドで mcmd が終了します。

MCM に関する詳細なマニュアルは、https://dev.mysql.com/doc/mysql-cluster-manager/8.4/en/(英語)にあります。

まとめ

本記事で示したように、MySQL Cluster Manager は MySQL NDB Cluster を簡素化し、使いやすさを向上させます。インストールとセットアップが容易で、簡単に開始でき、堅牢で、複雑で時間のかかる手動操作を簡便に処理します。書く予定の次の記事では、マルチホストセットアップの管理、バックアップと復元、NDB のスケーリングとアップグレードについて解説いたします。

ぜひ、試してみてください!

(訳者註: この記事の元記事は、2025年3月12日に投稿されました。)