install_mysql.sh
#!/bin/bash# 端口PORT=${1}# mysql版本LEVEL=${2}# 是否多实例, 0, 1MULTI=${3}mysqlpackage="/usr/local"mysqldatapack="/data/mysql"cat > /etc/my.cnf <<EOFINMYSQLD[mysql]no-auto-rehashprompt='\\u@\\h:\\d \\v \\r:\\m:\\s> 'default-character-set=utf8mb4show-warnings[mysqld]user=mysqlpid-file=/data/mysql/mysqldata${PORT}/sock/mysql.pidport=${PORT}socket=/data/mysql/mysqldata${PORT}/sock/mysql.sockdatadir=/data/mysql/mysqldata${PORT}/mydatatmpdir=/data/mysql/mysqldata${PORT}/tmpdirslave-load-tmpdir=/data/mysql/mysqldata${PORT}/tmpdirgeneral-log-file=/data/mysql/mysqldata${PORT}/log/general.loglog-error=/data/mysql/mysqldata${PORT}/log/error.logslow-query-log-file=/data/mysql/mysqldata${PORT}/log/slow-query.logserver-id=${PORT}log-bin-index=/data/mysql/mysqldata${PORT}/binlog/mysql-bin.indexlog-bin=/data/mysql/mysqldata${PORT}/binlog/mysql-binsync-binlog=10relay-log-index=/data/mysql/mysqldata${PORT}/relaylog/mysql-relay-bin.indexrelay-log=/data/mysql/mysqldata${PORT}/relaylog/mysql-relay-bincharacter-set-server=utf8mb4collation-server=utf8mb4_general_ciinnodb-buffer-pool-size=`free -m | grep Mem | awk '{print $2*1024*0.8}'`innodb-data-home-dir=/data/mysql/mysqldata${PORT}/innodb_tsinnodb-data-file-path=ibdata1:4096M:autoextendinnodb-log-group-home-dir=/data/mysql/mysqldata${PORT}/innodb_loginnodb-log-file-size=128Minnodb-flush-log-at-trx-commit=2innodb-io-capacity=100innodb-force-recovery=0gtid-mode=ONenforce-gtid-consistencysql-mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'EOFINMYSQLD# 解压二进制包到指定目录mysqlpackexists=`ls -l ${mysqlpackage} | grep mysql`if [[ ${mysqlpackexists} == "" ]];then if [[ ${LEVEL} == "5.7" ]];then tar -zxvf ./mysql-${LEVEL}* -C ${mysqlpackage} fi if [[ ${LEVEL} == "8.0" ]];then tar -xvf ./mysql-${LEVEL}.*.tar -C ${mysqlpackage} fielse echo "mysql binary package is already exists!"fiif [ ! -d ${mysqlpackage}/mysql ];then ln -s ${mysqlpackage}/mysql-${LEVEL}* ${mysqlpackage}/mysqlfi# 拷贝mysql.serverif [ ! -f /etc/init.d/mysqld ];then cp ${mysqlpackage}/mysql/support-files/mysql.server /etc/init.d/mysqldfi# 创建用户userexists=`cat /etc/passwd | grep mysql`if [[ ${userexists} == "" ]];then useradd mysqlelse echo "user mysql is already exists!"fi # 创建目录if [ ! -d ${mysqldatapack}/mysqldata${PORT} ];then mkdir -p ${mysqldatapack}/mysqldata${PORT}fimkdir -p ${mysqldatapack}/mysqldata${PORT}/{mydata,mydata,innodb_ts,innodb_log,relaylog,tmpdir,log,sock,binlog}chown -R mysql.mysql ${mysqldatapack}/mysqldata${PORT}# 初始化#${mysqlpackage}/mysql/bin/mysqld --defaults-file=/tmp/mysqlinstall.cnf --user=mysql --initialize-insecure${mysqlpackage}/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --initialize-insecure# 启动${mysqlpackage}/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &#cat /tmp/mysqlinstall.cnf > /etc/my.cnf#rm -rf /tmp/mysqlinstall.cnf