diff --git a/plugins/mysql/index.py b/plugins/mysql/index.py index 2b615ced4..c9a7dee50 100755 --- a/plugins/mysql/index.py +++ b/plugins/mysql/index.py @@ -3041,7 +3041,38 @@ def getSyncMysqlDB(dbname,sign = ''): sync_db.setTimeout(60) return sync_db +def syncDatabaseRepairLog(version=''): + args = getArgs() + data = checkArgs(args, ['db','sign','op']) + if not data[0]: + return data[1] + + sync_args_db = args['db'] + sync_args_sign = args['sign'] + op = args['op'] + tmp_log = '/tmp/t.log' + cmd = 'cd '+mw.getServerDir()+'/mdserver-web && source bin/activate && python3 plugins/mysql/index.py sync_database_repair {"db":"'+sync_args_db+'","sign":"'+sync_args_sign+'"}' + # print(cmd) + + if op == 'get': + log = mw.getLastLine(tmp_log, 50) + return mw.returnJson(True, log) + + if op == 'cmd': + return mw.returnJson(True, 'ok', cmd) + + if op == 'do': + os.system(' echo "开始执行" > '+ tmp_log) + os.system(cmd +' >> '+ tmp_log +' &') + time.sleep(10) + # mw.execShell('rm -rf '+tmp_log) + return mw.returnJson(True, 'ok') + + return mw.returnJson(False, '无效请求!') + + def syncDatabaseRepair(version=''): + time_stats_s = time.time() from pymysql.converters import escape_string args = getArgs() data = checkArgs(args, ['db','sign']) @@ -3082,7 +3113,7 @@ def syncDatabaseRepair(version=''): diff = sync_count_data[0]['num'] - local_count_data[0]['num'] print(table_name+', need sync. diff,'+str(diff)) else: - print('.') + print(table_name+' check ok.') mw.execShell("echo 'ok' > "+table_check_file) # inconsistent_table = ['xx.xx'] @@ -3191,9 +3222,10 @@ def syncDatabaseRepair(version=''): print("break all") break time.sleep(3) + print(f'data check cos:{time.time() - time_stats_s:.4f}s') print("data supplementation completed") mw.execShell('rm -rf '+tmp_dir) - return True + return 'ok' ############### --- 重要 同步---- ########### @@ -3696,5 +3728,7 @@ if __name__ == "__main__": print(dumpMysqlData(version)) elif func == 'sync_database_repair': print(syncDatabaseRepair()) + elif func == 'sync_database_repair_log': + print(syncDatabaseRepairLog()) else: print('error') diff --git a/plugins/mysql/js/mysql.js b/plugins/mysql/js/mysql.js index 1ccb51c8a..32aaa922e 100755 --- a/plugins/mysql/js/mysql.js +++ b/plugins/mysql/js/mysql.js @@ -2028,6 +2028,84 @@ function getFullSyncStatus(db){ } } +function dataSyncVerify(db){ + var reqTimer = null; + + function requestLogs(layerIndex){ + myPostN('sync_database_repair_log', {db:db, sign:'',op:'get'}, function(rdata){ + var rdata = $.parseJSON(rdata.data); + + if(!rdata.status) { + layer.close(layerIndex); + layer.msg(rdata.msg,{icon:2, time:2000}); + clearInterval(reqTimer); + return; + }; + + if (rdata.msg == ''){ + rdata.msg = '暂无数据!'; + } + + $("#data_verify_log").html(rdata.msg); + //滚动到最低 + var ob = document.getElementById('data_verify_log'); + ob.scrollTop = ob.scrollHeight; + }); + } + + layer.open({ + type: 1, + title: '同步数据库['+db+']数据校验', + area: '500px', + btn:[ "开始","取消","手动"], + content:"
'+rdata.data+'\ +