Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qa-platform-ui
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QA
qa-platform-ui
Commits
0d084e3e
Commit
0d084e3e
authored
Oct 21, 2021
by
黎博
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
同步数据功能修改
parent
00573257
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
66 additions
and
29 deletions
+66
-29
effect.js
src/api/effect.js
+9
-0
k8s.js
src/api/k8s.js
+9
-0
DbSync.vue
src/views/effect/DbSync.vue
+48
-29
No files found.
src/api/effect.js
View file @
0d084e3e
...
...
@@ -87,3 +87,12 @@ export function synDataBase(dataInfo) {
params
:
dataInfo
})
}
// 新同步数据库接口
export
function
dbsyncNew
(
data
)
{
return
holmesRequest
({
url
:
'
/dbsync/new
'
,
method
:
'
post
'
,
data
})
}
src/api/k8s.js
View file @
0d084e3e
...
...
@@ -162,6 +162,15 @@ export function dbsync(data) {
})
}
// 新同步数据库接口
export
function
dbsyncNew
(
data
)
{
return
request
({
url
:
'
/dbsync/new
'
,
method
:
'
post
'
,
data
})
}
// jenkins构建控制台信息获取
export
function
dbsyncQuery
(
queryInfo
)
{
return
request
({
...
...
src/views/effect/DbSync.vue
View file @
0d084e3e
...
...
@@ -2,32 +2,33 @@
<div>
<el-alert
:closable=
"false"
title=
"同步说明"
type=
"info"
style=
"font-size: 13px;"
show-icon
>
<slot
name=
"description"
>
<p>
1. 同步是与线上库同步表结构和配置数据;
</p>
<p>
2. 同步表结构会将线上比本地多的表、字段、索引同步到本地,对于本地比线上多的表、字段、索引则不会删除。如果要删除本地多出的表结构,可以手动删除,或者取消【保留业务数据】后进行同步;
</p>
<p>
3. 同步配置数据会将线上比本地多的配置数据同步到本地,对于本地比上线多的配置数据则不会删除,对于本地被更新的配置数据,同步后会根据主键覆盖成线上配置;
</p>
<p>
4. 哪些表是配置数据参见 https://qa2.liangkebang.com/dbconfig/manager 中的Tables列;
</p>
<p>
5. 有特殊的配置数据需求可以联系测试组(比如需要将某个渠道的MD5 key修改成一个特殊值)。
</p>
<p>
1. 同步数据库是将线上的表结构和配置数据同步到测试库;
</p>
<p>
2. 保留业务数据的意思是仅将线上的表结构同步到测试库,但仍保留测试环境的业务数据;
</p>
</slot>
</el-alert>
<div
class=
"app-container"
style=
"width:1000px; margin:0 auto;"
>
<el-form
ref=
"dataForm"
:rules=
"rules"
:model=
"temp"
label-width=
"150px"
style=
"margin-bottom:15px"
>
<el-form-item
label=
"Namespace"
prop=
"namespace"
>
<el-select
v-model=
"temp.namespace"
placeholder=
"要同步
数据库的
环境"
filterable
clearable
style=
"width: 300px"
>
<el-select
v-model=
"temp.namespace"
placeholder=
"要同步
的数据库所在
环境"
filterable
clearable
style=
"width: 300px"
>
<el-option
v-for=
"item in namespaceList"
:value=
"item.name"
:label=
"item.name"
:key=
"item.name"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"数据库名称"
prop=
"dbName"
>
<el-select
v-model=
"temp.dbName"
filterable
clearable
style=
"width: 300px"
placeholder=
"要同步表结构及配置数据的数据库名称"
>
<el-form-item
label=
"数据库名"
prop=
"dbName"
>
<el-select
v-model=
"temp.dbName"
filterable
clearable
style=
"width: 300px"
placeholder=
"要同步的数据库名称"
@
change=
"dbChange"
>
<el-option
v-for=
"item in dbNameList"
:value=
"item"
:label=
"item"
:key=
"item"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"保留业务数据"
>
<el-form-item
label=
"表名:"
prop=
"tableName"
>
<el-select
v-model=
"temp.tableName"
placeholder=
"要同步的表名"
style=
"width:300px"
filterable
clearable
>
<el-option
v-for=
"item in tableList"
:key=
"item"
:label=
"item"
:value=
"item"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"是否保留业务数据"
>
<el-switch
v-model=
"temp.notDeleteBusinessData"
style=
"margin-right:280px"
/>
<span
是否保留当前已经存在的测试数据
/>
</el-form-item>
<el-form-item
label=
"使用备份数据"
>
<el-switch
v-model=
"temp.useCache"
/>
</el-form-item>
</el-form>
<div
style=
"margin-left:420px"
>
...
...
@@ -45,8 +46,8 @@
</
template
>
<
script
>
import
{
getNamespaceList
,
dbsync
,
dbsync
Query
}
from
'
@/api/k8s
'
import
{
getDataBaseList
}
from
'
@/api/effect
'
import
{
getNamespaceList
,
dbsyncQuery
}
from
'
@/api/k8s
'
import
{
getDataBaseList
,
getTableByDataBase
,
dbsyncNew
}
from
'
@/api/effect
'
import
{
getFormData
}
from
'
@/utils/tool
'
export
default
{
data
()
{
...
...
@@ -54,25 +55,30 @@ export default {
namespaceList
:
[],
// 数据库同步接口参数
syncData
:
{
dbNam
e
:
''
,
h
ost
:
''
,
p
ort
:
''
,
replaceDomain
:
false
,
notDeleteBusinessData
:
true
,
useCache
:
true
namespac
e
:
''
,
targetH
ost
:
''
,
targetP
ort
:
''
,
database
:
''
,
table
:
''
,
businessData
:
''
},
temp
:
{
namespace
:
''
,
dbName
:
''
,
notDeleteBusinessData
:
true
,
useCache
:
tru
e
tableName
:
''
,
notDeleteBusinessData
:
fals
e
},
desc
:
''
,
dbNameList
:
[],
tableList
:
[],
rules
:
{
namespace
:
[{
required
:
true
,
message
:
'
请选择环境
'
,
trigger
:
'
blur
'
}],
dbName
:
[
{
required
:
true
,
message
:
'
请输入数据库名称
'
,
trigger
:
'
blur
'
}
],
tableName
:
[{
required
:
true
,
message
:
'
请输入表名
'
,
trigger
:
'
blur
'
}],
notDeleteBusinessData
:
[
{
required
:
true
,
message
:
'
请选择是否保留业务数据
'
,
trigger
:
'
blur
'
}
]
},
buildNum
:
undefined
,
...
...
@@ -104,22 +110,35 @@ export default {
getDatabases
()
{
getDataBaseList
().
then
((
resp
)
=>
{
this
.
dbNameList
=
resp
.
data
.
data
this
.
dbNameList
.
unshift
(
'
all
'
)
})
},
// 数据库变更时
dbChange
()
{
this
.
tableList
=
[]
if
(
this
.
temp
.
dbName
===
'
all
'
)
{
this
.
tableList
.
push
(
'
all
'
)
}
else
{
getTableByDataBase
({
dbName
:
this
.
temp
.
dbName
}).
then
((
resp
)
=>
{
this
.
tableList
=
resp
.
data
.
data
})
}
},
// 同步数据库
sync
()
{
this
.
$refs
[
'
dataForm
'
].
validate
((
valid
)
=>
{
if
(
valid
)
{
this
.
syncData
.
namespace
=
this
.
temp
.
namespace
this
.
namespaceList
.
forEach
((
namespace
)
=>
{
if
(
namespace
.
name
===
this
.
temp
.
namespace
)
{
this
.
syncData
.
h
ost
=
namespace
.
mysqlHost
this
.
syncData
.
p
ort
=
namespace
.
mysqlPort
this
.
syncData
.
targetH
ost
=
namespace
.
mysqlHost
this
.
syncData
.
targetP
ort
=
namespace
.
mysqlPort
}
})
this
.
syncData
.
d
bNam
e
=
this
.
temp
.
dbName
this
.
syncData
.
notDeleteBusinessData
=
this
.
temp
.
notDeleteBusinessData
this
.
syncData
.
useCache
=
this
.
temp
.
useCache
dbsync
(
getFormData
(
this
.
syncData
)).
then
((
resp
)
=>
{
this
.
syncData
.
d
atabas
e
=
this
.
temp
.
dbName
this
.
syncData
.
table
=
this
.
temp
.
tableName
this
.
syncData
.
businessData
=
this
.
temp
.
notDeleteBusinessData
dbsync
New
(
getFormData
(
this
.
syncData
)).
then
((
resp
)
=>
{
this
.
descVisible
=
true
if
(
resp
.
data
.
data
!==
0
)
{
this
.
buildNum
=
resp
.
data
.
data
...
...
@@ -137,7 +156,7 @@ export default {
// 查询数据库同步进度
syncQuery
()
{
dbsyncQuery
({
jobName
:
'
sync_database_schema
'
,
jobName
:
'
db_sync
'
,
buildNum
:
this
.
buildNum
}).
then
((
resp
)
=>
{
if
(
resp
.
data
.
data
.
status
===
'
SUCCESS
'
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment