mysql安装部署

#!/bin/sh

execute_path=`dirname $0`
SCRIPT_PATH=`cd $execute_path; pwd`
. $SCRIPT_PATH/exports.sh

add_group() {
    grep $group /etc/group 2>&1 >/dev/null
    if [ $? -ne 0 ];then
        groupadd $group
    else
        echoAndLog $SERVICE_NAME "group: "$group" is exist"        
    fi
}
    
add_user() {
    id $user 2>&1 >/dev/null
    
    if [ $? -ne 0 ];then
        useradd -g $group -d $user_dir -m $user
        chown "$user":"$group" $user_dir
    else
        echoAndLog $SERVICE_NAME "user: "$user" is exist"
        echoAndLog $SERVICE_NAME "please delete this user:$user and directory: $user_dir"
    fi
}



install_mysql() {
    rm -rf $user_dir/*
    cp $MYSQL_PKG_PATH $user_dir
    cd $user_dir
    tar xvzf $MYSQL_VERSION".tar.gz"  
    sed -i "s#/usr/local/mysql#$user_dir/mysql#g" $MYSQL_VERSION/bin/mysqld_safe 
    chown $user:$group $MYSQL_VERSION
    rm -rf $MYSQL_VERSION".tar.gz"
    
}

set_mysql_home() {
    cd $user_dir
    rm -fr mysql
    su - $user -c "ln -s $MYSQL_VERSION mysql"
    su - $user -c "mkdir data; mkdir log; cd mysql; bin/mysql_install_db --defaults-file=$user_dir/my.cnf --basedir=$user_dir/mysql --datadir=$user_dir/data/mysql"
}


set_autoRun() {
    echo "su - $user -c \"cd mysql/bin; ./mysqld_safe --defaults-file=$user_dir/my.cnf --basedir=$user_dir/mysql --datadir=$user_dir/data/mysql --socket=$user_dir/mysql.sock --pid-file=$user_dir/mysqld.pid &\"" >> /etc/rc.d/rc.local
}

config_mysql() {
    default_conf=$user_dir/my.cnf
    if [ -f $default_conf ]
    then
        rm -rf $default_conf
    fi
    echo "[mysqld]" >>$default_conf
    echo "collation-server=utf8_general_ci" >>$default_conf
    echo "character-set-server=utf8" >>$default_conf
    echo "innodb_large_prefix = true" >>$default_conf
    echo "innodb_file_format = barracuda" >>$default_conf
    echo "lower_case_table_names = 1" >>$default_conf
    echo "datadir=$user_dir/data/mysql" >>$default_conf
    echo "socket=$user_dir/mysql.sock" >>$default_conf
    echo "symbolic-links=0" >>$default_conf
    echo "max_connections=1000" >>$default_conf
    echo "tmp_table_size=256M" >>$default_conf
    echo "max_heap_table_size=256M" >>$default_conf
    
    echo "" >>$default_conf
    echo "[mysqld_safe]" >>$default_conf
    echo "log-error=$user_dir/log/mysqld.log" >>$default_conf
    echo "pid-file=$user_dir/mysqld.pid" >>$default_conf
    echo "[client]" >>$default_conf
    echo "socket=$user_dir/mysql.sock" >>$default_conf
    echo "">>$default_conf
    echo "!includedir /etc/my.cnf.d" >>$default_conf
        chown $user:$group $default_conf
}

start_mysql() {
    i=0
    echo $user_dir/my.cnf
    su - $user -c "cd mysql/bin; ./mysqld_safe --defaults-file=$user_dir/my.cnf  --basedir=$user_dir/mysql --datadir=$user_dir/data/mysql --socket=$user_dir/mysql.sock --pid-file=$user_dir/mysqld.pid --skip-grant-tables &"
    while [ 1 -eq 1 ]
    do
        lsof -i:3306
        if [ $? -eq 0 ]; then
            return 0
        else
            let i+=1 
            sleep 1
            if [ $i -gt 300 ]; then
                   echo "mysql start failed"
                   return 1
                    fi
        fi
    done
}

resetRootPasswd() {
    sleep 20
    $user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "update mysql.user set authentication_string=password('') where user='root' and Host = 'localhost';"
    $user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "flush privileges;"
}

sendTimeoutInfo()
{
    content="installing mysql takes over 10 minutes, installing process will exit!"
    echo $content
}

timeout()
{
    waitfor=600
    command=$*
    $command &
    commandpid=$!
    ( sleep $waitfor ; kill -9 $commandpid  > /dev/null 2>&1 && sendTimeoutInfo ) &
    watchdog=$!
    sleeppid=$PPID
    wait $commandpid > /dev/null 2>&1
    kill $sleeppid > /dev/null 2>&1
}

setEnv()
{
    echo 'PATH=$PATH:$HOME/mysql/bin' >> $user_dir/.bash_profile
    su - $user -c "source .bash_profile"    
}

createAppUser()
{
    sleep 5
    $user_dir/mysql/bin/mysql -S$user_dir/mysql.sock --connect-expired-password -e "set password = password('');"
    $user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "grant all privileges on *.* to 'ztecms'@'%' identified by '!Root@123';"
    $user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "grant all privileges on *.* to 'ztecms'@'localhost' identified by '!Root@123';"
}

#Script main

group=$MYSQL_INSTALL_GROUP
user=$MYSQL_INSTALL_USER
user_dir=/home/$user

add_group
echoAndLog $SERVICE_NAME "add $group group ok"

add_user
echoAndLog $SERVICE_NAME "add $user user ok"

install_mysql
config_mysql


echoAndLog $SERVICE_NAME "install mysql ok"

set_mysql_home

echoAndLog $SERVICE_NAME "set mysql home ok"


#set_autoRun

#echoAndLog $SERVICE_NAME "set mysql autoRun ok"

start_mysql
if [ $? -ne 0 ]; then
    echoAndLog $SERVICE_NAME "start mysql failed"
    exit 1
else
    sleep 30
    echoAndLog $SERVICE_NAME "start mysql ok"
    resetRootPasswd
    if [ $? -ne 0 ]; then
        echoAndLog $SERVICE_NAME "reset root password failed"
        exit 1
    else
        echoAndLog $SERVICE_NAME "reset root password ok"
    fi
fi

setEnv
createAppUser
if [ $? -eq 0 ]
then
   echoAndLog $SERVICE_NAME "createAppUser success"
else
   echoAndLog $SERVICE_NAME "createAppUse failed"
   exit 1
fi


if [ ! -d $MYSQL_HA_DIR ]
then    
    mkdir -p $MYSQL_HA_DIR
fi
cd $SCRIPT_PATH
\cp -rf exports.sh monitor.sh run.sh stop.sh rollback.sh uninstall.sh $MYSQL_HA_DIR

sh stop.sh
if [ $? -eq 0 ]
then
   echoAndLog $SERVICE_NAME "stop mysql success"
   echoAndLog $SERVICE_NAME "install mysql finished"
   exit 0
else
   echoAndLog $SERVICE_NAME "stop mysql failed"
   echoAndLog $SERVICE_NAME "install mysql error"
   exit 1
fi

 

#!/bin/sh
execute_path=`dirname $0`SCRIPT_PATH=`cd $execute_path; pwd`. $SCRIPT_PATH/exports.sh
add_group() {grep $group /etc/group 2>&1 >/dev/nullif [ $? -ne 0 ];thengroupadd $groupelseechoAndLog $SERVICE_NAME "group: "$group" is exist"fi}add_user() {id $user 2>&1 >/dev/nullif [ $? -ne 0 ];thenuseradd -g $group -d $user_dir -m $userchown "$user":"$group" $user_direlseechoAndLog $SERVICE_NAME "user: "$user" is exist"echoAndLog $SERVICE_NAME "please delete this user:$user and directory: $user_dir"fi}


install_mysql() {    rm -rf $user_dir/*cp $MYSQL_PKG_PATH $user_dircd $user_dirtar xvzf $MYSQL_VERSION".tar.gz"  sed -i "s#/usr/local/mysql#$user_dir/mysql#g" $MYSQL_VERSION/bin/mysqld_safe chown $user:$group $MYSQL_VERSIONrm -rf $MYSQL_VERSION".tar.gz"}
set_mysql_home() {cd $user_dirrm -fr mysqlsu - $user -c "ln -s $MYSQL_VERSION mysql"su - $user -c "mkdir data; mkdir log; cd mysql; bin/mysql_install_db --defaults-file=$user_dir/my.cnf --basedir=$user_dir/mysql --datadir=$user_dir/data/mysql"}

set_autoRun() {echo "su - $user -c \"cd mysql/bin; ./mysqld_safe --defaults-file=$user_dir/my.cnf --basedir=$user_dir/mysql --datadir=$user_dir/data/mysql --socket=$user_dir/mysql.sock --pid-file=$user_dir/mysqld.pid &\"" >> /etc/rc.d/rc.local}
config_mysql() {default_conf=$user_dir/my.cnfif [ -f $default_conf ]then    rm -rf $default_conffiecho "[mysqld]" >>$default_confecho "collation-server=utf8_general_ci" >>$default_confecho "character-set-server=utf8" >>$default_confecho "innodb_large_prefix = true" >>$default_confecho "innodb_file_format = barracuda" >>$default_confecho "lower_case_table_names = 1" >>$default_confecho "datadir=$user_dir/data/mysql" >>$default_confecho "socket=$user_dir/mysql.sock" >>$default_confecho "symbolic-links=0" >>$default_confecho "max_connections=1000" >>$default_confecho "tmp_table_size=256M" >>$default_confecho "max_heap_table_size=256M" >>$default_confecho "" >>$default_confecho "[mysqld_safe]" >>$default_confecho "log-error=$user_dir/log/mysqld.log" >>$default_confecho "pid-file=$user_dir/mysqld.pid" >>$default_confecho "[client]" >>$default_confecho "socket=$user_dir/mysql.sock" >>$default_confecho "">>$default_confecho "!includedir /etc/my.cnf.d" >>$default_conf        chown $user:$group $default_conf}
start_mysql() {i=0echo $user_dir/my.cnfsu - $user -c "cd mysql/bin; ./mysqld_safe --defaults-file=$user_dir/my.cnf  --basedir=$user_dir/mysql --datadir=$user_dir/data/mysql --socket=$user_dir/mysql.sock --pid-file=$user_dir/mysqld.pid --skip-grant-tables &"while [ 1 -eq 1 ]dolsof -i:3306if [ $? -eq 0 ]; thenreturn 0else    let i+=1     sleep 1    if [ $i -gt 300 ]; then           echo "mysql start failed"           return 1                    fifidone}
resetRootPasswd() {    sleep 20$user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "update mysql.user set authentication_string=password('') where user='root' and Host = 'localhost';"$user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "flush privileges;"}
sendTimeoutInfo(){    content="installing mysql takes over 10 minutes, installing process will exit!"    echo $content}
timeout(){    waitfor=600    command=$*    $command &    commandpid=$!    ( sleep $waitfor ; kill -9 $commandpid  > /dev/null 2>&1 && sendTimeoutInfo ) &    watchdog=$!    sleeppid=$PPID    wait $commandpid > /dev/null 2>&1    kill $sleeppid > /dev/null 2>&1}
setEnv(){    echo 'PATH=$PATH:$HOME/mysql/bin' >> $user_dir/.bash_profile    su - $user -c "source .bash_profile"    }
createAppUser(){sleep 5$user_dir/mysql/bin/mysql -S$user_dir/mysql.sock --connect-expired-password -e "set password = password('');"$user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "grant all privileges on *.* to 'ztecms'@'%' identified by '!Root@123';"$user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "grant all privileges on *.* to 'ztecms'@'localhost' identified by '!Root@123';"}
#Script main
group=$MYSQL_INSTALL_GROUPuser=$MYSQL_INSTALL_USERuser_dir=/home/$user
add_groupechoAndLog $SERVICE_NAME "add $group group ok"
add_userechoAndLog $SERVICE_NAME "add $user user ok"
install_mysqlconfig_mysql

echoAndLog $SERVICE_NAME "install mysql ok"
set_mysql_home
echoAndLog $SERVICE_NAME "set mysql home ok"

#set_autoRun
#echoAndLog $SERVICE_NAME "set mysql autoRun ok"
start_mysqlif [ $? -ne 0 ]; thenechoAndLog $SERVICE_NAME "start mysql failed"exit 1else    sleep 30echoAndLog $SERVICE_NAME "start mysql ok"resetRootPasswdif [ $? -ne 0 ]; thenechoAndLog $SERVICE_NAME "reset root password failed"exit 1elseechoAndLog $SERVICE_NAME "reset root password ok"fifi
setEnvcreateAppUserif [ $? -eq 0 ]then   echoAndLog $SERVICE_NAME "createAppUser success"else   echoAndLog $SERVICE_NAME "createAppUse failed"   exit 1fi

if [ ! -d $MYSQL_HA_DIR ]then        mkdir -p $MYSQL_HA_DIRficd $SCRIPT_PATH\cp -rf exports.sh monitor.sh run.sh stop.sh rollback.sh uninstall.sh $MYSQL_HA_DIR
sh stop.shif [ $? -eq 0 ]then   echoAndLog $SERVICE_NAME "stop mysql success"   echoAndLog $SERVICE_NAME "install mysql finished"   exit 0else   echoAndLog $SERVICE_NAME "stop mysql failed"   echoAndLog $SERVICE_NAME "install mysql error"   exit 1fi

 

posted @ 2019-08-27 15:36  DaShuZang  阅读(74)  评论(0)    收藏  举报