This commit is contained in:
midoks
2021-02-05 16:09:41 +08:00
parent f8693c8cc3
commit 8723ad9577
2 changed files with 54 additions and 25 deletions
+45 -22
View File
@@ -1501,7 +1501,8 @@ def dumpMysqlData(version):
# print getServerDir()
cmd = getServerDir() + "/bin/mysqldump -uroot -p" + \
pwd + " --databases " + args['db'] + " > /tmp/dump.sql"
pwd + " --databases " + args['db'] + \
" > /tmp/" + args['db'] + ".sql"
ret = mw.execShell(cmd)
if ret[0] == '':
@@ -1509,33 +1510,55 @@ def dumpMysqlData(version):
return 'fail'
from threading import Thread
from time import sleep
def async(f):
def wrapper(*args, **kwargs):
thr = Thread(target=f, args=args, kwargs=kwargs)
thr.start()
return wrapper
@async
def doFullSync(db):
import paramiko
paramiko.util.log_to_file('paramiko.log')
ssh = paramiko.SSHClient()
SSH_PRIVATE_KEY = '/Users/midoks/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(SSH_PRIVATE_KEY)
ssh.load_system_host_keys()
ssh.connect(hostname='8.210.55.220', port=22, username='root', pkey=key)
cmd = "cd /www/server/mdserver-web && python /www/server/mdserver-web/plugins/mysql/index.py dump_mysql_data {\"db\":'" + db + "'} "
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read()
result_err = stderr.read()
print(result.decode(), result_err.decode())
print mw.execShell('scp root@8.210.55.220:/tmp/' + db + '.sql /tmp')
mw.execShell('stop slave')
pwd = pSqliteDb('config').where('id=?', (1,)).getField('mysql_root')
cmd = getServerDir() + "/bin/mysql -uroot -p" + pwd + " < /tmp/" + db + ".sql"
print cmd
print mw.execShell(cmd)
mw.execShell('start slave')
return True
def fullSync(version=''):
args = getArgs()
data = checkArgs(args, ['db'])
if not data[0]:
return data[1]
# import paramiko
# paramiko.util.log_to_file('paramiko.log')
# ssh = paramiko.SSHClient()
# SSH_PRIVATE_KEY = '/Users/midoks/.ssh/id_rsa'
# key = paramiko.RSAKey.from_private_key_file(SSH_PRIVATE_KEY)
# ssh.load_system_host_keys()
# ssh.connect(hostname='8.210.55.220', port=22, username='root', pkey=key)
# cmd = "cd /www/server/mdserver-web && python /www/server/mdserver-web/plugins/mysql/index.py dump_mysql_data {\"db\":'" + args[
# 'db'] + "'} "
# stdin, stdout, stderr = ssh.exec_command(cmd)
# result = stdout.read()
# result_err = stderr.read()
# print(result.decode(), result_err.decode())
print mw.execShell('scp root@8.210.55.220:/tmp/dump.sql /tmp')
pwd = pSqliteDb('config').where('id=?', (1,)).getField('mysql_root')
cmd = getServerDir() + "/bin/mysql -uroot -p" + pwd + " < /tmp/dump.sql"
print cmd
print mw.execShell(cmd)
doFullSync(args['db'])
return mw.returnJson(True, '同步成功!')
+9 -3
View File
@@ -1345,7 +1345,7 @@ function getFullSyncStatus(db){
var btn = '<div class="table_toolbar"><span class="sync btn btn-default btn-sm" id="begin_full_sync" title="">开始</span></div>';
var loadOpen = layer.open({
type: 1,
title: '全量同步'+db,
title: '全量同步['+db+']',
area: '500px',
content:"<div class='bt-form pd20 c6'>\
<div class='divtable mtb10'>\
@@ -1357,7 +1357,8 @@ function getFullSyncStatus(db){
</div>"
});
$('#begin_full_sync').click(function(){
function fullSync(db){
myPost('full_sync', {db:db}, function(data){
var rdata = $.parseJSON(data.data);
layer.msg(rdata['msg']);
@@ -1365,6 +1366,11 @@ function getFullSyncStatus(db){
masterOrSlaveConf();
}, 3000);
});
}
fullSync(db);
$('#begin_full_sync').click(function(){
fullSync(db);
});
}
@@ -1481,7 +1487,7 @@ function masterOrSlaveConf(version=''){
list += '<tr>';
list += '<td>' + rdata.data[i]['name'] +'</td>';
list += '<td style="text-align:right">' +
'<a href="javascript:;" class="btlink" onclick="getFullSyncStatus(\'\',\''+rdata.data[i]['name']+'\')" title="全量同步">全量同步</a>' +
'<a href="javascript:;" class="btlink" onclick="getFullSyncStatus(\''+rdata.data[i]['name']+'\')" title="全量同步">全量同步</a>' +
'</td>';
list += '</tr>';
}