Mariadb一键安装脚本

下载地址:https://mariadb.org/download/

#!/bin/bash
#将安装文件放在/usr/loca/下面,根据mariadb版本号不一样,修改MYSQL_TAR和MYSQL_UNZIP_FILE参数的版本号,然后执行脚本进行安装.
#脚本可重复执行,如果是已经有数据的情况下,先把之前的数据目录都备份好以后再执行脚本,防止数据被删除.
# date: 2016.7.20
MYSQL_HOME='/usr/local/mysql'
MYSQL_TAR='/usr/local/mariadb-10.0.15-linux-x86_64.tar.gz'
MYSQL_UNZIP_FILE='/usr/local/mariadb-10.0.15-linux-x86_64'
MYSQL_UNDO='/usr/local/mysql/undo'
MYSQL_REDO='/usr/local/mysql/redo'
MYSQL_USER='mysql'
MYSQL_PASSWD='xusj'
MYSQL_PORT='3306'
MYSQL_CONF='/etc/my.cnf'
TIME=`date +%Y%m%d`

#mysql用户/密码/实例相关参数
root_passwd="111111"
database_name='xxfae'
username='xxfae'

rm -rf $MYSQL_UNZIP_FILE  && rm -rf $MYSQL_HOME

#安装环境检查
check_soft()
{
    if [ ! -f $MYSQL_TAR ];then
        echo "请确认安装文件 $MYSQL_TAR 在$MYSQL_HOME目录,重新执行$0"
        rm -rf $MYSQL_UNZIP_FILE > /dev/null 2>&1
        rm -rf $MYSQL_HOME > /dev/null 2>&1
        rm -rf /etc/my.cnf > /dev/null 2>&1
        rm -rf /etc/init.d/mysqld >/dev/null 2>&1
    fi
        pid=`pidof mysqld`
    if [ ! -z $pid ];then
        kill -9 $pid
        echo "mysqld在运行中,杀掉mysql进程" && sleep 1
    fi
}

#安装环境准备
init()
{
    find / -name "mysql" -exec rm -rf {} \; >/dev/null 2>&1
    id mysql
    if [  "0" == "$?" ];then
        echo "mysql用户存在,删除mysql用户和组" 
        pid=`pidof mysqld`
        kill -9  $pid >/dev/null 2>&1
        /usr/sbin/userdel -r  mysql > /dev/null 2>&1
        echo "1创建mysql用户和组" && sleep 2
        /usr/sbin/groupadd mysql
        /usr/sbin/useradd -s /sbin/nologin -g mysql mysql
    else
        echo "2222创建mysql用户和组" && sleep 2
        /usr/sbin/groupadd mysql
        /usr/sbin/useradd -s /sbin/nologin -g mysql mysql
    fi
}

#安装程序
mysql_install()
{
    /bin/tar -zxf  $MYSQL_TAR  -C /usr/local/
    echo "创建mysql相关文件目录" && sleep 2
    ln -s $MYSQL_UNZIP_FILE $MYSQL_HOME
    mkdir -p $MYSQL_REDO 
    mkdir -p $MYSQL_UNDO
    chmod -R 755 $MYSQL_HOME/
    chown -R mysql:mysql $MYSQL_HOME/
   
    cd $MYSQL_HOME/
    echo "MySQL安装初始化..."
    ./scripts/mysql_install_db --user=$MYSQL_USER --innodb_undo_directory=$MYSQL_UNDO --innodb_undo_tablespaces=16
    if [ -n "$?" ] ;then
        echo "mysql install successful!"
        cp support-files/my-huge.cnf /etc/my.cnf
        cp support-files/mysql.server /etc/init.d/mysqld
    else
        echo "mysql install failed"
        exit 1    
    fi
}

#配置文件
mysql_conf()
{
    mv /etc/my.cnf /etc/my.cnf_$TIME.bak
    echo "[mysqld]
port		= 3306
socket		= /tmp/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 0
query_cache_type=0
log_slave_updates=ON
sync_relay_log=1
innodb_buffer_pool_size=4000M
transaction-isolation=READ-COMMITTED
innodb_autoinc_lock_mode = 2
#skip-name-resolve
innodb_thread_concurrency=5
back-log=500
default-storage-engine=InnoDB
innodb_flush_method=O_DIRECT

innodb_undo_tablespaces = 16
innodb_undo_directory = /usr/local/mysql/undo
innodb_log_group_home_dir=/usr/local/mysql/redo
innodb_data_home_dir=/usr/local/mysql/data
character-set-server=utf8
collation-server=utf8_general_ci
lower_case_table_names = 1
log_bin_trust_function_creators=1
innodb_strict_mode=true
log-bin=mysql-bin
binlog_checksum=NONE
binlog_format=ROW
binlog_cache_size = 8M 
max_binlog_size = 500M 
max_binlog_cache_size = 100M
expire_logs_days = 7
innodb_log_file_size=512m
innodb-log-buffer-size=8M
innodb-log-files-in-group=2
default-tmp-storage-engine=InnoDB
innodb-autoextend-increment=16M
innodb-buffer-pool-instances=4
innodb-file-per-table=true
innodb_rollback_on_timeout=true
innodb-old-blocks-time=60000
innodb-print-all-deadlocks=true
open-files-limit=32767
innodb_open_files=32767
log-output=FILE
slow-query-log=true
log-queries-not-using-indexes=true
thread_handling=pool-of-threads
thread_pool_max_threads=100
thread_pool_size=50
thread_cache_size=64
max-connections=3000
event_scheduler=ON
server-id	= 1
performance_schema=on
performance-schema-instrument='wait/io/file/%=on'
performance-schema-instrument='wait/io/table/%=on'
performance-schema-instrument='statement/com/%=on'
performance-schema-instrument='statement/sql/%=on'
performance-schema-instrument='stage/sql/%=on'
performance-schema-consumer-events_stages_current=on
performance-schema-consumer-events_stages_history_long=on
performance_schema_events_statements_history_long_size=10000
performance-schema-consumer-events_statements_current=on
performance-schema-consumer-events_statements_history_long=on
performance_schema_events_statements_history_long_size=10000
performance-schema-consumer-events_waits_current=on
performance-schema-consumer-events_waits_history_long=on
performance_schema_events_waits_history_long_size=10000
performance-schema-consumer-statements_digest=on
performance_schema_digests_size=10000

[mysqldump]
quick
max_allowed_packet = 16M" > /etc/my.cnf
}

#mysql服务设置,启动mysql
mysqld()
{
    chkconfig --add /etc/init.d/mysqld
    chkconfig mysqld on
    echo "启动mysql..."
    service mysqld start
}

passwd()
{
    echo "设置mysql的root管理密码成功!" && sleep 2
    source ~/.bash_profile
    mysqladmin -uroot password $root_passwd        
}

create_user()
{
    echo "创建mysql业务用户$username,默认密码为123456,请登录数据库进行修改!" && sleep 2 
    mysql -uroot -e "grant all privileges on *.* to $username@'localhost' identified by '123456';"    
}

create_db()
{
    echo "创建数据库实例$database_name,默认字符集为UTF-8." && sleep 2
   mysql -uroot -e "use mysql; create database $database_name charset utf8;"  
}


check_soft && init && mysql_install &&mysql_conf && mysqld && create_user && create_db && passwd