pull/382/head
midoks 2 years ago
parent 71dbf8e359
commit d2c74f2243
  1. 37
      plugins/migration_api/index.py
  2. 32
      plugins/migration_api/js/app.js

@ -99,9 +99,12 @@ class classApi:
os.remove(log_file)
plugins_dir = mw.getServerDir() + '/mdserver-web'
exe = "cd {0} && source bin/activate && nohup python3 plugins/migration_api/index.py bg_process &>{1} &".format(
exe = "cd {0} && source bin/activate && python3 plugins/migration_api/index.py bg_process &>{1} &".format(
plugins_dir, log_file_error)
mw.execShell(exe)
# mw.execShell(exe)
# os.system(exe)
subprocess.Popen(exe, shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
time.sleep(1)
# 检查是否执行成功
if not getPid():
@ -350,7 +353,7 @@ class classApi:
# 设置状态
self._SYNC_INFO[stype][index]['state'] = state
self._SYNC_INFO[stype][index]['error'] = error
if self._SYNC_INFO[stype][index]['state'] != 1:
if self._SYNC_INFO[stype][index]['state'] == 1:
self._SYNC_INFO['speed'] += 1
self.save()
@ -399,24 +402,27 @@ class classApi:
def sync_site(self):
data = getCfgData()
sites = data['ready']['sites']
sites = self._SYNC_INFO['sites']
for i in range(len(sites)):
site_name = sites[i]['name']
try:
siteInfo = mw.M('sites').where('name=?', (sites[i],)).field(
self.state('sites', i, 1)
siteInfo = mw.M('sites').where('name=?', (site_name,)).field(
'id,name,path,ps,status,edate,addtime').find()
if not siteInfo:
err_msg = "指定站点[{}]不存在!".format(sites[i])
err_msg = "指定站点[{}]不存在!".format(site_name)
self.state('sites', i, -1, err_msg)
self.error(err_msg)
continue
pid = siteInfo['id']
siteInfo['port'] = mw.M('domain').where(
'pid=? and name=?', (pid, sites[i],)).getField('port')
'pid=? and name=?', (pid, site_name,)).getField('port')
siteInfo['domain'] = mw.M('domain').where(
'pid=? and name!=?', (pid, sites[i])).field('name,port').select()
'pid=? and name!=?', (pid, site_name)).field('name,port').select()
if self.send_site(siteInfo, i):
self.state('sites', i, 2)
@ -661,12 +667,12 @@ class classApi:
def sync_database(self):
data = getCfgData()
databases = data['ready']['databases']
databases = self._SYNC_INFO['databases']
for i in range(len(databases)):
try:
self.state('databases', i, 1)
db = databases[i]
db = databases[i]['name']
sp_msg = "|-迁移数据库: [{}]".format(db)
self.write_speed('action', sp_msg)
write_log(sp_msg)
@ -682,8 +688,7 @@ class classApi:
def run(self):
# 开始迁移
# self.upload_file(
# "/Users/midoks/Desktop/mwdev/backup/mysql-boost-5.7.39.tar.gz", "/tmp/mysql-boost-5.7.39.tar.gz")
# self.upload_file("/tmp/mysql-boost-5.7.39.tar.gz", "/tmp/mysql-boost-5.7.39.tar.gz")
# mw.CheckMyCnf()
# self.sync_other()
@ -732,7 +737,7 @@ def getConf():
def getCfgData():
path = getConf()
if not os.path.exists(path):
mw.writeFile(path, '{}')
mw.writeFile(path, "{}")
t = mw.readFile(path)
return json.loads(t)
@ -961,10 +966,6 @@ if __name__ == "__main__":
func = sys.argv[1]
if func == 'status':
print(status())
elif func == 'start':
print(start())
elif func == 'stop':
print(stop())
elif func == 'get_conf':
print(getStepOneData())
elif func == 'step_one':

@ -197,26 +197,32 @@ function initStep3(){
function renderMigrationProgress(){
maPostNoMsg('get_speed',{}, function(rdata){
var rdata = $.parseJSON(rdata.data);
console.log('sss:',rdata);
console.log('speed:',rdata.data);
if (rdata.status){
if (rdata['data']['action'] == 'True'){
var end = '<div class="line">\
<div class="success text-center" style="padding: 10px 0 15px;">\
<p style="font-size: 14px;margin-top:2px;color: #939292;">传输大小: 4.92 KB,耗时: 0分6秒,平均速度: 840 B/s</p>\
<p class="mtb15">\
<button class="btn btn-success btn-sm mr5 okBtn">确定完成</button>\
<a class="btn btn-default btn-sm" style="margin-left: 10px;" href="/download?filename=/www/server/migration_api/logs/psync.log">迁移日志</a>\
</p>\
</div>\
<div class="success text-center" style="padding: 10px 0 15px;">\
<p>数据迁移完成,请务必检查数据完整性!</p>\
<p style="font-size: 14px;margin-top:2px;color: #939292;">传输大小: 4.92 KB,耗时: 0分6秒,平均速度: 840 B/s</p>\
<p class="mtb15">\
<button class="btn btn-success btn-sm mr5 okBtn">确定完成</button>\
<a class="btn btn-default btn-sm" style="margin-left: 10px;" href="/download?filename=/www/server/migration_api/logs/psync.log">迁移日志</a>\
</p>\
</div>\
</div>';
$('.psync_migrate').html(end);
} else{
$('.psync_migrate .action').text(rdata['data']['action']);
$('.psync_migrate .done').text(rdata['data']['done']);
$('.psync_migrate pre').text(rdata['data']['log']);
var p = (rdata['data']['all_speed']/rdata['data']['all_total'])*100;
if (p>100){
p = 100;
}
$('.psync_migrate .progress_info_bar').width(p+'%');
$('.psync_migrate .progress_info').text(p+'%');
renderMigrationProgress();
}
} else{
@ -245,8 +251,8 @@ function initStep4(){
<div style="text-align:left"><span class="action">--</span>\
<span style="margin-left: 20px;" class="done">当前: --</span><img src="/static/img/ing.gif"><a style="position: absolute;right: 40px;" class="btlink psync_close" onclick="migrate.close();">[]</a></div>\
<div class="bt-progress" style="border-radius:0;height:20px;line-height:19px">\
<div class="bt-progress-bar" style="border-radius: 0px; height: 20px; width: 16.67%;">\
<span class="bt-progress-text ">16.67%</span></div>\
<div class="bt-progress-bar progress_info_bar" style="border-radius: 0px; height: 20px; width: 0%;">\
<span class="bt-progress-text progress_info"></span></div>\
</div>\
</div>\
</div>\

Loading…
Cancel
Save