mirror of https://github.com/midoks/mdserver-web
parent
498799578a
commit
26a6a80504
@ -0,0 +1,229 @@ |
|||||||
|
# coding:utf-8 |
||||||
|
|
||||||
|
import sys |
||||||
|
import io |
||||||
|
import os |
||||||
|
import time |
||||||
|
|
||||||
|
sys.path.append(os.getcwd() + "/class/core") |
||||||
|
import public |
||||||
|
|
||||||
|
|
||||||
|
def checkMyCnf(): |
||||||
|
# 处理MySQL配置文件 |
||||||
|
import os |
||||||
|
confFile = '/etc/my.cnf' |
||||||
|
if os.path.exists(confFile): |
||||||
|
conf = readFile(confFile) |
||||||
|
if len(conf) > 100: |
||||||
|
return True |
||||||
|
versionFile = '/www/server/mysql/version.pl' |
||||||
|
if not os.path.exists(versionFile): |
||||||
|
return False |
||||||
|
|
||||||
|
versions = ['5.1', '5.5', '5.6', '5.7', 'AliSQL'] |
||||||
|
version = readFile(versionFile) |
||||||
|
for key in versions: |
||||||
|
if key in version: |
||||||
|
version = key |
||||||
|
break |
||||||
|
|
||||||
|
shellStr = ''' |
||||||
|
#!/bin/bash |
||||||
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin |
||||||
|
export PATH |
||||||
|
|
||||||
|
CN='125.88.182.172' |
||||||
|
HK='download.bt.cn' |
||||||
|
HK2='103.224.251.67' |
||||||
|
US='174.139.221.74' |
||||||
|
sleep 0.5; |
||||||
|
CN_PING=`ping -c 1 -w 1 $CN|grep time=|awk '{print $7}'|sed "s/time=//"` |
||||||
|
HK_PING=`ping -c 1 -w 1 $HK|grep time=|awk '{print $7}'|sed "s/time=//"` |
||||||
|
HK2_PING=`ping -c 1 -w 1 $HK2|grep time=|awk '{print $7}'|sed "s/time=//"` |
||||||
|
US_PING=`ping -c 1 -w 1 $US|grep time=|awk '{print $7}'|sed "s/time=//"` |
||||||
|
|
||||||
|
echo "$HK_PING $HK" > ping.pl |
||||||
|
echo "$HK2_PING $HK2" >> ping.pl |
||||||
|
echo "$US_PING $US" >> ping.pl |
||||||
|
echo "$CN_PING $CN" >> ping.pl |
||||||
|
nodeAddr=`sort -V ping.pl|sed -n '1p'|awk '{print $2}'` |
||||||
|
if [ "$nodeAddr" == "" ];then |
||||||
|
nodeAddr=$HK |
||||||
|
fi |
||||||
|
|
||||||
|
Download_Url=http://$nodeAddr:5880 |
||||||
|
|
||||||
|
|
||||||
|
MySQL_Opt() |
||||||
|
{ |
||||||
|
MemTotal=`free -m | grep Mem | awk '{print $2}'` |
||||||
|
if [[ ${MemTotal} -gt 1024 && ${MemTotal} -lt 2048 ]]; then |
||||||
|
sed -i "s#^key_buffer_size.*#key_buffer_size = 32M#" /etc/my.cnf |
||||||
|
sed -i "s#^table_open_cache.*#table_open_cache = 128#" /etc/my.cnf |
||||||
|
sed -i "s#^sort_buffer_size.*#sort_buffer_size = 768K#" /etc/my.cnf |
||||||
|
sed -i "s#^read_buffer_size.*#read_buffer_size = 768K#" /etc/my.cnf |
||||||
|
sed -i "s#^myisam_sort_buffer_size.*#myisam_sort_buffer_size = 8M#" /etc/my.cnf |
||||||
|
sed -i "s#^thread_cache_size.*#thread_cache_size = 16#" /etc/my.cnf |
||||||
|
sed -i "s#^query_cache_size.*#query_cache_size = 16M#" /etc/my.cnf |
||||||
|
sed -i "s#^tmp_table_size.*#tmp_table_size = 32M#" /etc/my.cnf |
||||||
|
sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = 128M#" /etc/my.cnf |
||||||
|
sed -i "s#^innodb_log_file_size.*#innodb_log_file_size = 32M#" /etc/my.cnf |
||||||
|
elif [[ ${MemTotal} -ge 2048 && ${MemTotal} -lt 4096 ]]; then |
||||||
|
sed -i "s#^key_buffer_size.*#key_buffer_size = 64M#" /etc/my.cnf |
||||||
|
sed -i "s#^table_open_cache.*#table_open_cache = 256#" /etc/my.cnf |
||||||
|
sed -i "s#^sort_buffer_size.*#sort_buffer_size = 1M#" /etc/my.cnf |
||||||
|
sed -i "s#^read_buffer_size.*#read_buffer_size = 1M#" /etc/my.cnf |
||||||
|
sed -i "s#^myisam_sort_buffer_size.*#myisam_sort_buffer_size = 16M#" /etc/my.cnf |
||||||
|
sed -i "s#^thread_cache_size.*#thread_cache_size = 32#" /etc/my.cnf |
||||||
|
sed -i "s#^query_cache_size.*#query_cache_size = 32M#" /etc/my.cnf |
||||||
|
sed -i "s#^tmp_table_size.*#tmp_table_size = 64M#" /etc/my.cnf |
||||||
|
sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = 256M#" /etc/my.cnf |
||||||
|
sed -i "s#^innodb_log_file_size.*#innodb_log_file_size = 64M#" /etc/my.cnf |
||||||
|
elif [[ ${MemTotal} -ge 4096 && ${MemTotal} -lt 8192 ]]; then |
||||||
|
sed -i "s#^key_buffer_size.*#key_buffer_size = 128M#" /etc/my.cnf |
||||||
|
sed -i "s#^table_open_cache.*#table_open_cache = 512#" /etc/my.cnf |
||||||
|
sed -i "s#^sort_buffer_size.*#sort_buffer_size = 2M#" /etc/my.cnf |
||||||
|
sed -i "s#^read_buffer_size.*#read_buffer_size = 2M#" /etc/my.cnf |
||||||
|
sed -i "s#^myisam_sort_buffer_size.*#myisam_sort_buffer_size = 32M#" /etc/my.cnf |
||||||
|
sed -i "s#^thread_cache_size.*#thread_cache_size = 64#" /etc/my.cnf |
||||||
|
sed -i "s#^query_cache_size.*#query_cache_size = 64M#" /etc/my.cnf |
||||||
|
sed -i "s#^tmp_table_size.*#tmp_table_size = 64M#" /etc/my.cnf |
||||||
|
sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = 512M#" /etc/my.cnf |
||||||
|
sed -i "s#^innodb_log_file_size.*#innodb_log_file_size = 128M#" /etc/my.cnf |
||||||
|
elif [[ ${MemTotal} -ge 8192 && ${MemTotal} -lt 16384 ]]; then |
||||||
|
sed -i "s#^key_buffer_size.*#key_buffer_size = 256M#" /etc/my.cnf |
||||||
|
sed -i "s#^table_open_cache.*#table_open_cache = 1024#" /etc/my.cnf |
||||||
|
sed -i "s#^sort_buffer_size.*#sort_buffer_size = 4M#" /etc/my.cnf |
||||||
|
sed -i "s#^read_buffer_size.*#read_buffer_size = 4M#" /etc/my.cnf |
||||||
|
sed -i "s#^myisam_sort_buffer_size.*#myisam_sort_buffer_size = 64M#" /etc/my.cnf |
||||||
|
sed -i "s#^thread_cache_size.*#thread_cache_size = 128#" /etc/my.cnf |
||||||
|
sed -i "s#^query_cache_size.*#query_cache_size = 128M#" /etc/my.cnf |
||||||
|
sed -i "s#^tmp_table_size.*#tmp_table_size = 128M#" /etc/my.cnf |
||||||
|
sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = 1024M#" /etc/my.cnf |
||||||
|
sed -i "s#^innodb_log_file_size.*#innodb_log_file_size = 256M#" /etc/my.cnf |
||||||
|
elif [[ ${MemTotal} -ge 16384 && ${MemTotal} -lt 32768 ]]; then |
||||||
|
sed -i "s#^key_buffer_size.*#key_buffer_size = 512M#" /etc/my.cnf |
||||||
|
sed -i "s#^table_open_cache.*#table_open_cache = 2048#" /etc/my.cnf |
||||||
|
sed -i "s#^sort_buffer_size.*#sort_buffer_size = 8M#" /etc/my.cnf |
||||||
|
sed -i "s#^read_buffer_size.*#read_buffer_size = 8M#" /etc/my.cnf |
||||||
|
sed -i "s#^myisam_sort_buffer_size.*#myisam_sort_buffer_size = 128M#" /etc/my.cnf |
||||||
|
sed -i "s#^thread_cache_size.*#thread_cache_size = 256#" /etc/my.cnf |
||||||
|
sed -i "s#^query_cache_size.*#query_cache_size = 256M#" /etc/my.cnf |
||||||
|
sed -i "s#^tmp_table_size.*#tmp_table_size = 256M#" /etc/my.cnf |
||||||
|
sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = 2048M#" /etc/my.cnf |
||||||
|
sed -i "s#^innodb_log_file_size.*#innodb_log_file_size = 512M#" /etc/my.cnf |
||||||
|
elif [[ ${MemTotal} -ge 32768 ]]; then |
||||||
|
sed -i "s#^key_buffer_size.*#key_buffer_size = 1024M#" /etc/my.cnf |
||||||
|
sed -i "s#^table_open_cache.*#table_open_cache = 4096#" /etc/my.cnf |
||||||
|
sed -i "s#^sort_buffer_size.*#sort_buffer_size = 16M#" /etc/my.cnf |
||||||
|
sed -i "s#^read_buffer_size.*#read_buffer_size = 16M#" /etc/my.cnf |
||||||
|
sed -i "s#^myisam_sort_buffer_size.*#myisam_sort_buffer_size = 256M#" /etc/my.cnf |
||||||
|
sed -i "s#^thread_cache_size.*#thread_cache_size = 512#" /etc/my.cnf |
||||||
|
sed -i "s#^query_cache_size.*#query_cache_size = 512M#" /etc/my.cnf |
||||||
|
sed -i "s#^tmp_table_size.*#tmp_table_size = 512M#" /etc/my.cnf |
||||||
|
sed -i "s#^innodb_buffer_pool_size.*#innodb_buffer_pool_size = 4096M#" /etc/my.cnf |
||||||
|
sed -i "s#^innodb_log_file_size.*#innodb_log_file_size = 1024M#" /etc/my.cnf |
||||||
|
fi |
||||||
|
} |
||||||
|
|
||||||
|
wget -O /etc/my.cnf $Download_Url/install/conf/mysql-%s.conf -T 5 |
||||||
|
MySQL_Opt |
||||||
|
''' % (version,) |
||||||
|
# 判断是否迁移目录 |
||||||
|
if os.path.exists('data/datadir.pl'): |
||||||
|
newPath = public.readFile('data/datadir.pl') |
||||||
|
mycnf = public.readFile('/etc/my.cnf') |
||||||
|
mycnf = mycnf.replace('/www/server/data', newPath) |
||||||
|
public.writeFile('/etc/my.cnf', mycnf) |
||||||
|
|
||||||
|
os.system(shellStr) |
||||||
|
WriteLog('TYPE_SOFE', 'MYSQL_CHECK_ERR') |
||||||
|
return True |
||||||
|
|
||||||
|
|
||||||
|
def status(): |
||||||
|
data = public.execShell( |
||||||
|
"ps -ef|grep redis |grep -v grep | grep -v python | awk '{print $2}'") |
||||||
|
if data[0] == '': |
||||||
|
return 'stop' |
||||||
|
return 'start' |
||||||
|
|
||||||
|
|
||||||
|
def start(): |
||||||
|
path = os.path.dirname(os.getcwd()) |
||||||
|
cmd = path + "/redis/bin/redis-server" |
||||||
|
cmd = cmd + " " + path + "/redis/redis.conf" |
||||||
|
data = public.execShell(cmd) |
||||||
|
if data[0] == '': |
||||||
|
return 'ok' |
||||||
|
return 'fail' |
||||||
|
|
||||||
|
|
||||||
|
def stop(): |
||||||
|
data = public.execShell( |
||||||
|
"ps -ef|grep redis |grep -v grep |grep -v python |awk '{print $2}' | xargs kill -9") |
||||||
|
if data[0] == '': |
||||||
|
return 'ok' |
||||||
|
return 'fail' |
||||||
|
|
||||||
|
|
||||||
|
def restart(): |
||||||
|
return 'ok' |
||||||
|
|
||||||
|
|
||||||
|
def reload(): |
||||||
|
return 'ok' |
||||||
|
|
||||||
|
|
||||||
|
def runInfo(): |
||||||
|
path = os.path.dirname(os.getcwd()) |
||||||
|
cmd = path + "/redis/bin/redis-cli info" |
||||||
|
data = public.execShell(cmd)[0] |
||||||
|
res = [ |
||||||
|
'tcp_port', |
||||||
|
'uptime_in_days', # 已运行天数 |
||||||
|
'connected_clients', # 连接的客户端数量 |
||||||
|
'used_memory', # Redis已分配的内存总量 |
||||||
|
'used_memory_rss', # Redis占用的系统内存总量 |
||||||
|
'used_memory_peak', # Redis所用内存的高峰值 |
||||||
|
'mem_fragmentation_ratio', # 内存碎片比率 |
||||||
|
'total_connections_received', # 运行以来连接过的客户端的总数量 |
||||||
|
'total_commands_processed', # 运行以来执行过的命令的总数量 |
||||||
|
'instantaneous_ops_per_sec', # 服务器每秒钟执行的命令数量 |
||||||
|
'keyspace_hits', # 查找数据库键成功的次数 |
||||||
|
'keyspace_misses', # 查找数据库键失败的次数 |
||||||
|
'latest_fork_usec' # 最近一次 fork() 操作耗费的毫秒数 |
||||||
|
] |
||||||
|
data = data.split("\n") |
||||||
|
result = {} |
||||||
|
for d in data: |
||||||
|
if len(d) < 3: |
||||||
|
continue |
||||||
|
t = d.strip().split(':') |
||||||
|
if not t[0] in res: |
||||||
|
continue |
||||||
|
result[t[0]] = t[1] |
||||||
|
return public.getJson(result) |
||||||
|
|
||||||
|
|
||||||
|
def getConf(): |
||||||
|
path = os.path.dirname(os.getcwd()) + "/redis/redis.conf" |
||||||
|
return path |
||||||
|
|
||||||
|
if __name__ == "__main__": |
||||||
|
func = sys.argv[1] |
||||||
|
if func == 'run_info': |
||||||
|
print runInfo() |
||||||
|
elif func == 'conf': |
||||||
|
print getConf() |
||||||
|
elif func == 'status': |
||||||
|
print status() |
||||||
|
elif func == 'start': |
||||||
|
print start() |
||||||
|
elif func == 'stop': |
||||||
|
print stop() |
||||||
|
elif func == 'restart': |
||||||
|
print restart() |
||||||
|
elif func == 'reload': |
||||||
|
print reload() |
@ -0,0 +1,6 @@ |
|||||||
|
[ |
||||||
|
{ |
||||||
|
"version": "0.0.1.2", |
||||||
|
"content": "12312312" |
||||||
|
} |
||||||
|
] |
Loading…
Reference in new issue