GNU/Linux >> Linux の 問題 >  >> Debian

Debian10で3ノードのMySQL8クラスターをセットアップする方法

MySQLは、無料のオープンソースのリレーショナルデータベース管理システムです。データウェアハウジング、eコマース、ロギングアプリケーションなど、さまざまな目的でデータを保存するために使用されます。 MySQL Clusterは、スケーラビリティと可用性を低コストで提供するテクノロジーです。

このチュートリアルでは、1つのマスターノードを使用してクラスターの構成を保存し、2つのデータノードを使用してクラスターデータを保存します。各ノードのIPアドレスを以下に示します。

  • マスターノードまたはマネージャーノード-104.245.33.61
  • データノード1-104.245.32.195
  • データノード2-69.87.218.169
前提条件
  • Debian 10を実行している3台のサーバー(1台はマネージャーノード用、その他はデータノード用)。
  • ルートパスワードは各サーバーに設定されています。
はじめに

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

apt-get update -y

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

MySQLClusterManagerのインストールとセットアップ

まず、マスターノードにMySQLクラスター管理パッケージをインストールする必要があります。デフォルトでは、このパッケージはDebian10のデフォルトリポジトリに含まれていません。そのため、MySQLの公式Webサイトからダウンロードする必要があります。

次のコマンドでダウンロードできます:

wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb

debファイルをダウンロードしたら、次のコマンドを使用してインストールします。

dpkg -i mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb

インストールが完了したら、次のコマンドを使用してクラスター構成を保存するディレクトリを作成します。

mkdir /var/lib/mysql-cluster

次に、次のコマンドを使用して新しい構成ファイルを作成します。

nano /var/lib/mysql-cluster/config.ini

次の行を追加します:

[ndbd default]
NoOfReplicas=2  # Number of replicas

[ndb_mgmd]
# Management process options:
hostname=104.245.33.61 #IP of the MySQL Cluster Manager
datadir=/var/lib/mysql-cluster
[ndbd]
hostname=104.245.32.195 #IP of the first data node
NodeId=2            # Node ID for this data node
datadir=/usr/local/mysql/data   # Remote directory for the data files
[ndbd]
hostname=69.87.218.169 #IP of the second data node
NodeId=3            # Node ID for this data node
datadir=/usr/local/mysql/data   # Remote directory for the data files
[mysqld]
# SQL node options:
hostname=104.245.33.61 #IP of the MySQL Cluster Manager

終了したらファイルを保存して閉じ、次のコマンドでクラスタマネージャを起動します。

ndb_mgmd -f /var/lib/mysql-cluster/config.ini

次の出力が得られるはずです:

MySQL Cluster Management Server mysql-8.0.24 ndb-8.0.24
2021-05-10 08:23:05 [MgmtSrvr] INFO     -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2021-05-10 08:23:05 [MgmtSrvr] INFO     -- Sucessfully created config directory

次に、次のコマンドで実行中のサーバーを強制終了します。

pkill -f ndb_mgmd

次に、MySQLClusterManagerがサービスを管理するためのsystemdサービスファイルを作成します。

nano /etc/systemd/system/ndb_mgmd.service

次の行を追加します:

[Unit]
Description=MySQL NDB Cluster Management Server
After=network.target auditd.service
[Service]
Type=forking
ExecStart=/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

ファイルを保存して閉じてから、次のコマンドを使用してsystemdデーモンをリロードします。

systemctl daemon-reload

次に、次のコマンドを使用して、クラスタマネージャを起動し、システムの再起動時に起動できるようにします。

systemctl start ndb_mgmd
systemctl enable ndb_mgmd

これで、次のコマンドを使用してサービスのステータスを確認できます。

systemctl status ndb_mgmd

次の出力が得られるはずです:

    ? ndb_mgmd.service - MySQL NDB Cluster Management Server
   Loaded: loaded (/etc/systemd/system/ndb_mgmd.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-05-10 08:23:53 UTC; 6s ago
  Process: 984 ExecStart=/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini (code=exited, status=0/SUCCESS)
 Main PID: 985 (ndb_mgmd)
    Tasks: 12 (limit: 2359)
   Memory: 6.5M
   CGroup: /system.slice/ndb_mgmd.service
           ??985 /usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini

May 10 08:23:53 master systemd[1]: Starting MySQL NDB Cluster Management Server...
May 10 08:23:53 master ndb_mgmd[984]: MySQL Cluster Management Server mysql-8.0.24 ndb-8.0.24
May 10 08:23:53 master systemd[1]: Started MySQL NDB Cluster Management Server.

終了したら、次のステップに進むことができます。

データノードのインストールと構成

次に、他のサーバー上のデータノードパッケージを作成し、MySQLClusterManagerと通信するように構成します。

まず、次のコマンドを使用して、両方のデータノードに必要な依存関係をインストールします。

apt-get install libclass-methodmaker-perl -y

すべての依存関係がインストールされたら、次のコマンドを使用して最新バージョンのMySQL DataNodesdebファイルをダウンロードします。

wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-community-data-node_8.0.24-1debian10_amd64.deb

ダウンロードが完了したら、次のコマンドを使用してダウンロードしたファイルをインストールします。

dpkg -i mysql-cluster-community-data-node_8.0.24-1debian10_amd64.deb

デフォルトでは、データノードはすべての構成を/etc/my.cnfファイルに保存します。

したがって、次のコマンドを使用して、両方のデータノードに新しい/etc/my.cnfファイルを作成します。

nano /etc/my.cnf

以下に示すように、クラスターIPを追加します。

[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=104.245.33.61 #IP of the MySQL Cluster Manager

ファイルを保存して閉じてから、両方のデータノードにデータディレクトリを作成します。

mkdir -p /usr/local/mysql/data

次に、次のコマンドでデータノードを起動します。

ndbd

次の出力が得られるはずです:

2021-05-10 08:27:13 [ndbd] INFO     -- Angel connected to '104.245.33.61:1186'
2021-05-10 08:27:13 [ndbd] INFO     -- Angel allocated nodeid: 2

次に、次のコマンドを使用して、実行中のndbdプロセスを強制終了します。

pkill -f ndbd

次に、次のコマンドを使用して、両方のデータノードでndbdのsystemdサービスファイルを作成します。

nano /etc/systemd/system/ndbd.service

次の行を追加します:

[Unit]
Description=MySQL NDB Data Node Daemon
After=network.target auditd.service
[Service]
Type=forking
ExecStart=/usr/sbin/ndbd
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

ファイルを保存して閉じてから、次のコマンドを使用してsystemdデーモンをリロードします。

systemctl daemon-reload

次に、ndbdサービスを開始し、次のコマンドを使用してシステムの再起動時に開始するようにします。

systemctl start ndbd
systemctl enable ndbd

次のコマンドを使用して、ndbdサービスのステータスを確認することもできます。

systemctl status ndbd

次の出力が得られるはずです:

? ndbd.service - MySQL NDB Data Node Daemon
   Loaded: loaded (/etc/systemd/system/ndbd.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-05-10 08:28:28 UTC; 12s ago
  Process: 740 ExecStart=/usr/sbin/ndbd (code=exited, status=0/SUCCESS)
 Main PID: 741 (ndbd)
    Tasks: 46 (limit: 2359)
   Memory: 827.1M
   CGroup: /system.slice/ndbd.service
           ??741 /usr/sbin/ndbd
           ??742 /usr/sbin/ndbd

May 10 08:28:28 data1 systemd[1]: Starting MySQL NDB Data Node Daemon...
May 10 08:28:28 data1 ndbd[740]: 2021-05-10 08:28:28 [ndbd] INFO     -- Angel connected to '104.245.33.61:1186'
May 10 08:28:28 data1 ndbd[740]: 2021-05-10 08:28:28 [ndbd] INFO     -- Angel allocated nodeid: 2
May 10 08:28:28 data1 systemd[1]: Started MySQL NDB Data Node Daemon.

MySQLサーバーのインストールと構成

次に、MySQLサーバーおよびクライアントパッケージをダウンロードして、MySQLClusterManagerノードにインストールします。

まず、次のコマンドを使用して、MySQLClusterBundleの最新バージョンをダウンロードします。

wget https://cdn.mysql.com/Downloads/MySQL-Cluster-8.0/mysql-cluster_8.0.24-1debian10_amd64.deb-bundle.tar

次に、次のコマンドを使用して、ダウンロードしたファイルを/optディレクトリ内に抽出します。

tar -xvf mysql-cluster_8.0.24-1debian10_amd64.deb-bundle.tar -C /opt

次に、ディレクトリを/ optに変更し、次のコマンドを使用して必要な依存関係をインストールします。

cd /opt
apt-get install libaio1 libmecab2 libnuma1 psmisc -y

次に、次のコマンドを使用してMySQLCommondebファイルをインストールします。

dpkg -i mysql-common*

次に、次のコマンドを使用してMySQLクライアントパッケージをインストールします。

dpkg -i mysql-cluster-community-client_8.0.24-1debian10_amd64.deb mysql-cluster-community-client-core_8.0.24-1debian10_amd64.deb mysql-cluster-community-client-plugins_8.0.24-1debian10_amd64.deb
dpkg -i mysql-client_8.0.24-1debian10_amd64.deb
dpkg -i mysql-cluster-community-server*

依存関係エラーが発生した場合は、次のコマンドを実行します。

apt-get install -f

次に、次のコマンドを使用してMySQLServerパッケージをインストールします。

dpkg -i mysql-server_8.0.24-1debian10_amd64.deb

インストール中に、MySQLのrootパスワードを設定するように求められます。

MySQLサーバーをインストールした後、MySQLメイン構成ファイルを編集してクラスターIPを定義する必要があります。

nano /etc/mysql/my.cnf

次の行を追加します:

[mysqld]
# Options for mysqld process:
ndbcluster                      # run NDB storage engine
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=104.245.33.61  #IP of the MySQL Cluster Manager

終了したら、ファイルを保存して閉じます。次に、MySQLサービスを再起動し、システムの再起動時に開始できるようにします。

systemctl restart mysql
systemctl enable mysql

次のコマンドを使用して、MySQLサーバーのステータスを確認できます。

systemctl status mysql

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

? mysql.service - MySQL Cluster Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-05-10 08:35:04 UTC; 7s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 1950 ExecStartPre=/usr/share/mysql-8.0/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 1985 (mysqld)
   Status: "Server is operational"
    Tasks: 47 (limit: 2359)
   Memory: 372.0M
   CGroup: /system.slice/mysql.service
           ??1985 /usr/sbin/mysqld

May 10 08:35:01 master systemd[1]: Starting MySQL Cluster Community Server...
May 10 08:35:04 master systemd[1]: Started MySQL Cluster Community Server.

終了したら、次のステップに進むことができます。

MySQLクラスターのテスト

これで、3ノードのMySQLクラスターが正常にインストールおよび構成されました。次に、それが機能しているかどうかを確認する必要があります。

まず、MySQL Cluster Managerノードにログインし、次のコマンドを使用してMySQLにログインします。

mysql -u root -p

MySQLルートパスワードを入力し、次のコマンドでクラスター情報を確認します。

mysql> SHOW ENGINE NDB STATUS \G

すべてが正常であれば、次の出力が得られるはずです:

*************************** 1. row ***************************
  Type: ndbclus
  Name: connection
Status: cluster_node_id=4, connected_host=104.245.33.61, connected_port=1186, number_of_data_nodes=2, number_of_ready_data_nodes=2, connect_count=0
*************************** 2. row ***************************
  Type: ndbclus
  Name: NdbTransaction
Status: created=2, free=2, sizeof=392
*************************** 3. row ***************************
  Type: ndbclus
  Name: NdbOperation
Status: created=4, free=4, sizeof=944
*************************** 4. row ***************************
  Type: ndbclus
  Name: NdbIndexScanOperation
Status: created=0, free=0, sizeof=1152
*************************** 5. row ***************************
  Type: ndbclus
  Name: NdbIndexOperation
Status: created=0, free=0, sizeof=952
*************************** 6. row ***************************
  Type: ndbclus
  Name: NdbRecAttr
Status: created=0, free=0, sizeof=88
*************************** 7. row ***************************
  Type: ndbclus
  Name: NdbApiSignal
Status: created=16, free=16, sizeof=144
*************************** 8. row ***************************
  Type: ndbclus
  Name: NdbLabel
Status: created=0, free=0, sizeof=200
*************************** 9. row ***************************
  Type: ndbclus
  Name: NdbBranch
Status: created=0, free=0, sizeof=32
*************************** 10. row ***************************
  Type: ndbclus
  Name: NdbSubroutine
Status: created=0, free=0, sizeof=72
*************************** 11. row ***************************
  Type: ndbclus
  Name: NdbCall
Status: created=0, free=0, sizeof=24
*************************** 12. row ***************************
  Type: ndbclus
  Name: NdbBlob
Status: created=0, free=0, sizeof=592
*************************** 13. row ***************************
  Type: ndbclus
  Name: NdbReceiver
Status: created=0, free=0, sizeof=128
*************************** 14. row ***************************
  Type: ndbclus
  Name: NdbLockHandle
Status: created=0, free=0, sizeof=48
*************************** 15. row ***************************
  Type: ndbclus
  Name: binlog
Status: latest_epoch=897648164875, latest_trans_epoch=820338753551, latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0, latest_applied_binlog_epoch=0
15 rows in set (0.00 sec)

次に、次のコマンドを使用してMySQLシェルを終了します。

mysql> exit

次に、別のテストを実行して、クラスターが正しく機能していることを確認します。

次のコマンドを使用して、クラスタ管理コンソールを接続します。

ndb_mgm

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

-- NDB Cluster -- Management Client --
ndb_mgm>

次に、次のコマンドを実行して、すべてのデータをチェックします。

ndb_mgm> SHOW

次の出力が得られるはずです:

Connected to Management Server at: 104.245.33.61:1186
Cluster Configuration
---------------------
[ndbd(NDB)]	2 node(s)
id=2	@104.245.32.195  (mysql-8.0.24 ndb-8.0.24, Nodegroup: 0, *)
id=3	@69.87.218.169  (mysql-8.0.24 ndb-8.0.24, Nodegroup: 0)

[ndb_mgmd(MGM)]	1 node(s)
id=1	@104.245.33.61  (mysql-8.0.24 ndb-8.0.24)

[mysqld(API)]	1 node(s)
id=4	@104.245.33.61  (mysql-8.0.24 ndb-8.0.24)

最初のデータノードのステータスを確認するには、次のコマンドを実行します。

ndb_mgm> 2 STATUS

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

Node 2: started (mysql-8.0.24 ndb-8.0.24)

2番目のデータノードのステータスを確認するには、次のコマンドを実行します。

ndb_mgm> 3 STATUS

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

Node 3: started (mysql-8.0.24 ndb-8.0.24)
結論

おめでとう!これで、Debian10サーバーに3ノードのMySQLクラスターが正常にインストールおよびセットアップされました。これで、本番環境でこのセットアップを使用して、スケーラビリティと可用性を実現できます。


Debian
  1. Percona XtraDB ClusterforMySQLをDebian8にインストールする方法

  2. Debian10にosqueryをインストールする方法

  3. Debian11でRsyslogサーバーをセットアップする方法

  1. Debianでvsftpdをセットアップする方法

  2. MySQLをDebian9にインストールする方法

  3. MySQLをDebian11にインストールする方法

  1. Debian11にCockroachDBクラスタをインストールする方法

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

  3. Debian10にApacheSparkClusterComputingFrameworkをインストールする方法