diff --git a/plugins/mysql/index.html b/plugins/mysql/index.html index e0264171d..dd5e4f605 100755 --- a/plugins/mysql/index.html +++ b/plugins/mysql/index.html @@ -10,6 +10,7 @@

端口

当前状态

性能优化

+

日志

慢日志

管理列表

diff --git a/plugins/mysql/index.py b/plugins/mysql/index.py index 427a232e0..4e556fb32 100755 --- a/plugins/mysql/index.py +++ b/plugins/mysql/index.py @@ -149,6 +149,43 @@ def getDataDir(): return tmp.groups()[0].strip() +def binLog(): + args = getArgs() + # data = checkArgs(args, ['status']) + # if not data[0]: + # return data[1] + + conf = getConf() + con = public.readFile(conf) + + if con.find('#log-bin=mysql-bin') != -1: + if args.has_key('status'): + return public.returnJson(False, '0') + con = con.replace('#log-bin=mysql-bin', 'log-bin=mysql-bin') + con = con.replace('#binlog_format=mixed', 'binlog_format=mixed') + os.system('sync') + restart() + else: + path = getDataDir() + if args.has_key('status'): + dsize = 0 + for n in os.listdir(path): + if len(n) < 9: + continue + if n[0:9] == 'mysql-bin': + dsize += os.path.getsize(path + '/' + n) + return public.returnJson(True, dsize) + con = con.replace('log-bin=mysql-bin', '#log-bin=mysql-bin') + con = con.replace('binlog_format=mixed', '#binlog_format=mixed') + os.system('sync') + restart() + os.system('rm -f ' + path + '/mysql-bin.*') + + public.writeFile(conf, con) + + return public.returnJson(True, '设置成功!') + + def getShowLogFile(): file = getConf() content = public.readFile(file) @@ -170,8 +207,8 @@ def initMysqlData(): if not os.path.exists(datadir + '/mysql'): serverdir = getServerDir() user = pGetDbUser() - cmd = 'cd ' + serverdir + ' && ./scripts/mysql_install_db --user=' + user + ' --basedir=' + \ - serverdir + ' --ldata=' + datadir + cmd = 'cd ' + serverdir + ' && ./scripts/mysql_install_db --user=' + \ + user + ' --basedir=' + serverdir + ' --ldata=' + datadir public.execShell(cmd) return 0 return 1 @@ -772,6 +809,8 @@ if __name__ == "__main__": print setDbStatus() elif func == 'conf': print getConf() + elif func == 'bin_log': + print binLog() elif func == 'show_log': print getShowLogFile() elif func == 'my_port': diff --git a/plugins/mysql/js/data.js b/plugins/mysql/js/data.js deleted file mode 100755 index d54ebe20c..000000000 --- a/plugins/mysql/js/data.js +++ /dev/null @@ -1,692 +0,0 @@ -/** - * 取回数据库列表 - * @param {Number} page 页码 - */ -function getData(page,search) { - search = $("#SearchValue").prop("value"); - order = getCookie('order'); - if(order){ - order = '&order=' + order; - }else{ - order = ''; - } - var sUrl = '/data?action=getData'; - var sUrlData='tojs=getData&table=databases&limit=15&p='+page+'&search='+search + order; - var loadT = layer.load(); - $.post(sUrl, sUrlData,function(data) { - layer.close(loadT); - //构造数据列表 - var Body = ''; - if(data.data == ""){ - Body=""+lan.database.empty+""; - $("#DataPage").hide() - } - else{ - $("#DataPage").show(); - for (var i = 0; i < data.data.length; i++) { - if(data.data[i].backup_count==0){ - var isback = ""+lan.database.backup_empty+"" - }else{ - var isback = ""+lan.database.backup_ok+"" - } - Body += "\ - " + data.data[i].name + "\ - " + data.data[i].username + "\ - **********\ - "+isback+" | "+lan.database.input+"\ - " + data.data[i].ps + "\ - \ - "+lan.database.admin+" | \ - "+lan.database.auth+" | \ - "+lan.database.edit_pass+" | \ - "+lan.public.del+"\ - " - } - } - //输出数据列表 - $("#DataBody").html(Body); - //输出分页 - $("#DataPage").html(data.page); - $("#DataPage .Pcount").css("position","static"); - //备注 - $(".btlinkbed").click(function(){ - var dataid = $(this).attr("data-id"); - var databak = $(this).text(); - $(this).hide().after(""); - $(".baktext").focus(); - }); - - showHidePwd(); - }); -} - -/** - *添加数据库 - * @param {Number} sign 操作标识 - * @param {String} name 数据库名 - * @param {String} type 数据库类型 - * @param {Boolean} adduser 是否添加新用户 - * @param {String} bak 备注 - */ -function DataAdd(sign){ - if(sign==0){ - var index = layer.open({ - type: 1, - skin: 'demo-class', - area: '480px', - title: lan.database.add_title, - closeBtn: 2, - shift: 5, - shadeClose: false, - content: "
\ -
\ - "+lan.database.add_name+"
\ - \ - \ -
\ -
\ -
\ - 用户名
\ - "+lan.database.add_pass+"
\ -
\ -
\ - "+lan.database.add_auth+"\ -
\ - \ - \ -
\ -
\ - \ -
\ - \ - \ -
\ -
" - }); - - $("#dataAccess").change(function(){ - var access = $(this).val(); - if(access == 'ip'){ - $("input[name=address]").show().val(''); - }else{ - $("input[name=address]").hide(); - } - }); - - $("#db_name").change(function(){ - $("input[name='db_user']").val($(this).val()); - }); - }else{ - var loadT=layer.load({shade:true,shadeClose:false}); - var access = $("#dataAccess").val(); - if(access != 'ip') $("input[name=address]").val(access); - var data = $("#DataAdd").serialize(); - $.post('/database?action=AddDatabase',data,function(rdata){ - if(rdata.status){ - getData(1); - layer.closeAll(); - layer.msg(rdata.msg,{icon:1}); - }else{ - layer.closeAll(); - layer.msg(rdata.msg,{icon:2}); - } - }); - } -} -/** - *设置数据库密码 - * @param {Number} sign 操作标识 - * @param {String} passwd 数据库新密码 - */ -function DataSetuppwd(sign, passwd) { - if (sign == 0) { - $.post('/data?action=getKey','table=config&key=mysql_root&id=1',function(rdata){ - var mypasswd=rdata; - var index = layer.open({ - type: 1, - skin: 'demo-class', - area: '500px', - title: lan.database.edit_pass_title, - closeBtn: 2, - shift: 5, - shadeClose: false, - content: "
\ -
\ - "+lan.database.edit_root+":
\ -
\ -
\ - \ - \ -
\ -
" - }); - RandomStrPwd(16); - $("#MyPassword").focus().keyup(function(e){ - if(e.keyCode == 13) $("#PostPwBtn").click(); - }); - }); - } else { - var loadT=layer.msg(lan.public.the,{icon:16,time:0}); - var newPassword = $("#MyPassword").val(); - var data = 'password='+encodeURIComponent(newPassword); - $.post('/database?action=SetupPassword',data,function(rdata){ - if(rdata.status){ - getData(1); - layer.closeAll(); - layer.msg(rdata.msg,{icon:1}); - setTimeout(function(){window.location.reload();},3000); - }else{ - layer.close(loadT); - layer.msg(rdata.msg,{icon:2}); - } - }); - } -} -/** - * 重置数据库密码 - * @param {Number} sign 操作标识 - * @param {String} passwd 数据库密码 - */ -function DataRespwd(sign,id,username){ - if(sign==0){ - layer.open({ - type:1, - skin:'demo-class', - area:'450px', - title:lan.database.edit_pass_title, - closeBtn:2, - shift:5, - shadeClose:false, - content:"
\ -
\ - \ - "+lan.database.user+":
\ -
\ -
\ - "+lan.database.edit_pass_new+":
\ -
\ -
\ - \ - \ -
\ -
" - }); - return; - } - layer.confirm(lan.database.edit_pass_confirm,{title:lan.database.edit_pass_title,icon:3,closeBtn:2},function(index){ - if(index>0){ - var loadT=layer.load({shade:true,shadeClose:false}); - var data = 'username='+encodeURIComponent($("#DataRespwd input[name='username']").val()) + '&password=' + encodeURIComponent($("#DataRespwd input[name='password']").val()) + '&id=' + $("#DataRespwd input[name='id']").val(); - $.post('/database?action=ResDatabasePassword',data,function(rdata){ - getData(1); - layer.closeAll(); - layer.msg(rdata.msg,{icon:rdata.status?1:2}); - }); - } - }); - -} -/** - *数据库管理详细信息 - * @param {Number} id 数据库编号 - * @param {String} dataname 数据库名称 - */ -function DataDetails(id,dataname,page){ - if(page == undefined){ - page = '1'; - } - var loadT = layer.msg(lan.public.the_get,{icon:16,time:0}); - $.post('/data?action=getFind','table=databases&id='+id,function(rdata){ - $.post('/data?action=getData','table=backup&search='+id+'&limit=5&p=1&type=1&tojs=DataDetails&p='+page,function(frdata){ - layer.close(loadT); - var ftpdown = ''; - var body=''; - var port; - - frdata.page = frdata.page.replace(/'/g,'"').replace(/DataDetails\(/g,"DataDetails(" + id + ",0,"); - for(var i=0;i"+lan.public.download+""; - }else{ - var ftpdown = ""+lan.database.backup_re+" | "+lan.public.download+""; - } - - body += ""+frdata.data[i].name+"\ - "+(ToSize(frdata.data[i].size))+"\ - "+frdata.data[i].addtime+"\ - \ - "+ftpdown+" | "+lan.public.del+"\ - \ - " - } - - - if(dataname == 0){ - var sBody = "\ - \ - "+body+"\ -
"+lan.database.backup_name+""+lan.database.backup_size+""+lan.database.backup_time+""+lan.public.action+"
" - $("#DataBackupList").html(sBody); - $(".page").html(frdata.page); - return; - } - layer.closeAll(); - layer.open({ - type: 1, - skin: 'demo-class', - area: '700px', - title: lan.database.backup_title, - closeBtn: 2, - shift: 5, - shadeClose: false, - content:"
\ - \ -
\ -
\ - \ - "+body+"\ -
"+lan.database.backup_name+""+lan.database.backup_size+""+lan.database.backup_time+""+lan.public.action+"
"+frdata.page+"
" - }); - }); - }); -} -//恢复数据库备份 -function RecoveryData(fileName,dataName){ - layer.confirm(lan.database.input_confirm,{title:lan.database.input_title,icon:3,closeBtn:2},function(index){ - var loadT =layer.msg(lan.database.input_the, {icon:16,time:0,shade: [0.3, '#000']}); - $.post('/database?action=InputSql','file='+fileName+'&name='+dataName,function(rdata){ - layer.close(loadT); - layer.msg(rdata.msg,{icon:rdata.status?1:2}); - }); - }); -} -/** - *设置数据库备份 - * @param {Number} id 数据库编号 - * @param {String} dataname 数据库名称 - */ -function DataBackup(id,dataname){ - var loadT =layer.msg(lan.database.backup_the, {icon:16,time:0,shade: [0.3, '#000']}); - $.post('/database?action=ToBackup', "id="+id, function(rdata) { - layer.closeAll(); - layer.msg(rdata.msg,{icon:rdata.status?1:2}); - DataDetails(id,dataname); - }); -} - -/** - *删除数据库备份 - * @param {Number} id 数据库编号 - * @param {String} dataname 数据库名称 - */ -function DataBackupDelete(typeid,id,dataname){ - layer.confirm(lan.database.backup_del_confirm,{title:lan.database.backup_del_title,icon:3,closeBtn:2},function(index){ - var loadT=layer.load({shade:true,shadeClose:false}); - $.post('/database?action=DelBackup','id='+id,function(frdata){ - layer.closeAll(); - layer.msg(frdata.msg,{icon:frdata.status?1:2}); - DataDetails(typeid,dataname); - }); - }); -} - -/** - *删除数据库 - * @param {Number} id 数据编号 - */ - -function DataDelete(id,name){ - SafeMessage(lan.get('del',[name]),lan.get('confirm_del',[name]),function(){ - deleteDatabase(id,name); - }); - -} - -//删除操作 -function deleteDatabase(id,name){ - var loadT = layer.msg(lan.get('del_all_task_the',[name]),{icon:16,time:0,shade: [0.3, '#000']}); - $.post('/database?action=DeleteDatabase','id='+id+'&name='+name,function(frdata){ - getData(1); - layer.close(loadT); - layer.msg(frdata.msg,{icon:frdata.status?1:2}); - }); -} - - -//批量删除 -function allDeleteDatabase(){ - var checkList = $("input[name=id]"); - var dataList = new Array(); - for(var i=0;i"+lan.get('del_all_database',[dataList.length])+"",function(){ - layer.closeAll(); - syncDelete(dataList,0,''); - }); -} - -//模拟同步开始批量删除数据库 -function syncDelete(dataList,successCount,errorMsg){ - if(dataList.length < 1) { - layer.msg(lan.get('del_all_database_ok',[successCount]),{icon:1}); - return; - } - var loadT = layer.msg(lan.get('del_all_task_the',[dataList[0].name]),{icon:16,time:0,shade: [0.3, '#000']}); - $.ajax({ - type:'POST', - url:'/database?action=DeleteDatabase', - data:'id='+dataList[0].id+'&name='+dataList[0].name, - async: true, - success:function(frdata){ - layer.close(loadT); - if(frdata.status){ - successCount++; - $("input[title='"+dataList[0].name+"']").parents("tr").remove(); - }else{ - if(!errorMsg){ - errorMsg = '

'+lan.database.del_all_err+'

'; - } - errorMsg += '
  • '+dataList[0].name+' -> '+frdata.msg+'
  • ' - } - - dataList.splice(0,1); - syncDelete(dataList,successCount,errorMsg); - } - }); -} - - - -/** - * 选中项操作 - */ -function goSet(num){ - //取选中对象 - var el = document.getElementsByTagName('input'); - var len = el.length; - var data=''; - var a = ''; - var count = 0; - //构造POST数据 - for(var i=0;i5 || extLastName.length < 2){ - return "file"; - } - for(var i=0; i" + fmp[0] + "\ - " + ((fmp[2].length > 11)?fmp[2]:getLocalTime(fmp[2])) + "\ - " + (ToSize(fmp[1])) + "\ - \ - "+lan.database.input+"\ - \ - "; - } - layer.open({ - type: 1, - skin: 'demo-class', - area: '600px', - title: lan.database.input_title_file, - closeBtn: 2, - shift: 5, - shadeClose: false, - content: '
    ' - +'' - +'
    ' - +'' - +'' - +'' - +'' - +'' - +'' - +'' - +'' - +'' - +''+Body+'' - +'
    '+lan.files.file_name+''+lan.files.file_etime+''+lan.files.file_size+''+lan.public.action+'
    ' - +'
    ' - +'
      ' - +'
    • '+lan.database.input_ps1+'
    • ' - +'
    • '+lan.database.input_ps2+'
    • ' - +'
    • '+lan.database.input_ps3+'
    • ' - +'
    ' - +'
    ' - }); - }); -} - - -//上传文件 -function UploadFiles1(name){ - var path = getCookie('backup_path') + "/database/"; - var index = layer.open({ - type:1, - closeBtn: 2, - title:lan.files.up_title+' --- '+lan.database.input_up_type+'', - area: ['500px','500px'], - shadeClose:false, - content:'
    \ - \ - \ - \ - \ - \ - '+lan.files.up_coding+':\ - \ - \ - \ -
      ' - }); - $("#filesClose").click(function(){ - layer.close(index); - InputDatabase(name); - }); - UploadStart(true); -} - - -//设置访问权限 -function SetDatabaseAccess(dataName,action){ - if(action == 1){ - var access = $("#dataAccess").val(); - if(access == 'ip') access = $("input[name=address]").val(); - layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); - $.post('/database?action=SetDatabaseAccess','name='+dataName+'&access='+access,function(rdata){ - layer.closeAll(); - layer.msg(rdata.msg,{icon:rdata.status?1:2}); - }); - return; - } - - - $.post('/database?action=GetDatabaseAccess','name='+dataName,function(rdata){ - if(rdata == null){ - layer.msg(lan.database.auth_err,{icon:2}); - return; - } - layer.open({ - type: 1, - skin: 'demo-class', - area: '480px', - title: lan.database.auth_title+'['+dataName+']', - closeBtn: 2, - shift: 5, - shadeClose: false, - content: "
      \ -
      \ - "+lan.database.auth_name+"\ -
      \ - \ - \ -
      \ -
      \ -
      \ - \ - \ -
      \ -
      " - }); - - $("#dataAccess").change(function(){ - var access = $(this).val(); - if(access == 'ip'){ - $("input[name=address]").show().val(''); - }else{ - $("input[name=address]").hide(); - } - }); - }); -} - -//同步到数据库 -function SyncToDatabases(type){ - //取选中对象 - var el = document.getElementsByTagName('input'); - var len = el.length; - var data=[]; - //构造POST数据 - for(var i=0;i' + toSize(rdata.msg) + '\ + \ +

      '+ lan.soft.mysql_log_err + '

      \ + \ +

      ' + $(".soft-man-con").html(limitCon); + + //设置二进制日志 + $(".btn-bin").click(function () { + myPost('bin_log', 'close=change', function(data){ + var rdata = $.parseJSON(data.data); + layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 }); + + setTimeout(function(){ + myLogs(); + }, 3000); + }); + }); + }); +} diff --git a/route/static/app/public.js b/route/static/app/public.js index a20c6970c..da6c13adf 100755 --- a/route/static/app/public.js +++ b/route/static/app/public.js @@ -1464,7 +1464,7 @@ function pluginLogs(_name, version, func, line){ rdata.data = '当前没有日志!'; } var ebody = '
      \ - \ + \
      '; $(".soft-man-con").html(ebody); var ob = document.getElementById('info_log');