Merge pull request #713 from midoks/dev

mysql关闭/开启 二进制日志优化
pull/720/head
Mr Chen 2 months ago committed by GitHub
commit 258b9b610f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 3
      .gitignore
  2. 1
      plugins/clean/index.py
  3. 4
      plugins/mariadb/index.py
  4. 2
      plugins/mariadb/info.json
  5. 2
      plugins/mariadb/versions/10.11/install.sh
  6. 2
      plugins/mariadb/versions/10.6/install.sh
  7. 2
      plugins/mariadb/versions/11.4/install.sh
  8. 120
      plugins/mariadb/versions/11.7/install.sh
  9. 4
      plugins/mysql-community/index.py
  10. 2
      plugins/mysql/conf/my8.0.cnf
  11. 2
      plugins/mysql/conf/my8.2.cnf
  12. 2
      plugins/mysql/conf/my8.3.cnf
  13. 2
      plugins/mysql/conf/my8.4.cnf
  14. 2
      plugins/mysql/conf/my9.0.cnf
  15. 2
      plugins/mysql/conf/my9.1.cnf
  16. 113
      plugins/mysql/conf/my9.2.cnf
  17. 6
      plugins/mysql/index.py
  18. 4
      plugins/mysql/info.json
  19. 10
      plugins/mysql/versions/9.1/install.sh
  20. 230
      plugins/mysql/versions/9.2/install.sh
  21. 8
      plugins/phpmyadmin/index.py
  22. 1
      plugins/phpmyadmin/info.json
  23. 2
      plugins/sys-opt/tpl/linux.conf
  24. 7
      plugins/tgbot/startup/extend/push_ad.py
  25. 7
      plugins/tgbot/startup/extend/push_notice_msg.py
  26. 1
      requirements.txt
  27. 2
      scripts/init.d/mw.tpl
  28. 2
      web/admin/setup/__init__.py
  29. 89
      web/admin/setup/init_cron.py
  30. 4
      web/utils/crontab.py

3
.gitignore vendored

@ -191,3 +191,6 @@ plugins/goedge-happy
/logs /logs
/data /data
/plugins/flexcdn
/plugins/tools
/plugins/choose-linux-python

@ -131,6 +131,7 @@ def initConf():
"/var/log/wtmp", "/var/log/wtmp",
"/var/log/secure", "/var/log/secure",
"/var/log/lastlog", "/var/log/lastlog",
"/var/log/syslog",
"/var/log/cron", "/var/log/cron",
"/www/wwwlogs", "/www/wwwlogs",
"/www/server/rsyncd", "/www/server/rsyncd",

@ -280,6 +280,7 @@ def binLog():
return mw.returnJson(False, '0') return mw.returnJson(False, '0')
con = con.replace('#log-bin=mysql-bin', 'log-bin=mysql-bin') con = con.replace('#log-bin=mysql-bin', 'log-bin=mysql-bin')
con = con.replace('#binlog_format=mixed', 'binlog_format=mixed') con = con.replace('#binlog_format=mixed', 'binlog_format=mixed')
mw.writeFile(conf, con)
mw.execShell('sync') mw.execShell('sync')
restart() restart()
else: else:
@ -294,11 +295,12 @@ def binLog():
return mw.returnJson(True, dsize) return mw.returnJson(True, dsize)
con = con.replace('log-bin=mysql-bin', '#log-bin=mysql-bin') con = con.replace('log-bin=mysql-bin', '#log-bin=mysql-bin')
con = con.replace('binlog_format=mixed', '#binlog_format=mixed') con = con.replace('binlog_format=mixed', '#binlog_format=mixed')
mw.writeFile(conf, con)
mw.execShell('sync') mw.execShell('sync')
restart() restart()
mw.execShell('rm -f ' + path + '/mysql-bin.*') mw.execShell('rm -f ' + path + '/mysql-bin.*')
mw.writeFile(conf, con)
return mw.returnJson(True, '设置成功!') return mw.returnJson(True, '设置成功!')
def binLogList(): def binLogList():

@ -9,7 +9,7 @@
"uninstall_pre_inspection":true, "uninstall_pre_inspection":true,
"checks": "server/mariadb", "checks": "server/mariadb",
"path": "server/mariadb", "path": "server/mariadb",
"versions":["10.6","10.7","10.8","10.9","10.11","11.0","11.1","11.2","11.3","11.4","11.5","11.6"], "versions":["10.6","10.7","10.8","10.9","10.11","11.0","11.1","11.2","11.3","11.4","11.5","11.6","11.7"],
"shell":"install.sh", "shell":"install.sh",
"checks":"server/mariadb", "checks":"server/mariadb",
"path":"server/mariadb", "path":"server/mariadb",

@ -13,7 +13,7 @@ sysName=`uname`
mariadbDir=${serverPath}/source/mariadb mariadbDir=${serverPath}/source/mariadb
MY_VER=10.11.10 MY_VER=10.11.11
Install_app() Install_app()
{ {

@ -12,7 +12,7 @@ sysName=`uname`
mariadbDir=${serverPath}/source/mariadb mariadbDir=${serverPath}/source/mariadb
MY_VER=10.6.20 MY_VER=10.6.21
Install_app() Install_app()
{ {

@ -13,7 +13,7 @@ sysName=`uname`
mariadbDir=${serverPath}/source/mariadb mariadbDir=${serverPath}/source/mariadb
MY_VER=11.4.4 MY_VER=11.4.5
Install_app() Install_app()
{ {

@ -0,0 +1,120 @@
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin
export PATH
#https://dev.mysql.com/downloads/mysql/5.5.html#downloads
#https://dev.mysql.com/downloads/file/?id=480541
curPath=`pwd`
rootPath=$(dirname "$curPath")
rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
sysName=`uname`
mariadbDir=${serverPath}/source/mariadb
MY_VER=11.7.2
Install_app()
{
mkdir -p ${mariadbDir}
echo '正在安装脚本文件...'
if [ "$sysName" != "Darwin" ];then
mkdir -p /var/log/mariadb
touch /var/log/mariadb/mariadb.log
fi
# ----- cpu start ------
if [ -z "${cpuCore}" ]; then
cpuCore="1"
fi
if [ -f /proc/cpuinfo ];then
cpuCore=`cat /proc/cpuinfo | grep "processor" | wc -l`
fi
MEM_INFO=$(free -m|grep Mem|awk '{printf("%.f",($2)/1024)}')
if [ "${cpuCore}" != "1" ] && [ "${MEM_INFO}" != "0" ];then
if [ "${cpuCore}" -gt "${MEM_INFO}" ];then
cpuCore="${MEM_INFO}"
fi
else
cpuCore="1"
fi
if [ "$cpuCore" -gt "2" ];then
cpuCore=`echo "$cpuCore" | awk '{printf("%.f",($1)*0.8)}'`
else
cpuCore="1"
fi
# ----- cpu end ------
# if [ ! -f ${mariadbDir}/mariadb-${MY_VER}.tar.gz ];then
# wget --no-check-certificate -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://mirrors.aliyun.com/mariadb/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
# fi
# https://downloads.mariadb.org/interstitial/mariadb-10.9.1/source/mariadb-10.9.1.tar.gz
if [ ! -f ${mariadbDir}/mariadb-${MY_VER}.tar.gz ];then
wget --no-check-certificate -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://archive.mariadb.org/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
fi
if [ ! -d ${mariadbDir}/mariadb-${MY_VER} ];then
cd ${mariadbDir} && tar -zxvf ${mariadbDir}/mariadb-${MY_VER}.tar.gz
fi
INSTALL_CMD=cmake
# check cmake version
CMAKE_VERSION=`cmake -version | grep version | awk '{print $3}' | awk -F '.' '{print $1}'`
if [ "$CMAKE_VERSION" -eq "2" ];then
mkdir -p /var/log/mariadb
touch /var/log/mariadb/mariadb.log
INSTALL_CMD=cmake3
fi
if [ ! -d $serverPath/mariadb ];then
cd ${mariadbDir}/mariadb-${MY_VER} && ${INSTALL_CMD} \
-DCMAKE_INSTALL_PREFIX=$serverPath/mariadb \
-DMYSQL_DATADIR=$serverPath/mariadb/data/ \
-DMYSQL_USER=mysql \
-DMYSQL_UNIX_ADDR=$serverPath/mariadb/mysql.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DCMAKE_CXX_COMPILER=/usr/bin/g++
make -j${cpuCore} && make install && make clean
if [ -d $serverPath/mariadb ];then
echo '11.7' > $serverPath/mariadb/version.pl
echo '安装完成'
else
echo '安装失败'
echo 'install fail'>&2
exit 1
fi
fi
if [ -d ${mariadbDir}/mariadb-${MY_VER} ];then
rm -rf ${mariadbDir}/mariadb-${MY_VER}
fi
}
Uninstall_app()
{
rm -rf $serverPath/mariadb
echo '卸载完成'
}
action=$1
if [ "${1}" == 'install' ];then
Install_app
else
Uninstall_app
fi

@ -294,6 +294,7 @@ def binLog(version=''):
return mw.returnJson(False, '0') return mw.returnJson(False, '0')
con = con.replace('#log-bin=mysql-bin', 'log-bin=mysql-bin') con = con.replace('#log-bin=mysql-bin', 'log-bin=mysql-bin')
con = con.replace('#binlog_format=mixed', 'binlog_format=mixed') con = con.replace('#binlog_format=mixed', 'binlog_format=mixed')
mw.writeFile(conf, con)
mw.execShell('sync') mw.execShell('sync')
restart(version) restart(version)
else: else:
@ -308,11 +309,10 @@ def binLog(version=''):
return mw.returnJson(True, dsize) return mw.returnJson(True, dsize)
con = con.replace('log-bin=mysql-bin', '#log-bin=mysql-bin') con = con.replace('log-bin=mysql-bin', '#log-bin=mysql-bin')
con = con.replace('binlog_format=mixed', '#binlog_format=mixed') con = con.replace('binlog_format=mixed', '#binlog_format=mixed')
mw.writeFile(conf, con)
mw.execShell('sync') mw.execShell('sync')
restart(version) restart(version)
mw.execShell('rm -f ' + path + '/mysql-bin.*') mw.execShell('rm -f ' + path + '/mysql-bin.*')
mw.writeFile(conf, con)
return mw.returnJson(True, '设置成功!') return mw.returnJson(True, '设置成功!')

@ -54,7 +54,7 @@ long_query_time=10
#log_queries_not_using_indexes=1 #log_queries_not_using_indexes=1
#log_slow_admin_statements=1 #log_slow_admin_statements=1
#log_slow_replica_statements=1 #log_slow_replica_statements=1
binlog_expire_logs_seconds=2592000 binlog_expire_logs_seconds=604800
relay-log=mdserver relay-log=mdserver
relay-log-index=mdserver relay-log-index=mdserver

@ -54,7 +54,7 @@ long_query_time=10
#log_queries_not_using_indexes=1 #log_queries_not_using_indexes=1
#log_slow_admin_statements=1 #log_slow_admin_statements=1
#log_slow_replica_statements=1 #log_slow_replica_statements=1
binlog_expire_logs_seconds=2592000 binlog_expire_logs_seconds=604800
relay-log=mdserver relay-log=mdserver
relay-log-index=mdserver relay-log-index=mdserver

@ -54,7 +54,7 @@ long_query_time=10
#log_queries_not_using_indexes=1 #log_queries_not_using_indexes=1
#log_slow_admin_statements=1 #log_slow_admin_statements=1
#log_slow_replica_statements=1 #log_slow_replica_statements=1
binlog_expire_logs_seconds=2592000 binlog_expire_logs_seconds=604800
relay-log=mdserver relay-log=mdserver
relay-log-index=mdserver relay-log-index=mdserver

@ -51,7 +51,7 @@ long_query_time=10
#log_queries_not_using_indexes=1 #log_queries_not_using_indexes=1
#log_slow_admin_statements=1 #log_slow_admin_statements=1
#log_slow_replica_statements=1 #log_slow_replica_statements=1
binlog_expire_logs_seconds=2592000 binlog_expire_logs_seconds=604800
relay-log=mdserver relay-log=mdserver
relay-log-index=mdserver relay-log-index=mdserver

@ -51,7 +51,7 @@ long_query_time=10
#log_queries_not_using_indexes=1 #log_queries_not_using_indexes=1
#log_slow_admin_statements=1 #log_slow_admin_statements=1
#log_slow_replica_statements=1 #log_slow_replica_statements=1
binlog_expire_logs_seconds=2592000 binlog_expire_logs_seconds=604800
relay-log=mdserver relay-log=mdserver
relay-log-index=mdserver relay-log-index=mdserver

@ -51,7 +51,7 @@ long_query_time=10
#log_queries_not_using_indexes=1 #log_queries_not_using_indexes=1
#log_slow_admin_statements=1 #log_slow_admin_statements=1
#log_slow_replica_statements=1 #log_slow_replica_statements=1
binlog_expire_logs_seconds=2592000 binlog_expire_logs_seconds=604800
relay-log=mdserver relay-log=mdserver
relay-log-index=mdserver relay-log-index=mdserver

@ -0,0 +1,113 @@
[client]
user = root
#password = your_password
port = 3306
socket = {$SERVER_APP_PATH}/mysql.sock
default-character-set = UTF8MB4
[mysqld]
!include {$SERVER_APP_PATH}/etc/mode/classic.cnf
authentication_policy=caching_sha2_password
pid-file = {$SERVER_APP_PATH}/data/mysql.pid
user = mysql
port = 3306
socket = {$SERVER_APP_PATH}/mysql.sock
basedir = {$SERVER_APP_PATH}
datadir = {$SERVER_APP_PATH}/data
log-error = {$SERVER_APP_PATH}/data/error.log
server-id = {$SERVER_ID}
#sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
default_storage_engine = InnoDB
key_buffer_size = 8M
table_open_cache = 32
sort_buffer_size = 256K
net_buffer_length = 4K
read_buffer_size = 128K
read_rnd_buffer_size = 256K
myisam_sort_buffer_size = 4M
thread_cache_size = 4
lower_case_table_names=0
tmp_table_size = 8M
character-set-server = UTF8MB4
max_connections = 500
max_connect_errors = 100
open_files_limit = 2560
max_allowed_packet = 128M
skip_name_resolve=1
#skip-networking
#skip-external-locking
#loose-skip-innodb
#skip-grant-tables
log-bin=mysql-bin
slow_query_log=1
slow-query-log-file={$SERVER_APP_PATH}/data/mysql-slow.log
long_query_time=10
#log_queries_not_using_indexes=1
#log_slow_admin_statements=1
#log_slow_replica_statements=1
binlog_expire_logs_seconds=604800
relay-log=mdserver
relay-log-index=mdserver
#多主设置
#auto_increment_offset=2
#auto_increment_increment=2
#master
#sync_binlog=1
#binlog-do-db
binlog-ignore-db = test
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
#slave
log_replica_updates = 1
# Prevent replication from starting automatically with MySQL
#skip_replica_start = 1
#replicate-do-db
replica_skip_errors=1062,1396
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = mysql
replicate-ignore-db = test
innodb_data_home_dir = {$SERVER_APP_PATH}/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = {$SERVER_APP_PATH}/data
innodb_buffer_pool_size = 16M
#innodb_log_file_size = 5M
innodb_redo_log_capacity=10485760
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 120
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 1
innodb_write_io_threads = 1
innodb_file_per_table=1
secure-file-priv={$SERVER_APP_PATH}/tmp
[mysqldump]
quick
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout

@ -335,6 +335,7 @@ def binLog(version = ''):
return mw.returnJson(False, '0') return mw.returnJson(False, '0')
con = con.replace('#log-bin=mysql-bin', 'log-bin=mysql-bin') con = con.replace('#log-bin=mysql-bin', 'log-bin=mysql-bin')
con = con.replace('#binlog_format=mixed', 'binlog_format=mixed') con = con.replace('#binlog_format=mixed', 'binlog_format=mixed')
mw.writeFile(conf, con)
mw.execShell('sync') mw.execShell('sync')
restart(version) restart(version)
else: else:
@ -349,11 +350,12 @@ def binLog(version = ''):
return mw.returnJson(True, dsize) return mw.returnJson(True, dsize)
con = con.replace('log-bin=mysql-bin', '#log-bin=mysql-bin') con = con.replace('log-bin=mysql-bin', '#log-bin=mysql-bin')
con = con.replace('binlog_format=mixed', '#binlog_format=mixed') con = con.replace('binlog_format=mixed', '#binlog_format=mixed')
mw.writeFile(conf, con)
mw.execShell('sync') mw.execShell('sync')
restart(version) restart(version)
mw.execShell('rm -f ' + path + '/mysql-bin.*') mw.execShell('rm -f ' + path + '/mysql-bin.*')
mw.writeFile(conf, con)
return mw.returnJson(True, '设置成功!') return mw.returnJson(True, '设置成功!')
@ -432,7 +434,7 @@ def getShowLogFile():
def getMdb8Ver(): def getMdb8Ver():
return ['8.0','8.1','8.2','8.3','8.4','9.0'] return ['8.0','8.1','8.2','8.3','8.4','9.0',"9.1","9.2"]
def pGetDbUser(): def pGetDbUser():
if mw.isAppleSystem(): if mw.isAppleSystem():

@ -11,8 +11,8 @@
"checks": "server/mysql/VERSION/bin/mysql", "checks": "server/mysql/VERSION/bin/mysql",
"path": "server/mysql/VERSION", "path": "server/mysql/VERSION",
"todo_versions":["5.6","5.7","8.0","8.2"], "todo_versions":["5.6","5.7","8.0","8.2"],
"versions":["5.5", "5.6", "5.7","8.0","8.2","8.3","8.4","9.0","9.1"], "versions":["5.5", "5.6", "5.7","8.0","8.2","8.3","8.4","9.0","9.1","9.2"],
"updates":["5.5.62","5.6.50", "5.7.32","8.0.34","8.2.0","8.3.0","9.0.1","9.1.0"], "updates":["5.5.62","5.6.50", "5.7.32","8.0.34","8.2.0","8.3.0","9.0.1","9.1.0","9.2.0"],
"shell":"install.sh", "shell":"install.sh",
"checks":"server/mysql", "checks":"server/mysql",
"path":"server/mysql", "path":"server/mysql",

@ -55,8 +55,8 @@ VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -
VERSION=9.1.0 VERSION=9.1.0
# https://dev.mysql.com/get/Downloads/MySQL-9.0/mysql-${VERSION}.tar.gz # https://dev.mysql.com/get/Downloads/MySQL-9.1/mysql-${VERSION}.tar.gz
# https://cdn.mysql.com//Downloads/MySQL-9.0/mysql-boost-${VERSION}.tar.gz # https://cdn.mysql.com//Downloads/MySQL-9.1/mysql-boost-${VERSION}.tar.gz
Install_mysql() Install_mysql()
{ {
mkdir -p ${mysqlDir} mkdir -p ${mysqlDir}
@ -104,11 +104,11 @@ Install_mysql()
fi fi
#检测文件是否损坏. #检测文件是否损坏.
md5_mysql_ok=90dc27a8b64eee938a0bb045c580b80c md5_mysql_ok=eb2c6bbd20569d2690bc7e34312f5210
if [ -f ${mysqlDir}/mysql-${VERSION}.tar.gz ];then if [ -f ${mysqlDir}/mysql-${VERSION}.tar.gz ];then
md5_mysql=`md5sum ${mysqlDir}/mysql-${VERSION}.tar.gz | awk '{print $1}'` md5_mysql=`md5sum ${mysqlDir}/mysql-${VERSION}.tar.gz | awk '{print $1}'`
if [ "${md5_mysql_ok}" == "${md5_mysql}" ]; then if [ "${md5_mysql_ok}" == "${md5_mysql}" ]; then
echo "mysql9.0 file check ok" echo "mysql9.1 file check ok"
else else
# 重新下载 # 重新下载
rm -rf ${mysqlDir}/mysql-${VERSION} rm -rf ${mysqlDir}/mysql-${VERSION}
@ -206,7 +206,7 @@ Install_mysql()
if [ -d $serverPath/mysql ];then if [ -d $serverPath/mysql ];then
rm -rf ${mysqlDir}/mysql-${VERSION} rm -rf ${mysqlDir}/mysql-${VERSION}
echo '9.0' > $serverPath/mysql/version.pl echo '9.1' > $serverPath/mysql/version.pl
echo "${VERSION}安装完成" echo "${VERSION}安装完成"
else else
# rm -rf ${mysqlDir}/mysql-${VERSION} # rm -rf ${mysqlDir}/mysql-${VERSION}

@ -0,0 +1,230 @@
# -*- coding: utf-8 -*-
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin
export PATH
# https://dev.mysql.com/downloads/mysql/
curPath=`pwd`
rootPath=$(dirname "$curPath")
rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
sysName=`uname`
mysqlDir=${serverPath}/source/mysql
_os=`uname`
echo "use system: ${_os}"
if [ ${_os} == "Darwin" ]; then
OSNAME='macos'
elif grep -Eq "openSUSE" /etc/*-release; then
OSNAME='opensuse'
zypper refresh
elif grep -Eq "FreeBSD" /etc/*-release; then
OSNAME='freebsd'
pkg install -y wget unzip
elif grep -Eqi "Arch" /etc/issue || grep -Eq "Arch" /etc/*-release; then
OSNAME='arch'
echo y | pacman -Sy unzip
elif grep -Eqi "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then
OSNAME='centos'
yum install -y wget zip unzip
elif grep -Eqi "Fedora" /etc/issue || grep -Eq "Fedora" /etc/*-release; then
OSNAME='fedora'
yum install -y wget zip unzip
elif grep -Eqi "Rocky" /etc/issue || grep -Eq "Rocky" /etc/*-release; then
OSNAME='rocky'
yum install -y wget zip unzip
elif grep -Eqi "AlmaLinux" /etc/issue || grep -Eq "AlmaLinux" /etc/*-release; then
OSNAME='alma'
yum install -y wget zip unzip
elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/*-release; then
OSNAME='debian'
apt update -y
apt install -y devscripts
apt install -y wget zip unzip
elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/*-release; then
OSNAME='ubuntu'
apt install -y wget zip unzip
else
OSNAME='unknow'
fi
VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
VERSION=9.2.0
# https://dev.mysql.com/get/Downloads/MySQL-9.2/mysql-${VERSION}.tar.gz
# https://cdn.mysql.com//Downloads/MySQL-9.2/mysql-boost-${VERSION}.tar.gz
Install_mysql()
{
mkdir -p ${mysqlDir}
echo '正在安装脚本文件...'
# ----- cpu start ------
if [ -z "${cpuCore}" ]; then
cpuCore="1"
fi
if [ -f /proc/cpuinfo ];then
cpuCore=`cat /proc/cpuinfo | grep "processor" | wc -l`
fi
MEM_INFO=$(free -m|grep Mem|awk '{printf("%.f",($2)/1024)}')
if [ "${cpuCore}" != "1" ] && [ "${MEM_INFO}" != "0" ];then
if [ "${cpuCore}" -gt "${MEM_INFO}" ];then
cpuCore="${MEM_INFO}"
fi
else
cpuCore="1"
fi
if [ "$cpuCore" -gt "2" ];then
cpuCore=`echo "$cpuCore" | awk '{printf("%.f",($1)*0.8)}'`
else
cpuCore="1"
fi
# ----- cpu end ------
cd ${rootPath}/plugins/mysql/lib && /bin/bash rpcgen.sh
INSTALL_CMD=cmake
# check cmake version
CMAKE_VERSION=`cmake -version | grep version | awk '{print $3}' | awk -F '.' '{print $1}'`
if [ "$CMAKE_VERSION" -eq "2" ];then
mkdir -p /var/log/mariadb
touch /var/log/mariadb/mariadb.log
INSTALL_CMD=cmake3
fi
if [ ! -f ${mysqlDir}/mysql-${VERSION}.tar.gz ];then
wget --no-check-certificate -O ${mysqlDir}/mysql-${VERSION}.tar.gz --tries=3 https://dev.mysql.com/get/Downloads/MySQL-9.2/mysql-${VERSION}.tar.gz
fi
#检测文件是否损坏.
md5_mysql_ok=acabc8aa764a94a8b10f90284c6e60c5
if [ -f ${mysqlDir}/mysql-${VERSION}.tar.gz ];then
md5_mysql=`md5sum ${mysqlDir}/mysql-${VERSION}.tar.gz | awk '{print $1}'`
if [ "${md5_mysql_ok}" == "${md5_mysql}" ]; then
echo "mysql9.2 file check ok"
else
# 重新下载
rm -rf ${mysqlDir}/mysql-${VERSION}
wget --no-check-certificate -O ${mysqlDir}/mysql-${VERSION}.tar.gz --tries=3 https://dev.mysql.com/get/Downloads/MySQL-9.2/mysql-${VERSION}.tar.gz
fi
fi
if [ ! -d ${mysqlDir}/mysql-${VERSION} ];then
cd ${mysqlDir} && tar -zxvf ${mysqlDir}/mysql-${VERSION}.tar.gz
fi
OPTIONS=''
##check openssl version
OPENSSL_VERSION=`openssl version|awk '{print $2}'|awk -F '.' '{print $1}'`
if [ "${OPENSSL_VERSION}" -ge "3" ];then
#openssl version to high
cd ${rootPath}/plugins/php/lib && /bin/bash openssl.sh
export PKG_CONFIG_PATH=$serverPath/lib/openssl/lib/pkgconfig
OPTIONS="-DWITH_SSL=${serverPath}/lib/openssl"
fi
WHERE_DIR_GCC=/usr/bin/gcc
WHERE_DIR_GPP=/usr/bin/g++
if [ "$OSNAME" == "centos" ] && [ "$VERSION_ID" == "7" ];then
yum install -y libudev-devel
yum install -y centos-release-scl
yum install -y devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils
gcc --version
WHERE_DIR_GCC=/opt/rh/devtoolset-11/root/usr/bin/gcc
WHERE_DIR_GPP=/opt/rh/devtoolset-11/root/usr/bin/g++
echo $WHERE_DIR_GCC
echo $WHERE_DIR_GPP
fi
if [ "$OSNAME" == "ubuntu" ];then
apt install -y libudev-dev
apt install -y libtirpc-dev
apt install -y libssl-dev
apt install -y libgssglue-dev
apt install -y software-properties-common
add-apt-repository -y ppa:ubuntu-toolchain-r/test
LIBTIRPC_VER=`pkg-config libtirpc --modversion`
if [ ! -f ${mysqlDir}/libtirpc_1.3.3.orig.tar.bz2 ];then
wget --no-check-certificate -O ${mysqlDir}/libtirpc_1.3.3.orig.tar.bz2 https://downloads.sourceforge.net/libtirpc/libtirpc-1.3.3.tar.bz2
cd ${mysqlDir} && tar -jxvf libtirpc_1.3.3.orig.tar.bz2
cd libtirpc-1.3.3 && ./configure
fi
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
apt install -y gcc-11 g++-11
WHERE_DIR_GCC=/usr/bin/gcc-11
WHERE_DIR_GPP=/usr/bin/g++-11
OPTIONS="${OPTIONS} -DFORCE_INSOURCE_BUILD=1"
OPTIONS="${OPTIONS} -D_FORTIFY_SOURCE=2"
fi
if [ "$OSNAME" == "opensuse" ];then
zypper install -y gcc11
zypper install -y gcc11-c++
WHERE_DIR_GCC=/usr/bin/gcc-11
WHERE_DIR_GPP=/usr/bin/g++-11
fi
if [ ! -d $serverPath/mysql ];then
# -DCMAKE_CXX_STANDARD=17 \
cd ${mysqlDir}/mysql-${VERSION} && ${INSTALL_CMD} \
-DCMAKE_INSTALL_PREFIX=$serverPath/mysql \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/var/tmp/mysql.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DDOWNLOAD_BOOST=1 \
-DFORCE_INSOURCE_BUILD=1 \
$OPTIONS \
-DCMAKE_C_COMPILER=$WHERE_DIR_GCC \
-DCMAKE_CXX_COMPILER=$WHERE_DIR_GPP \
-DDOWNLOAD_BOOST=0 \
-DWITH_BOOST=${mysqlDir}/mysql-${VERSION}/boost/
make -j${cpuCore} && make install && make clean
if [ -d $serverPath/mysql ];then
rm -rf ${mysqlDir}/mysql-${VERSION}
echo '9.2' > $serverPath/mysql/version.pl
echo "${VERSION}安装完成"
else
# rm -rf ${mysqlDir}/mysql-${VERSION}
echo "${VERSION}安装失败"
exit 1
fi
fi
}
Uninstall_mysql()
{
rm -rf $serverPath/mysql
echo '卸载完成'
}
action=$1
if [ "${1}" == "install" ];then
Install_mysql
else
Uninstall_mysql
fi

@ -496,6 +496,12 @@ def pluginsDbSupport():
return mw.returnJson(True, 'ok', data) return mw.returnJson(True, 'ok', data)
def installPreInspection():
php_confdir = mw.getServerDir()+'/web_conf/php/conf'
if not os.path.exists(php_confdir):
return "必须先安装一个php版本!"
return 'ok'
if __name__ == "__main__": if __name__ == "__main__":
func = sys.argv[1] func = sys.argv[1]
if func == 'status': if func == 'status':
@ -508,6 +514,8 @@ if __name__ == "__main__":
print(restart()) print(restart())
elif func == 'reload': elif func == 'reload':
print(reload()) print(reload())
elif func == 'install_pre_inspection':
print(installPreInspection())
elif func == 'conf': elif func == 'conf':
print(getConf()) print(getConf())
elif func == 'version': elif func == 'version':

@ -5,6 +5,7 @@
"type":"运行环境", "type":"运行环境",
"ps":"著名Web端MySQL管理工具", "ps":"著名Web端MySQL管理工具",
"to_ver":["4.8.4"], "to_ver":["4.8.4"],
"install_pre_inspection":true,
"versions":["4.4.15","4.9.11","5.2.1"], "versions":["4.4.15","4.9.11","5.2.1"],
"updates":["4.4.15","4.9.11","5.2.1"], "updates":["4.4.15","4.9.11","5.2.1"],
"shell":"install.sh", "shell":"install.sh",

@ -32,7 +32,7 @@ net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000 net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30 net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.ip_local_port_range = 1024 65001
vm.overcommit_memory=1 vm.overcommit_memory=1
vm.max_map_count = 262144 vm.max_map_count = 262144

@ -51,12 +51,7 @@ def send_msg(bot, tag='ad', trigger_time=300):
# 综合包网/NG接口开户 | 28/m | 6m | next,4/28 | x # 综合包网/NG接口开户 | 28/m | 6m | next,4/28 | x
# 实名认证/过人脸🕵各种账号处理✅ | 30/m| next,6/30 | @nngzs # 实名认证/过人脸🕵各种账号处理✅ | 30/m| next,6/30 | @nngzs
# 桃花资源采集| 13/m| next,7/13 | @xiaolizi1122 # 桃花资源采集| 13/m| next,7/13 | @xiaolizi1122
# D0抗投诉| 5/m | @lebo665544
keyboard = [ keyboard = [
[
types.InlineKeyboardButton(
text="D0抗投诉微信支付宝不限行业支付", url='https://www.ymzf.org?mw')
],
[ [
types.InlineKeyboardButton( types.InlineKeyboardButton(
text="SJ资源网播放计费", url='https://sjzy.tv?mw') text="SJ资源网播放计费", url='https://sjzy.tv?mw')
@ -75,7 +70,7 @@ def send_msg(bot, tag='ad', trigger_time=300):
], ],
[ [
types.InlineKeyboardButton( types.InlineKeyboardButton(
text="实卡接码🙎代实名/过人脸🅾开飞机会员", url='https://t.me/gjgzs2022') text="代付-代实名-备案域名-国际云服务器", url='https://t.me/gjgzs2022')
], ],
# [ # [
# types.InlineKeyboardButton( # types.InlineKeyboardButton(

@ -60,12 +60,7 @@ def send_msg(bot, tag='ad', trigger_time=300):
# 综合包网/NG接口开户 | 28/m | 6m | next,4/28 | x # 综合包网/NG接口开户 | 28/m | 6m | next,4/28 | x
# 实名认证/过人脸🕵各种账号处理✅ | 30/m| next,6/30 | @nngzs # 实名认证/过人脸🕵各种账号处理✅ | 30/m| next,6/30 | @nngzs
# 桃花资源采集| 13/m| next,7/13 | @xiaolizi1122 # 桃花资源采集| 13/m| next,7/13 | @xiaolizi1122
# D0抗投诉| 5/m | @lebo665544
keyboard = [ keyboard = [
[
types.InlineKeyboardButton(
text="D0抗投诉微信支付宝不限行业支付", url='https://www.ymzf.org?mw')
],
[ [
types.InlineKeyboardButton( types.InlineKeyboardButton(
text="SJ资源网播放计费", url='https://sjzy.tv?mw') text="SJ资源网播放计费", url='https://sjzy.tv?mw')
@ -84,7 +79,7 @@ def send_msg(bot, tag='ad', trigger_time=300):
], ],
[ [
types.InlineKeyboardButton( types.InlineKeyboardButton(
text="实卡接码🙎代实名/过人脸🅾开飞机会员", url='https://t.me/gjgzs2022') text="代付-代实名-备案域名-国际云服务器", url='https://t.me/gjgzs2022')
], ],
# [ # [
# types.InlineKeyboardButton( # types.InlineKeyboardButton(

@ -42,3 +42,4 @@ supervisor
pyTelegramBotAPI pyTelegramBotAPI
telebot telebot
pyyaml pyyaml
croniter

@ -331,7 +331,7 @@ mw_mirror()
if [ "$LOCAL_ADDR" == "common" ];then if [ "$LOCAL_ADDR" == "common" ];then
bash <(curl --insecure -sSL https://raw.githubusercontent.com/midoks/change-linux-mirrors/main/change-mirrors.sh) bash <(curl --insecure -sSL https://raw.githubusercontent.com/midoks/change-linux-mirrors/main/change-mirrors.sh)
else else
bash <(curl --insecure -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh) bash <(curl -sSL https://linuxmirrors.cn/main.sh)
fi fi
cd ${ROOT_PATH} cd ${ROOT_PATH}
} }

@ -14,6 +14,7 @@ from .user import init_admin_user
from .option import init_option from .option import init_option
from .init_db_system import init_db_system from .init_db_system import init_db_system
from .init_cmd import init_cmd from .init_cmd import init_cmd
from .init_cron import init_cron
from utils.firewall import Firewall as MwFirewall from utils.firewall import Firewall as MwFirewall
@ -30,6 +31,7 @@ def init():
init_db_system() init_db_system()
init_cmd() init_cmd()
# init_cron()
# 自动识别防火墙配置 # 自动识别防火墙配置
firewall_port = thisdb.getOption('setpu_auto_identify_firewall_port', default='no') firewall_port = thisdb.getOption('setpu_auto_identify_firewall_port', default='no')

@ -0,0 +1,89 @@
# coding:utf-8
# ---------------------------------------------------------------------------------
# MW-Linux面板
# ---------------------------------------------------------------------------------
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
# ---------------------------------------------------------------------------------
# Author: midoks <midoks@163.com>
# ---------------------------------------------------------------------------------
import os
import core.mw as mw
from utils.crontab import crontab
from croniter import croniter
from datetime import datetime
import thisdb
def cron_todb(data):
# print("------")
rdata = {}
if data[3] == "*" and data[2] != "*" :
rdata['type'] = 'month'
elif data[3] == "*" and data[4] != "*" :
rdata['type'] = 'week'
elif data[3] == "*" and data[4] == "*" and data[2] == "*" :
rdata['type'] = 'day'
elif data[1].find("/") > -1 :
rdata['type'] = 'hour-n'
elif data[0].find("/") > -1 :
rdata['type'] = 'minute-n'
# print(rdata)
# print(data)
return rdata
# print("------")
# 识别linux计划任务
def init_cron():
file = ''
cron_file = [
'/var/spool/cron/crontabs/root',
'/var/spool/cron/root',
]
for i in cron_file:
if os.path.exists(i):
file = i
if file == "":
return True
with open(file) as f:
for line in f.readlines():
cron_line = line.strip()
if cron_line.startswith("#"):
continue
cron_expression = cron_line.split(maxsplit=5) # 提取前 5 个字段(* * * * *)
command = cron_line.split(maxsplit=5)[5] # 提取命令部分
# 面板计划任务过滤
if command.startswith("/www/server/cron"):
continue
if command.startswith("\"/root/.acme.sh\""):
# print(cron_expression, command)
info = cron_todb(cron_expression)
# print(info)
# add_dbdata = {}
# add_dbdata['name'] = "ACME"
# add_dbdata['type'] = data['type']
# add_dbdata['where1'] = data['where1']
# add_dbdata['where_hour'] = data['hour']
# add_dbdata['where_minute'] = data['minute']
# add_dbdata['save'] = ""
# add_dbdata['backup_to'] = ""
# add_dbdata['sname'] = ""
# add_dbdata['sbody'] = data['sbody']
# add_dbdata['stype'] = "toShell"
# add_dbdata['echo'] = command
# add_dbdata['url_address'] = ''
# thisdb.addCrontab(add_dbdata)
# print(command)
# cron_list = content.split("\n")
# print(cron_list)

@ -157,7 +157,7 @@ class crontab(object):
cmd, title = self.getCrondCycle(data) cmd, title = self.getCrondCycle(data)
cron_path = mw.getServerDir() + '/cron' cron_path = mw.getServerDir() + '/cron'
cron_name = self.getShell(data) cron_shell = self.getShell(data)
cmd += ' ' + cron_path + '/' + cron_name + ' >> ' + cron_path + '/' + cron_name + '.log 2>&1' cmd += ' ' + cron_path + '/' + cron_name + ' >> ' + cron_path + '/' + cron_name + '.log 2>&1'
@ -178,7 +178,7 @@ class crontab(object):
add_dbdata['sname'] = data['sname'] add_dbdata['sname'] = data['sname']
add_dbdata['sbody'] = data['sbody'] add_dbdata['sbody'] = data['sbody']
add_dbdata['stype'] = data['stype'] add_dbdata['stype'] = data['stype']
add_dbdata['echo'] = cron_name add_dbdata['echo'] = cron_shell
add_dbdata['url_address'] = data['url_address'] add_dbdata['url_address'] = data['url_address']
tid = thisdb.addCrontab(add_dbdata) tid = thisdb.addCrontab(add_dbdata)

Loading…
Cancel
Save