From e27dc74418e941880d1b00b89498be984c1a0c55 Mon Sep 17 00:00:00 2001 From: yksitu <1297650644@qq.com> Date: Wed, 16 Apr 2025 14:48:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(mysql):=20=E8=B0=83=E6=95=B4spider=E5=AF=B9?= =?UTF-8?q?clb=E8=AE=BF=E9=97=AE=E8=BF=9E=E6=8E=A5=E7=9A=84=E5=A4=84?= =?UTF-8?q?=E7=90=86=20#10072?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/cluster/tendbcluster/add_spider.py | 5 ++- .../api/cluster/tendbcluster/handler.py | 35 ++++++++++--------- .../flow/utils/spider/spider_db_meta.py | 17 ++++----- 3 files changed, 27 insertions(+), 30 deletions(-) diff --git a/dbm-ui/backend/db_meta/api/cluster/tendbcluster/add_spider.py b/dbm-ui/backend/db_meta/api/cluster/tendbcluster/add_spider.py index bd5f55acca..d96d862453 100644 --- a/dbm-ui/backend/db_meta/api/cluster/tendbcluster/add_spider.py +++ b/dbm-ui/backend/db_meta/api/cluster/tendbcluster/add_spider.py @@ -21,7 +21,7 @@ def add_spiders( cluster: Optional[Cluster], spiders: Optional[List], spider_role: Optional[TenDBClusterSpiderRole], - domain_entry: Optional[ClusterEntry] = None, + domain_entry_list: List[ClusterEntry], ): """ 添加spider节点元信息, 包括spider不同角色的添加 @@ -48,8 +48,7 @@ def add_spiders( # receiver是代表slave实例对象 shard_info.storage_instance_tuple.receiver.proxyinstance_set.add(*spiders_objs) - if not spider_role == TenDBClusterSpiderRole.SPIDER_MNT: - # 非运维节点添加域名映射 + for domain_entry in domain_entry_list: domain_entry.proxyinstance_set.add(*spiders_objs) # 直到这里才有明确的 db module diff --git a/dbm-ui/backend/db_meta/api/cluster/tendbcluster/handler.py b/dbm-ui/backend/db_meta/api/cluster/tendbcluster/handler.py index ffc1329391..9bb00a0a08 100644 --- a/dbm-ui/backend/db_meta/api/cluster/tendbcluster/handler.py +++ b/dbm-ui/backend/db_meta/api/cluster/tendbcluster/handler.py @@ -177,7 +177,7 @@ def add_spiders( spider_role: Optional[TenDBClusterSpiderRole], resource_spec: dict, is_slave_cluster_create: bool, - domain: str = None, + new_slave_domain: str = None, ): """ 对已有的集群添加spider的元信息 @@ -185,11 +185,11 @@ def add_spiders( @param cluster_id: 待关联的集群id @param creator: 提单的用户名称 @param spider_version: 待加入的spider版本号(包括小版本信息) - @param domain: 待关联的域名 @param add_spiders: 待加入的spider机器信息 @param spider_role: 待加入spider的角色 @param resource_spec: 待加入spider的规格 @param is_slave_cluster_create: 代表这次是否是添加从集群 + @param new_slave_domain: 如果是添加从集群场景,这里代表新的从域名信息 """ cluster = Cluster.objects.get(id=cluster_id) @@ -226,26 +226,29 @@ def add_spiders( # 新增的实例继承cluster集群的时区设置 spider_objs = api.proxy_instance.create(proxies=spiders, creator=creator, time_zone=cluster.time_zone) + cluster_entry_list = [] # 判断is_slave_cluster_create参数,如果是True则代表做从集群添加,需要添加从域名元信息;如果False则代表spider扩容 if is_slave_cluster_create: - api.cluster.tendbcluster.slave_cluster_create_pre_check(slave_domain=domain) - cluster_entry = ClusterEntry.objects.create( - cluster=cluster, - cluster_entry_type=ClusterEntryType.DNS, - entry=domain, - creator=creator, - role=ClusterEntryRole.SLAVE_ENTRY.value, - ) + api.cluster.tendbcluster.slave_cluster_create_pre_check(slave_domain=new_slave_domain) + cluster_entry_list = [ + ClusterEntry.objects.create( + cluster=cluster, + cluster_entry_type=ClusterEntryType.DNS, + entry=new_slave_domain, + creator=creator, + role=ClusterEntryRole.SLAVE_ENTRY.value, + ) + ] else: - if domain: - cluster_entry = cluster.clusterentry_set.get(entry=domain) - else: - # 运维节点添加不需要做域名映射 - cluster_entry = None + # 扩容spider的节点处理 + if spider_role == TenDBClusterSpiderRole.SPIDER_MASTER: + cluster_entry_list = list(cluster.clusterentry_set.filter(role=ClusterEntryRole.MASTER_ENTRY)) + elif spider_role == TenDBClusterSpiderRole.SPIDER_SLAVE: + cluster_entry_list = list(cluster.clusterentry_set.filter(role=ClusterEntryRole.SLAVE_ENTRY)) # 录入集群相关信息 api.cluster.tendbcluster.add_spiders( - cluster=cluster, spiders=spiders, domain_entry=cluster_entry, spider_role=spider_role + cluster=cluster, spiders=spiders, domain_entry_list=cluster_entry_list, spider_role=spider_role ) # spider主机转移模块、添加对应的服务实例 diff --git a/dbm-ui/backend/flow/utils/spider/spider_db_meta.py b/dbm-ui/backend/flow/utils/spider/spider_db_meta.py index 29e53d8483..f9e35a357b 100644 --- a/dbm-ui/backend/flow/utils/spider/spider_db_meta.py +++ b/dbm-ui/backend/flow/utils/spider/spider_db_meta.py @@ -15,7 +15,7 @@ from backend.db_meta.api.cluster.tendbcluster.handler import TenDBClusterClusterHandler from backend.db_meta.api.cluster.tendbcluster.remotedb_node_migrate import TenDBClusterMigrateRemoteDb -from backend.db_meta.enums import ClusterEntryRole, InstanceStatus, MachineType, TenDBClusterSpiderRole +from backend.db_meta.enums import InstanceStatus, MachineType, TenDBClusterSpiderRole from backend.db_meta.models import Cluster, ProxyInstance, StorageInstance from backend.flow.utils.dict_to_dataclass import dict_to_dataclass from backend.flow.utils.spider.spider_act_dataclass import ShardInfo @@ -89,16 +89,16 @@ def tendb_cluster_slave_apply(self): "cluster_id": self.global_data["cluster_id"], "creator": self.global_data["created_by"], "spider_version": self.global_data["spider_version"], - "domain": self.global_data["slave_domain"], "add_spiders": self.global_data["spider_slave_ip_list"], "spider_role": TenDBClusterSpiderRole.SPIDER_SLAVE, "resource_spec": self.global_data["resource_spec"], "is_slave_cluster_create": True, + "new_slave_domain": self.global_data["slave_domain"], } TenDBClusterClusterHandler.add_spiders(**kwargs) return True - def add_spider_nodes(self, spider_role: Optional[TenDBClusterSpiderRole], domain: str = None): + def add_spider_nodes(self, spider_role: Optional[TenDBClusterSpiderRole]): """ 对已有的TenDB cluster集群 (spider集群)扩容写入的公共方法 """ @@ -108,7 +108,6 @@ def add_spider_nodes(self, spider_role: Optional[TenDBClusterSpiderRole], domain "cluster_id": self.global_data["cluster_id"], "creator": self.global_data["created_by"], "spider_version": self.global_data["spider_version"], - "domain": domain, "add_spiders": self.global_data["spider_ip_list"], "spider_role": spider_role, "resource_spec": self.global_data.get("resource_spec") or default_spider_spec, @@ -121,17 +120,13 @@ def add_spider_slave_nodes_apply(self): """ 对已有的TenDB cluster集群 (spider集群)扩容spider-slave节点 """ - cluster = Cluster.objects.get(id=self.global_data["cluster_id"]) - slave_dns = cluster.clusterentry_set.get(role=ClusterEntryRole.SLAVE_ENTRY).entry - self.add_spider_nodes(spider_role=TenDBClusterSpiderRole.SPIDER_SLAVE, domain=slave_dns) + self.add_spider_nodes(spider_role=TenDBClusterSpiderRole.SPIDER_SLAVE) def add_spider_master_nodes_apply(self): """ 对已有的TenDB cluster集群 (spider集群)扩容spider-master节点 """ - cluster = Cluster.objects.get(id=self.global_data["cluster_id"]) - master_dns = cluster.clusterentry_set.get(role=ClusterEntryRole.MASTER_ENTRY).entry - self.add_spider_nodes(spider_role=TenDBClusterSpiderRole.SPIDER_MASTER, domain=master_dns) + self.add_spider_nodes(spider_role=TenDBClusterSpiderRole.SPIDER_MASTER) def reduce_spider_nodes_apply(self): """ @@ -159,7 +154,7 @@ def add_spider_mnt(self): """ 对已有的TenDB cluster集群 (spider集群)扩容spider-mnt节点 """ - self.add_spider_nodes(spider_role=TenDBClusterSpiderRole.SPIDER_MNT, domain=None) + self.add_spider_nodes(spider_role=TenDBClusterSpiderRole.SPIDER_MNT) def remote_switch(self): """