Skip to content

Commit 10d8c27

Browse files
JustaCattthLinx
authored andcommitted
feat(frontend): 工具箱支持资源池协议变更_mysql迁移升级问题处理、mysql新机重建新从机ip重复校验 #8076
# Reviewed, transaction id: 32173
1 parent 8eac611 commit 10d8c27

File tree

15 files changed

+311
-95
lines changed

15 files changed

+311
-95
lines changed

dbm-ui/frontend/src/locales/zh-cn.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4135,5 +4135,8 @@
41354135
"退回资源池": "退回资源池",
41364136
"主机回收": "主机回收",
41374137
"版本升级:主从接入层和单节点采用原地升级,存储层小版本升级采用原地升级(注意:暂不支持一主多从),大版本需提供新机迁移方式执行。同一主机所有关联集群将一并同步升级": "版本升级:主从接入层和单节点采用原地升级,存储层小版本升级采用原地升级(注意:暂不支持一主多从),大版本需提供新机迁移方式执行。同一主机所有关联集群将一并同步升级",
4138+
"集群无只读主机": "集群无只读主机",
4139+
"IP 重复": "IP 重复",
4140+
"新只读主机不能为空": "新只读主机不能为空",
41384141
"这行勿动!新增翻译请在上一行添加!": ""
41394142
}

dbm-ui/frontend/src/views/db-manage/common/toolbox-field/column/single-resource-host-column/Index.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,23 +87,23 @@
8787

8888
const rules = [
8989
{
90-
validator: (value: string) => ipv4.test(value),
9190
message: t('IP 格式不符合IPv4标准'),
9291
trigger: 'change',
92+
validator: (value: string) => ipv4.test(value),
9393
},
9494
{
95-
validator: (value: string) => value.split(batchSplitRegex).length <= limit,
9695
message: t('最多输入n个主机IP', { n: limit }),
9796
trigger: 'blur',
97+
validator: (value: string) => value.split(batchSplitRegex).length <= limit,
9898
},
9999
{
100-
validator: () => Boolean(modelValue.value.bk_host_id),
101100
message: t('目标主机不存在'),
102101
trigger: 'blur',
102+
validator: () => Boolean(modelValue.value.bk_host_id),
103103
},
104104
];
105105

106-
const { run: queryHost, loading } = useRequest(fetchList, {
106+
const { loading, run: queryHost } = useRequest(fetchList, {
107107
manual: true,
108108
onSuccess: (data) => {
109109
const [currentHost] = data.results;

dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_PROXY_UPGRADE/Create.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@
3232
<BkRadioGroup
3333
v-model="formData.roleType"
3434
style="width: 450px"
35-
type="card">
35+
type="card"
36+
@change="handleChange">
3637
<BkRadioButton label="haAccessLayer">
3738
{{ t('主从 - 接入层') }}
3839
</BkRadioButton>
@@ -101,6 +102,10 @@
101102
}
102103
return HaStorageLayerRemote;
103104
});
105+
106+
const handleChange = () => {
107+
formData.updateType = 'local';
108+
};
104109
</script>
105110

106111
<style lang="less" scoped>

dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_PROXY_UPGRADE/components/TargetVersionColumn.vue

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
ref="moduleSelectRef"
8181
is-plain
8282
:list="moduleSelectList"
83-
:model-value="modelValue.target_package"
83+
:model-value="modelValue.new_db_module_id"
8484
:placeholder="t('请选择')"
8585
:pop-width="240"
8686
:rules="moduleRules"
@@ -163,9 +163,15 @@
163163
master_domain: string;
164164
}[];
165165
};
166+
/**
167+
* 代表是否跨版本升级, 默认false
168+
*/
169+
higherMajorVersion?: boolean;
166170
}
167171

168-
const props = defineProps<Props>();
172+
const props = withDefaults(defineProps<Props>(), {
173+
higherMajorVersion: false,
174+
});
169175

170176
const modelValue = defineModel<{
171177
charset: string;
@@ -236,6 +242,8 @@
236242
target_package: lastestVersion.pkg_name,
237243
target_version: lastestVersion.version,
238244
};
245+
246+
fetchModuleList();
239247
}
240248
},
241249
});
@@ -245,35 +253,38 @@
245253
onSuccess(modules) {
246254
const currentModule = modules.find((moduleItem) => moduleItem.db_module_id === props.cluster.db_module_id);
247255
if (currentModule) {
248-
const currentCharset = currentModule.db_module_info.conf_items.find(
249-
(confItem) => confItem.conf_name === 'charset',
250-
)!.conf_value;
251-
modelValue.value.charset = currentCharset;
256+
modelValue.value.charset = currentModule.db_module_info.conf_items[0]?.conf_value;
257+
258+
moduleSelectList.value = modules
259+
.filter((item) => item.db_module_info.conf_items[1].conf_value === modelValue.value.target_version)
260+
.map((item) => ({
261+
...item,
262+
id: item.db_module_id,
263+
}));
264+
modelValue.value.new_db_module_id = moduleSelectList.value[0]?.id;
265+
modelValue.value.target_module_name = moduleSelectList.value[0]?.name;
252266
}
253267
},
254268
});
255269

256-
const fetchModuleList = () => {
270+
function fetchModuleList() {
257271
if (props.cluster) {
258272
fetchModules({
259273
bk_biz_id: bizId,
260274
cluster_type: props.cluster.cluster_type,
261275
});
262276
}
263-
};
277+
}
264278

265279
watch(
266280
() => props.cluster,
267281
() => {
268282
if (props.cluster.id) {
269283
queryMysqlHigherVersionPkgListRun({
270284
cluster_id: props.cluster.id,
271-
higher_major_version: false,
285+
higher_major_version: props.higherMajorVersion,
272286
});
273287
}
274-
if (props.cluster.cluster_type) {
275-
fetchModuleList();
276-
}
277288
},
278289
{
279290
immediate: true,
@@ -282,7 +293,6 @@
282293

283294
const handleVersionChange = (value: string) => {
284295
modelValue.value.target_version = value;
285-
modelValue.value.new_db_module_id = '';
286296
fetchModuleList();
287297
};
288298

@@ -299,6 +309,7 @@
299309

300310
const handleModuleChange = (value: number) => {
301311
modelValue.value.new_db_module_id = value;
312+
modelValue.value.target_module_name = moduleSelectList.value.find((item) => item.id === value)?.name || '';
302313
};
303314

304315
const handleCreateModule = () => {

dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_PROXY_UPGRADE/ha-access-layer/Index.vue

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,9 @@
130130
formData.tableData
131131
.filter((item) => item.cluster.id)
132132
.reduce<Record<string, true>>((acc, cur) => {
133-
// eslint-disable-next-line no-param-reassign
134-
acc[cur.cluster.master_domain] = true;
133+
Object.assign(acc[cur.cluster.master_domain], true);
135134
cur.cluster.related_clusters.forEach((item) => {
136-
// eslint-disable-next-line no-param-reassign
137-
acc[item.master_domain] = true;
135+
Object.assign(acc[item.master_domain], true);
138136
});
139137
return acc;
140138
}, {}),

dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_PROXY_UPGRADE/ha-storage-layer-local/Index.vue

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,9 @@
138138
formData.tableData
139139
.filter((item) => item.cluster.id)
140140
.reduce<Record<string, true>>((acc, cur) => {
141-
// eslint-disable-next-line no-param-reassign
142-
acc[cur.cluster.master_domain] = true;
141+
Object.assign(acc[cur.cluster.master_domain], true);
143142
cur.cluster.related_clusters.forEach((item) => {
144-
// eslint-disable-next-line no-param-reassign
145-
acc[item.master_domain] = true;
143+
Object.assign(acc[item.master_domain], true);
146144
});
147145
return acc;
148146
}, {}),

dbm-ui/frontend/src/views/db-manage/mysql/MYSQL_PROXY_UPGRADE/ha-storage-layer-remote/Index.vue

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
v-if="!item.cluster.id"
4949
:placeholder="t('自动生成')" />
5050
<EditableBlock
51-
v-else-if="item.cluster.id && !item.cluster.readonly_host.bk_host_id"
51+
v-else-if="item.cluster.id && !item.cluster.readonly_host"
5252
:placeholder="t('无只读主机')" />
5353
<EditableBlock
5454
v-else
@@ -57,7 +57,8 @@
5757
<CurrentVersionColumn :cluster="item.cluster" />
5858
<TargetVersionColumn
5959
v-model="item.target_version"
60-
:cluster="item.cluster" />
60+
:cluster="item.cluster"
61+
higher-major-version />
6162
<MultipleResourceHostColumn
6263
v-model="item.new_master_slave_host"
6364
field="new_master_slave_host"
@@ -68,15 +69,9 @@
6869
for_bizs: [currentBizId, 0],
6970
resource_types: [DBTypes.MYSQL, 'PUBLIC'],
7071
}" />
71-
<SingleResourceHostColumn
72+
<NewReadonlyHostColumn
7273
v-model="item.new_readonly_host"
73-
field="new_readonly_host.ip"
74-
:label="t('新只读主机')"
75-
:min-width="200"
76-
:params="{
77-
for_bizs: [currentBizId, 0],
78-
resource_types: [DBTypes.MYSQL, 'PUBLIC'],
79-
}" />
74+
:cluster="item.cluster" />
8075
<OperationColumn
8176
v-model:table-data="formData.tableData"
8277
:create-row-method="createTableRow" />
@@ -120,7 +115,6 @@
120115
import { DBTypes, TicketTypes } from '@common/const';
121116

122117
import MultipleResourceHostColumn from '@views/db-manage/common/toolbox-field/column/multiple-resource-host-column/Index.vue';
123-
import SingleResourceHostColumn from '@views/db-manage/common/toolbox-field/column/single-resource-host-column/Index.vue';
124118
import BackupSource from '@views/db-manage/common/toolbox-field/form-item/backup-source/Index.vue';
125119
import IgnoreBiz from '@views/db-manage/common/toolbox-field/form-item/ignore-biz/Index.vue';
126120
import TicketPayload, {
@@ -131,6 +125,8 @@
131125
import HaClusterColumn from '../components/HaClusterColumn.vue';
132126
import TargetVersionColumn from '../components/TargetVersionColumn.vue';
133127

128+
import NewReadonlyHostColumn from './components/NewReadonlyHostColumn.vue';
129+
134130
interface IHostData {
135131
bk_biz_id: number;
136132
bk_cloud_id: number;
@@ -223,11 +219,9 @@
223219
formData.tableData
224220
.filter((item) => item.cluster.id)
225221
.reduce<Record<string, true>>((acc, cur) => {
226-
// eslint-disable-next-line no-param-reassign
227-
acc[cur.cluster.master_domain] = true;
222+
Object.assign(acc[cur.cluster.master_domain], true);
228223
cur.cluster.related_clusters.forEach((item) => {
229-
// eslint-disable-next-line no-param-reassign
230-
acc[item.master_domain] = true;
224+
Object.assign(acc[item.master_domain], true);
231225
});
232226
return acc;
233227
}, {}),
@@ -330,12 +324,14 @@
330324
},
331325
new_db_module_id: item.target_version.new_db_module_id,
332326
pkg_id: item.target_version.pkg_id,
333-
read_only_slaves: [
334-
{
335-
new_slave: item.new_readonly_host,
336-
old_slave: item.cluster.readonly_host,
337-
},
338-
],
327+
read_only_slaves: item.cluster.readonly_host
328+
? [
329+
{
330+
new_slave: item.new_readonly_host,
331+
old_slave: item.cluster.readonly_host,
332+
},
333+
]
334+
: [],
339335
resource_spec: {
340336
new_master: {
341337
hosts: [item.new_master_slave_host[0]],

0 commit comments

Comments
 (0)