標籤:mysql 一鍵部署
在Linux 上安裝MySQL單一實例SHELL指令碼
在CentOS 6.5環境測試通過
#!/bin/bashuser=mysqlgroup=mysqlport=3306basedir=/usr/local/mysqldatadir=/data/mysql/mysql_${port}/datasourcefile=$1mysqlprofile=/etc/my.cnflogfile=/tmp/mysqlinstall.lognowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`retval=0Usage(){ nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[INFO]:Usage: `basename $0` MySQL_Source_File\e[m"}if [ $# != 1 ];then nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[ERROR]:INPUT ARGUMENTS ERROR!\e[m" Usage exit 1fi[ ! -d $basedir ]&& mkdir -p $basedir[ ! -d $datadir ]&& mkdir -p $datadircontent=`ls $basedir`if [ "x$content" != "x" ];then nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[ERROR]:‘$basedir‘ IS NOT NULL.\e[m" exit 1ficontent1=`ls $datadir`if [ "x$content1" != "x" ];then nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[ERROR]:‘$datadir‘ IS NOT NULL.\e[m" exit 1ficheck_port=`netstat -na |grep ":${port}" |awk ‘{print $4}‘ |grep ":${port}"`if [ "x$check_port" != "x" ];then nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[ERROR]:‘$port‘ PORT ALREADY USED!\e[m" exit 1fiif [ ! -f $sourcefile ];then nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[ERROR]:‘$sourcefile‘ IS NOT EXISTS.\e[m" Usage exit 1else nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[INFO]:Extract MySQL Install File.\e[m" tar xzf $sourcefile --strip-components 1 -C $basedir retval=$? nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` [ $retval -eq 0 ] && echo -e "\e[0;36m${nowtime}[INFO]:Extract MySQL Install File Complete.\e[m"fiif [ $retval -ne 0 ];then nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[ERROR]:Extract File ERROR,Please Check Your Package.\e[m" echo 1fi#create group if not exists egrep "^$group" /etc/group >& /dev/null if [ $? -ne 0 ] then groupadd $group nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[INFO]:Add Group...\e[m"fi #create user if not exists egrep "^$user" /etc/passwd >& /dev/null if [ $? -ne 0 ] then useradd -g $group $user nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[INFO]:Add User...\e[m"fi#Create my.cnfdatapath=${datadir%/*}[ ! -d "${datapath}/tmp" ] && mkdir -p ${datapath}/tmp[ ! -d "${datapath}/logs" ] && mkdir -p ${datapath}/logsif [ ! -f $mysqlprofile ];thennowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`echo -e "\e[0;36m${nowtime}[INFO]:Starting Create my.cnf.\e[m"cat > $mysqlprofile <<EOF[client]port = 3306socket = /tmp/mysql.sock# The MySQL server[mysqld]# Basicport = $portuser = $userbasedir = $basedirdatadir = $datadirtmpdir = $datapath/tmpsocket = /tmp/mysql.socklog-bin = $datapath/logs/mysql-binlog-error = $datapath/logs/error.logslow-query-log-file = $datapath/logs/slow.logskip-external-lockingskip-name-resolvelog-slave-updatesserver-id =2163306explicit_defaults_for_timestamp = 1character-set-server = utf8slow-query-logbinlog_format = mixedmax_binlog_size = 128Mbinlog_cache_size = 1Mexpire-logs-days = 5back_log = 500long_query_time=1max_connections=1100max_user_connections=1000max_connect_errors=1000wait_timeout=100interactive_timeout=100connect_timeout = 20slave-net-timeout=30max-relay-log-size = 256Mrelay-log = relay-bintransaction_isolation = READ-COMMITTEDperformance_schema=0#myisam_recoverkey_buffer_size = 64Mmax_allowed_packet = 16M#table_cache = 3096table_open_cache = 6144table_definition_cache = 4096sort_buffer_size = 128Kread_buffer_size = 1Mread_rnd_buffer_size = 1Mjoin_buffer_size = 128Kmyisam_sort_buffer_size = 32Mtmp_table_size = 32Mmax_heap_table_size = 64Mquery_cache_type=0query_cache_size = 0bulk_insert_buffer_size = 32Mthread_cache_size = 64#thread_concurrency = 32thread_stack = 192Kskip-slave-start# InnoDBinnodb_data_home_dir = $datadirinnodb_log_group_home_dir = $datapath/logsinnodb_data_file_path = ibdata1:1G:autoextendinnodb_buffer_pool_size = 500M#48G#innodb_buffer_pool_size = 33Ginnodb_buffer_pool_instances = 8#innodb_additional_mem_pool_size = 16Minnodb_log_file_size = 1024Minnodb_log_buffer_size = 16Minnodb_log_files_in_group = 3innodb_flush_log_at_trx_commit = 0innodb_lock_wait_timeout = 10innodb_sync_spin_loops = 40innodb_max_dirty_pages_pct = 90innodb_support_xa = 0innodb_thread_concurrency = 0innodb_thread_sleep_delay = 500innodb_file_io_threads = 4innodb_concurrency_tickets = 1000log_bin_trust_function_creators = 1innodb_flush_method = O_DIRECTinnodb_file_per_tableinnodb_read_io_threads = 16innodb_write_io_threads = 16innodb_io_capacity = 2000innodb_file_format = Barracudainnodb_purge_threads=1innodb_purge_batch_size = 32innodb_old_blocks_pct=75innodb_change_buffering=allinnodb_stats_on_metadata=OFF[mysqldump]quickmax_allowed_packet = 128M#myisam_max_sort_file_size = 10G[mysql]no-auto-rehashmax_allowed_packet = 128Mprompt = ‘(product)\[email protected]\h [\d]> ‘default_character_set = utf8EOFretval=$?finowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`[ $retval -eq 0 ] && echo -e "\e[0;36m${nowtime}[INFO]:Create my.cnf SUCESS.\e[m"#Initializing datadirif [ -d $datapath ];then chown -R mysql:mysql ${datapath%/*} cd $basedir chown -R mysql:mysql * ./scripts/mysql_install_db --user=$user --datadir=$datadir > $logfile 2>&1 retval=$?fiif [ $retval -ne 0 ];then nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[ERROR]:MySQL Initializing FAIL!\e[m" exit 1fi#Add env variablesgrep "$basedir/bin" /etc/profile > /dev/null 2>&1if [ $? -ne 0 ];then nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo "export PATH=\$PATH:$basedir/bin">>/etc/profile source /etc/profilefi#start mysqlif [ ! -f "/etc/init.d/mysqld" ];then cp $basedir/support-files/mysql.server /etc/init.d/mysqld /etc/init.d/mysqld start >/dev/null 2>&1 retval=$?fiif [ $retval -eq 0 ];then $basedir/bin/mysqladmin -u root password ‘123456‘ 2> $logfile nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[INFO]:Starting MySQL.. SUCCESS!\e[m" retval=0else nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[ERROR]:Starting MySQL.. FAIL!\e[m" exit 1fi#setting account securityif [ $retval -eq 0 ];thenmysql -uroot -p123456 2>/dev/null <<EOFGRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION;delete from mysql.user where password = ‘‘;FLUSH PRIVILEGES;EOFretval=$?finowtime=`date ‘+%Y-%m-%d %H:%M:%S‘`[ $retval -eq 0 ] && echo -e "\e[0;36m${nowtime}[INFO]:MySQL INITIAL PASSWORD SUCCESS!\e[m"if [ $retval -eq 0 ];then nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[INFO]:MySQL INITIAL PASSWORD: 123456 \e[m" echo -e "\e[0;36m${nowtime}[INFO]:MySQL Basedir: $basedir \e[m" echo -e "\e[0;36m${nowtime}[INFO]:MySQL Datadir: $datadir \e[m" echo -e "\e[0;36m${nowtime}[INFO]:MySQL Install Complete. \e[m"else nowtime=`date ‘+%Y-%m-%d %H:%M:%S‘` echo -e "\e[0;36m${nowtime}[ERROR]:Change MySQL Password FAIL!\e[m"fi
測試結果:
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/8A/E7/wKiom1g-jYLCH1sKAACKHyEvJQI189.png-wh_500x0-wm_3-wmp_4-s_2890843265.png" style="float:none;" title="運行結果" alt="wKiom1g-jYLCH1sKAACKHyEvJQI189.png-wh_50" />
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/8A/E3/wKioL1g-jYOgyys7AABq0qcMZBk040.png-wh_500x0-wm_3-wmp_4-s_2513581164.png" style="float:none;" title="b.png" alt="wKioL1g-jYOgyys7AABq0qcMZBk040.png-wh_50" />
在MySQL設定檔參數部分還可以最佳化。
自動安裝MySQL指令碼