MySQL自动化安装脚本:mysql_auto_install.sh
使用方法:
#!/bin/bash
arg1=$1
arg2=$2
arg3=$3
argsnum=$#
user=mysql
group=mysql
current_release=`cat /etc/redhat-release`
os_release1=5.9
os_release2=6.5
version=`echo $2| grep -o "[0-9].[0-9].[0-9][0-9]"`
dir="p"$version"_project_"$3
mysqlpackages=( bison ncurses ncurses-devel gcc gcc-c++ make unzip openssl openssl-devel cmake libaio-devel )
pri_sql="delete from mysql.user where host != ‘localhost‘ or user !=‘root‘;GRANT ALL PRIVILEGES ON *.* TO ‘admin‘@‘%‘ IDENTIFIED BY PASSWORD ‘*7147F8A1B32468BDDDB4CB5AE0B2CC4FE4F4A17A‘ WITH GRANT OPTION;GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘localhost‘ IDENTIFIED BY PASSWORD ‘*7147F8A1B32468BDDDB4CB5AE0B2CC4FE4F4A17A‘ WITH GRANT OPTION;flush privileges;"
logger(){
local info="$*"
echo "[`date +‘%Y/%m/%d %H:%M:%S‘`] $info"
}
mkdirectories()
{
mkdir -pv /data/mysqldata/$dir/data/
mkdir -pv /data/mysqldata/$dir/tmp/
mkdir -pv /data/mysqldata/$dir/logs/binlog/
mkdir -pv /data/mysqldata/$dir/logs/relay-log/
mkdir -pv /data/mysqldata/$dir/etc
chown mysql.mysql /data -R
}
function prepare(){
# check depended packages for MYSQL
i=0
while [ $i -lt ${#mysqlpackages[@]} ]
do
str=`rpm -q ${mysqlpackages[$i]}| grep not`
if [ -n "$str" ];then
echo -e "Please install depended package \e[31m${mysqlpackages[$i]}\e[m for MYSQL first!"
echo -e "Please execute: \e[31m yum install -y bison ncurses ncurses-devel gcc gcc-c++ make unzip openssl openssl-devel cmake libaio-devel \e[m"
exit
fi
let i++
done
}
#check args
function check_args()
{
if [ ! -z $arg1 ] && [ $arg1 == "-i" ] && [ ! -z $arg2 ] && [ ! -z $arg3 ] && [ $argsnum -eq 3 ];then
sid=$arg2
else
echo -e "\033[31mUsage:\033[0m ./`basename $0` -i pecona-5.5.33 3306 \033[31m OR \033[0m ./`basename $0` -i pecona-5.6.23 3306"
exit
fi
if [ ! $arg2 == "pecona-5.6.23" ] && [ ! $arg2 == "pecona-5.5.33" ] ;then
echo -e "mysql version must be \033[31m pecona-5.5.33 OR pecona-5.6.23 \033[0m"
exit
fi
expr $arg3 + 0 &>/dev/null
if [ $? -ne 0 ] ;then
echo "port must be integer"
exit
elif [ $arg3 -le 3000 ]; then
echo "port must be grater than 1024"
exit
elif [ $arg3 -gt 9999 ];then
echo " port master be less than 9999"
exit
fi
}
function createuser()
{
#create group if not exists
egrep "^$group" /etc/group >& /dev/null
if [ $? -ne 0 ]
then
groupadd -g 550 $group
fi
#create user if not exists
id $user >& /dev/null
if [ $? -ne 0 ]
then
useradd -u 550 -g $group $user
echo "mysql"|passwd mysql --stdin &> /dev/null
fi
}
# install mysql server ....
function install_mysql()
{
# if os is centos 5.9 ,then install 5.5.33
if [[ "$current_release" == *"$os_release1"* ]] && [[ "$sid" == "pecona-5.5.33" ]] ;then
logger "start install_mysql"
echo "pecona-5.5.33 on 5.9"
logger "end install mysql"
fi
#if os is centos 5.9 ,then install 5.6.22
if [[ "$current_release" == *"$os_release1"* ]] && [[ "$sid" == "pecona-5.6.23" ]] ;then
#wget http://xxxx/install/mysql/auto_install/mysql-5.5.33_5.9.tar.gz -P /tmp
echo " pecona-5.6.23 on 5.9"
fi
#if os is centos 6.5,then install 5.5.33
if [[ "$current_release" == *"$os_release2"* ]] && [[ "$sid" == "pecona-5.5.33" ]] ;then
#wget http://xxxx/install/mysql/auto_install/mysql-5.5.33_5.9.tar.gz -P /tmp
echo " pecona-5.5.33 on 6.5"
fi
#if os is centos 6.5 ,then install 5.6.22
if [[ "$current_release" == *"$os_release2"* ]] && [[ "$sid" == "pecona-5.6.23" ]] ;then
#wget http://xxxx/install/mysql/auto_install/mysql-5.5.33_5.9.tar.gz -P /tmp
logger "start installing mysql"
createuser
mkdirectories
tar xvf ./soft/percona-server-$version-$os_release2.tar.gz -C /usr/local &> /dev/null
initdatabase
logger "end installing mysql"
fi
}
function initdatabase()
{
mv /usr/local/mysql/my.cnf /data/mysqldata/$dir/etc
sedMycnf
/usr/local/mysql/p$version/scripts/mysql_install_db --defaults-file=/data/mysqldata/$dir/etc/my.cnf --basedir=/usr/local/mysql/p$version/ --datadir=/data/mysqldata/$dir/data/ --user=mysql
/usr/local/mysql/p$version/bin/mysqld_safe --defaults-file=/data/mysqldata/$dir/etc/my.cnf &
}
function sedMycnf()
{
sed -i "s/^port.*$/port=$arg3/g" /data/mysqldata/$dir/etc/my.cnf
sed -i "s/p5.6.23_wms_3306/$dir/g" /data/mysqldata/$dir/etc/my.cnf
}
check_args
prepare
install_mysql >>mysql_install.log 2>&1本文出自 “小鱼的博客” 博客,请务必保留此出处http://395469372.blog.51cto.com/1150982/1731025
原文:http://395469372.blog.51cto.com/1150982/1731025