複数のノードやサイトを持つ 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日に投稿されました。)

