您的位置:首页 > 数据库 > MySQL

MySQL自动化安装脚本

2016-01-03 12:18 656 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MySQL 自动化