diff --git a/dbm-ui/frontend/src/locales/zh-cn.json b/dbm-ui/frontend/src/locales/zh-cn.json
index 9951c01221..2d84b502d0 100644
--- a/dbm-ui/frontend/src/locales/zh-cn.json
+++ b/dbm-ui/frontend/src/locales/zh-cn.json
@@ -3462,7 +3462,6 @@
"时间戳类型(timestamp)": "时间戳类型(timestamp)",
"整型(int)": "整型(int)",
"整型(bigint)": "整型(bigint)",
- "新proxy主机": "新proxy主机",
"开启弱密码检测": "开启弱密码检测",
"开启后,不允许超过 x 位连续字符,如出现以下示例密码将无法通过检测": "开启后,不允许超过 {x} 位连续字符,如出现以下示例密码将无法通过检测",
"连续键盘序_如_xx": "连续键盘序,如:{0}",
@@ -3939,5 +3938,15 @@
"Master 至少保留 2 台 ,Slave 至少 保留 1台": "Master 至少保留 2 台 ,Slave 至少 保留 1台",
"请先选择集群和缩容节点类型": "请先选择集群和缩容节点类型",
"手动选择主机不需要设置缩容数量": "手动选择主机不需要设置缩容数量",
+ "只迁移目标集群": "只迁移目标集群",
+ "集群迁移": "集群迁移",
+ "主机关联的所有集群一并迁移": "主机关联的所有集群一并迁移",
+ "新Master主机": "新 Master 主机",
+ "新Slave主机": "新 Slave 主机",
+ "请输入集群域名,多个集群换行输入": "请输入集群域名,多个集群换行输入",
+ "目标集群xx不存在": "目标集群 {0} 不存在",
+ "目标集群xx重复": "目标集群 {0} 重复",
+ "目标Master主机": "目标 Master 主机",
+ "请输入集群域名_多个集群用分隔符输入": "请输入集群域名,多个集群用分隔符输入",
"这行勿动!新增翻译请在上一行添加!": ""
}
diff --git a/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/Create.vue b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/Create.vue
index e751f05caa..0a35cd81f5 100644
--- a/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/Create.vue
+++ b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/Create.vue
@@ -19,35 +19,34 @@
:title="
t('迁移主从:集群主从实例将成对迁移至新机器。默认迁移同机所有关联集群,也可迁移部分集群,迁移会下架旧实例')
" />
+
+
+ {{ t('迁移类型') }}
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+ :data="formData.tableData" />
@@ -73,164 +72,79 @@
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/components/ClusterColumn.vue b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/components/ClusterColumn.vue
new file mode 100644
index 0000000000..93655f5fac
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/components/ClusterColumn.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/components/ClusterMigrateTable.vue b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/components/ClusterMigrateTable.vue
new file mode 100644
index 0000000000..d486356118
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/components/ClusterMigrateTable.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/components/HostColumnGroup.vue b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/components/HostColumnGroup.vue
new file mode 100644
index 0000000000..5760d4b972
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/components/HostColumnGroup.vue
@@ -0,0 +1,237 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/components/HostMigrateTable.vue b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/components/HostMigrateTable.vue
new file mode 100644
index 0000000000..1a5e24262c
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/components/HostMigrateTable.vue
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/types.ts b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/types.ts
new file mode 100644
index 0000000000..c2b18dae2d
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_MIGRATE_CLUSTER/types.ts
@@ -0,0 +1,27 @@
+/**
+ * CLUSTER_MIGRATE: 集群迁移
+ * HOST_MIGRATE: 整机迁移
+ */
+export enum MigrateTypes {
+ CLUSTER_MIGRATE = 'CLUSTER_MIGRATE',
+ HOST_MIGRATE = 'HOST_MIGRATE',
+}
+
+export interface TicketInfo {
+ cluster_ids: number[];
+ resource_spec: {
+ new_master: {
+ spec_id: 0;
+ hosts: {
+ bk_biz_id: number;
+ bk_cloud_id: number;
+ bk_host_id: number;
+ ip: string;
+ }[];
+ };
+ new_slave: TicketInfo['resource_spec']['new_master'];
+ };
+ display_info: {
+ type: MigrateTypes;
+ };
+}
diff --git a/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_PROXY_SWITCH/components/HostTable.vue b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_PROXY_SWITCH/components/HostTable.vue
index f750efd3f2..ff0a0e7f90 100644
--- a/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_PROXY_SWITCH/components/HostTable.vue
+++ b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_PROXY_SWITCH/components/HostTable.vue
@@ -127,6 +127,8 @@
() => {
if (props.data.length) {
tableData.value = [...props.data];
+ } else {
+ tableData.value = [createTableRow()];
}
},
);
diff --git a/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_PROXY_SWITCH/components/InstanceTable.vue b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_PROXY_SWITCH/components/InstanceTable.vue
index 83f7700aad..ab6c95a5f3 100644
--- a/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_PROXY_SWITCH/components/InstanceTable.vue
+++ b/dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_PROXY_SWITCH/components/InstanceTable.vue
@@ -127,6 +127,8 @@
() => {
if (props.data.length) {
tableData.value = [...props.data];
+ } else {
+ tableData.value = [createTableRow()];
}
},
);
diff --git a/dbm-ui/frontend/src/views/db-manage/mysql/common/edit-table-column/TendbhaCluster.vue b/dbm-ui/frontend/src/views/db-manage/mysql/common/edit-table-column/TendbhaCluster.vue
index cd8c1cf97b..a6027dac6e 100644
--- a/dbm-ui/frontend/src/views/db-manage/mysql/common/edit-table-column/TendbhaCluster.vue
+++ b/dbm-ui/frontend/src/views/db-manage/mysql/common/edit-table-column/TendbhaCluster.vue
@@ -29,12 +29,10 @@
-
-
-
+