#!/bin/bash
. /etc/init.d/functions
ipaddr=`ifconfig |grep "inet "|grep "netmask"|awk '{print $2}' |grep -v 127.0.0.1 |head -n1`
serverid=`echo $ipaddr |awk -F\. '{print $2$3$4}'`
while true
do
read -p "Please enter MySQL instance port to create,such as [3306],enter [Q] exit: " mysql_port
if [ ${mysql_port} == "Q" ];then
exit 0
fi
if [[ ${mysql_port} =~ ^[3][3][0-9][0-9]$ ]]; then
#create datadir
if [ -d /data/mysql${mysql_port} ];then
echo "Datadir already exists,Please Retry or Entre Q to exit: "
continue
else
mkdir -p /data/mysql${mysql_port} && echo "/data/mysql${mysql_port} Datadir create successful"
fi
mkdir -p /data/dblog/mysql${mysql_port}/{binlog,relaylog} && echo "/data/mysql${mysql_port} Logdir create successful"
mkdir -p /data/tmp/mysql${mysql_port} && echo "/data/mysql${mysql_port}/tmp Tmpdir create successful"
chown -R mysql.mysql /data
read -p "Please enter MySQL ${mysql_port} instance innodb_buffer_pool_size , The Unit is M: " buf_pool
#my.cnf
cp /etc/my.cnf /etc/my${mysql_port}.cnf && echo "Create mysql${mysql_port}.cnf at /etc/"
sed -i -r "/\<port/ s/port.*/port = ${mysql_port}/g" /etc/my${mysql_port}.cnf
sed -i -r "/\<datadir/ s/datadir.*/datadir = \/data\/mysql${mysql_port}/g" /etc/my${mysql_port}.cnf
sed -i -r "/\<tmpdir/ s/tmpdir.*/tmpdir = \/data\/tmp\/mysql${mysql_port}/g" /etc/my${mysql_port}.cnf
sed -i -r "/\<slow_query_log_file/ s/slow_query_log_file.*/slow_query_log_file = \/data\/dblog\/mysql${mysql_port}\/mysql.slow/g" /etc/my${mysql_port}.cnf
sed -i -r "/\<log_error/ s/log_error.*/log_error = \/data\/dblog\/mysql${mysql_port}\/error.log/g" /etc/my${mysql_port}.cnf
sed -i -r "/\<log_bin/ s/log_bin.*/log_bin = \/data\/dblog\/mysql${mysql_port}\/binlog\/mysql-bin/g" /etc/my${mysql_port}.cnf
sed -i -r "/\<relay-log/ s/relay-log.*/relay-log = \/data\/dblog\/mysql${mysql_port}\/relaylog\/relay-bin/g" /etc/my${mysql_port}.cnf
sed -i -r "/\<innodb_data_home_dir/ s/innodb_data_home_dir.*/innodb_data_home_dir = \/data\/mysql${mysql_port}/g" /etc/my${mysql_port}.cnf
sed -i -r "/\<socket/ s/socket.*/socket = \/tmp\/mysql${mysql_port}.sock/g" /etc/my${mysql_port}.cnf
#server-id
sed -i -r "/\<server-id/ s/server-id.*/server-id = ${serverid}/g" /etc/my${mysql_port}.cnf
#buf_pool
#memtotal=`cat /proc/meminfo |grep MemTotal|awk '{print $2}'`
#memtotal=`echo $((${memtotal}/1024))`
#buf_pool=`echo "${memtotal} * 0.75" |bc |cut -d'.' -f1`
sed -i -r "/\<innodb_buffer_pool_size/ s/innodb_buffer_pool_size.*/innodb_buffer_pool_size = ${buf_pool}M/g" /etc/my${mysql_port}.cnf
#Initialize
echo "Initialize MySQL mysql${mysql_port} Instance..."
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my${mysql_port}.cnf --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql${mysql_port}
grep password /data/dblog/mysql${mysql_port}/error.log | awk '{print $NF}' > /data/mysql${mysql_port}/passwd.txt && echo "Initialize sucessful , temporary password stored in the /data/mysql${mysql_port}/passwd.txt "
if [ $? -eq 0 ]; then
action "Mysql ${mysql_port} Instance Initialize Successful" /bin/true
else
action "Mysql ${mysql_port} Instance Initialize Failed" /bin/false
fi
#Startup
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my${mysql_port}.cnf &
if [ $? -eq 0 ]; then
action "Mysql ${mysql_port} Instance Startup Successful" /bin/true
exit 0
else
action "Mysql ${mysql_port} Instance Startup Failed" /bin/false
exit 1
fi
else
echo "The parameter must be a number,such as 33[06]"
continue
fi
done
MySQL多实例安装脚本
最新推荐文章于 2024-10-09 17:52:59 发布