DATA-NODE管理接口
添加datanode节点
| 存储过程 | mysql.greatdb_add_datanode |
|---|---|
| 作用 | 添加一个新的数据节点。如果所在的 shard 不存在,同时创建 shard |
| 参数 | shard_name:数据节点所在的 shard 分组名称 node_name:数据节点的名称 hostname:数据节点实例所在机器的 hostname/ip port:数据节点实例的端口号 node_type:添加数据节点的类型 |
| 版本 | 5.0.8 |
当前支持 NODE_MGR 和 NODE_SINGLE 两种类型,NODE_SINGLE 表示 shard 中只有一个数据节点,此时无法保证数据的可靠性,不推荐线上环境使用;NODE_MGR 类型可以包含多个数据节点,节点间使用 mysql group_replication 进行数据同步和故障切换。
示例:
CALL `mysql`.`greatdb_add_datanode`('shard_name', 'node_name', 'hostname', port, 'type');
注意事项:
- 添加的 datanode 节点实例不能同时作为集群的其它节点使用
- 如果是 NODE_MGR 类型,节点实例需要事先配置参数 group_replication_local_address
- 需要保证节点的 gdb_zone_name 和 group_replication_zone_id 和集群中某一个机房 zone_name, zone_id 保持一致,否则无法添加成功。当然,如果节点类型为 NODE_SINGLE,无需配置 group_replication_zone_id。
- 同时需要注意的是,对于NODE_MGR类型的节点,配置的 group_replication_member_weigth 参数值会被重新计算并替换。其计算公式为
new_weigth = 节点所在的机房权重 * 10 + old_weight % 10,因此会存在两个问题。一是,如果同一个机房的两个节点分配配置为45,46,替换后值会一样,因此原始值最好保持为10的倍数,这样可以维持原始的大小顺序。另一个是,如果节点添加失败,或者添加后又执行了删除操作,上述两种情况下,如果重新add_datanode,可能会使用上一次替换后的值进行计算,则结果可能和用户预期的不一致,这种情况下,用户可以手动重新设置该值后,再重新加入集群。 - 向已存在的shard添加datanode,如果该shard正在做物理迁移任务,则禁止添加datanode;如果该shard上已经执行过物理迁移任务,会比较该datanode的gtid和执行物理迁移结束的import_gitd(即import tablespace对应的gtid)比较,该datanode不包含import_gitd,新的datanode默认会走clone流程。
关于禁止不同集群添加相同数据节点的说明【引入版本6.0.2】:
- 在sqlnode节点中引入了系统表,mysql.greatdb_history_datanodes,记录了历史所有添加过的数据节点的server_uuid,IP,和端口
- 在datanode节点中引入了系统表,mysql.greatdb_in_cluster_mark,记录了该数据节点是否曾经属于某个集群
- 如果sqlnode尝试添加datanode节点,添加过程失败,后续该节点可能也无法添加到其它集群
- 删除数据节点时,在sqlnode层面和datanode层面均不会清理上述系统表,其它集群仍无法添加该节点
- 添加数据节点时,如果datanode中曾经属于某个集群,此时禁止添加数据节点,报错【the datanode may in other cluster】
如果添加节点失败,并报错【the datanode may in other cluster】,此时如果确定节点不属于其它集群,可以登录数据节点,删除记录后再次尝试添加,步骤为:
- SET sql_log_bin=OFF; # 必须关闭binlog,否则会导致复制异常
- TRUNCATE TABLE mysql.greatdb_in_cluster_mark; # 或者执行 DELETE 也可
- SET sql_log_bin=ON;
执行mysql.greatdb_restore_shard_from_backup会对初始化的节点进行相同检查处理
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




