我正在尝试在 aws 自动缩放组中设置 mysql 集群。我从两个 ec2 实例开始,每个实例都有自己的管理 (ndb_mgmd)、数据 (ndbmtd) 和 sql (mysqld) 节点。向外扩展时(我已经配置了工作正常的实时向外扩展),它会再添加两个 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)