aws autoscaling グループ内で mysql クラスターをセットアップしようとしています。それぞれ独自の管理 (ndb_mgmd)、データ (ndbmtd)、および sql (mysqld) ノードを持つ 2 つの ec2 インスタンスから始めています。スケールアウトすると (正常に動作するライブ スケールアウトを構成しました)、さらに 2 つの ec2 インスタンスが追加され (ndbd のレプリケーション数が 2 に設定されているため)、新しいノードグループが作成されます。
スケールイン イベント中に aws がシャットダウンするインスタンスを正確に制御できないため、常にノードグループ全体が削除され、クラスターが無効になり、クラスターがクラッシュします。
私が見るところ、mysql クラスターは実際にはオンラインでスケールインするようには設計されていませんが、メンテナンスのためにシステム全体をダウンさせずにこれを達成する方法はありますか? アイデアは、スケールアウト中にクラスターに新しい同一のインスタンスを追加し、AWS 自動スケーリング グループによって起動されたスケールイン イベント中にインスタンスを削除することです。
詳細を見逃していたら教えてください、乾杯!
これは、初期設定がどのように見えるかです:
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=1 @10.0.0.149 (mysql-5.6.31 ndb-7.4.12, Nodegroup: 0, *)
id=2 @10.0.0.81 (mysql-5.6.31 ndb-7.4.12, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=101 @10.0.0.149 (mysql-5.6.31 ndb-7.4.12)
id=102 @10.0.0.81 (mysql-5.6.31 ndb-7.4.12)
[mysqld(API)] 2 node(s)
id=51 @10.0.0.149 (mysql-5.6.31 ndb-7.4.12)
id=52 @10.0.0.81 (mysql-5.6.31 ndb-7.4.12)
これは、同じクラスター (+2 インスタンス) のスケールアウト バージョンの例です。
Cluster Configuration
---------------------
[ndbd(NDB)] 4 node(s)
id=1 @10.0.0.149 (mysql-5.6.31 ndb-7.4.12, Nodegroup: 0, *)
id=2 @10.0.0.81 (mysql-5.6.31 ndb-7.4.12, Nodegroup: 0)
id=3 @10.0.0.151 (mysql-5.6.31 ndb-7.4.12, Nodegroup: 1)
id=4 @10.0.0.83 (mysql-5.6.31 ndb-7.4.12, Nodegroup: 1)
[ndb_mgmd(MGM)] 4 node(s)
id=101 @10.0.0.149 (mysql-5.6.31 ndb-7.4.12)
id=102 @10.0.0.81 (mysql-5.6.31 ndb-7.4.12)
id=103 @10.0.0.151 (mysql-5.6.31 ndb-7.4.12)
id=104 @10.0.0.83 (mysql-5.6.31 ndb-7.4.12)
[mysqld(API)] 4 node(s)
id=51 @10.0.0.149 (mysql-5.6.31 ndb-7.4.12)
id=52 @10.0.0.81 (mysql-5.6.31 ndb-7.4.12)
id=53 @10.0.0.151 (mysql-5.6.31 ndb-7.4.12)
id=54 @10.0.0.83 (mysql-5.6.31 ndb-7.4.12)