MySQL5.6 一键安装脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL5.6 一键安装脚本相关的知识,希望对你有一定的参考价值。

#!/bin/sh

#*************************

#Created By:    yixianwei.cn

#*************************

yum install -y grep procps coreutils xfsprogs util-linux-ng e2fsprogs libselinux-utils chkconfig wget yum-utils gawk libaio cronie xz

if [ -b /dev/sdb ] ;then

if [ -z "`mount |grep /dev/sdb`" ] ;then

mkfs.xfs -b size=4096 -d sectsize=4096 -i attr=2 -l lazy-count=1,sectsize=4096 -L data /dev/sdb

if [ -z "`blkid /dev/sdb`" ] ;then

uuidgen | xargs tune2fs /dev/sdb -U

fi

sdbuuid="`blkid -o value -s UUID /dev/sdb`"

if [ -z "`grep $sdbuuid /etc/fstab`" ] ;then

echo "UUID=$sdbuuid /data                   xfs     rw,noatime,noikeep,allocsize=16M,attr2,largeio,inode64   0 0" >> /etc/fstab

echo "echo \"deadline\" >/sys/block/sdb/queue/scheduler" > /etc/profile.d/skyeye_mysql.sh

sh /etc/profile.d/skyeye_mysql.sh

fi

mkdir -p /data

mount -a

else

mkdir -p /data

fi

else

mkdir -p /data

fi


if [ -z "`grep -i mysql /etc/security/limits.conf`" ] ;then

echo "mysql - proc 10240" >> /etc/security/limits.conf

echo "mysql - nofile 65535" >> /etc/security/limits.conf

ulimit -u 10240 

ulimit -n 65535

fi


if [ -z "`grep -i tcp_timestamps /etc/sysctl.conf`" ] ;then

echo "net.ipv4.tcp_timestamps = 1" >> /etc/sysctl.conf

fi

if [ -z "`grep -i tcp_tw_recycle /etc/sysctl.conf`" ] ;then

        echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf

fi

if [ -z "`grep -i tcp_tw_reuse /etc/sysctl.conf`" ] ;then

        echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf

fi

if [ -z "`grep -i swappiness /etc/sysctl.conf`" ] ;then

        echo "vm.swappiness = 1" >> /etc/sysctl.conf

fi

if [ -z "`grep -i aio-max-nr /etc/sysctl.conf`" ] ;then

        echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf

fi

if [ -z "`grep -i ip_local_port_range /etc/sysctl.conf`" ] ;then

        echo "net.ipv4.ip_local_port_range = 10000 65535" >> /etc/sysctl.conf

fi


sysctl -p


setenforce 0

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config


service iptables stop

service ip6tables stop

chkconfig iptables off

chkconfig ip6tables off

service mysql stop

service mysqld stop

mysqld_multi --user=root stop

killall -9 mysqld_safe

killall -9 mysqld


oldmysqlserver="`rpm -qa|egrep -i mysql-server`"

if [ -n "$oldmysqlserver" ] ;then

yum erase -y $oldmysqlserver

fi


yum localinstall -y mysql-community-release-el6-5.noarch.rpm 


mysqlrepo="`yum repolist all | egrep -i mysql[0-9]+-community |grep enabled|awk ‘{print $1}‘`"

yum-config-manager --disable $mysqlrepo

yum-config-manager --enable mysql56-community


yum install -y mysql-community-client*`uname -m`.rpm mysql-community-devel*`uname -m`.rpm mysql-community-server*`uname -m`.rpm mysql-community-common*`uname -m`.rpm mysql-community-libs*`uname -m`.rpm mysql-community-libs-compat*`uname -m`.rpm

service mysqld stop


mkdir -p /data/mysql

chown mysql:mysql /data/mysql


if [ ! -d /data/mysql/mysqldata3306 ] ;then

mkdir -p /data/mysql/mysqldata3306

mkdir -p /data/mysql/mysqldata3306/mydata

mkdir -p /data/mysql/mysqldata3306/binlog

mkdir -p /data/mysql/mysqldata3306/innodb_ts

mkdir -p /data/mysql/mysqldata3306/innodb_log

mkdir -p /data/mysql/mysqldata3306/relaylog

mkdir -p /data/mysql/mysqldata3306/tmpdir

mkdir -p /data/mysql/mysqldata3306/log

mkdir -p /data/mysql/mysqldata3306/sock

chown -R mysql:mysql /data/mysql/mysqldata3306

fi


if [ -f /etc/my.cnf ] ;then

mv -f /etc/my.cnf "/etc/my.cnf.`date +%s`.bak"

fi

if [ -f /etc/mysql/my.cnf ] ;then

mv -f /etc/mysql/my.cnf "/etc/mysql/my.cnf.`date +%s`.bak"

fi

if [ -f /usr/etc/my.cnf ] ;then

mv -f /usr/etc/my.cnf "/usr/etc/my.cnf.`date +%s`.bak"

fi

if [ -f ~/.my.cnf ] ;then

mv -f ~/.my.cnf "~/.my.cnf.`date +%s`.bak"

fi

if [ -f /root/.my.cnf ] ;then

mv -f /root/.my.cnf "/root/.`date +%s`.bak"

fi

if [ -f /var/lib/mysql/.my.cnf ] ;then

mv -f /var/lib/mysql/.my.cnf "/var/lib/mysql/.`date +%s`.bak"

fi

mysqlhome="`grep ^mysql /etc/passwd |awk -F‘:‘ ‘{print $6}‘`"

if [ -f "$mysqlhome/.my.cnf" ] ;then

mv -f $mysqlhome/.my.cnf "$mysqlhome/.`date +%s`.bak"

fi



bpsize="`free -m |grep Mem:|awk ‘{print int($2/2)==$2/2?$2/2:int($2/2)+1}‘`M"

iocapacity="`df -B GB --total /data |grep total|awk ‘{sub(/GB/,\"\",$2);print ($2/300==int($2/300)?$2/300:int($2/300)+1)*100}‘`"



cat >> /etc/my.cnf <<EOF

#*************************

#Created By:    yixianwei.cn

#*************************

[mysqld]

user=mysql

pid-file=/data/mysql/mysqldata3306/sock/mysql.pid

socket=/data/mysql/mysqldata3306/sock/mysql.sock

datadir=/data/mysql/mysqldata3306/mydata

tmpdir=/data/mysql/mysqldata3306/tmpdir

skip-name-resolve

performance_schema=OFF

transaction-isolation=READ-COMMITTED

character_set_server=utf8

collation_server=utf8_general_ci

lower_case_table_names=1

explicit_defaults_for_timestamp

group_concat_max_len=1048576

max_connections=800

max_connect_errors=9999

wait_timeout=172800

interactive_timeout=172800

max_allowed_packet=64M

read_rnd_buffer_size=2M

query_cache_type=1

query_cache_size=32M

query_cache_limit=16K

log-error=/data/mysql/mysqldata3306/log/error.log

log_warnings=2

long_query_time=0.3

slow_query_log

slow_query_log_file=/data/mysql/mysqldata3306/log/slow-query.log

server-id=3306

log-bin-index=/data/mysql/mysqldata3306/binlog/mysql-bin.index

#log-bin=/data/mysql/mysqldata3306/binlog/mysql-bin

binlog-format=MIXED

binlog_cache_size=256K

sync_binlog=1

expire_logs_days=15

log-slave-updates

sysdate-is-now

innodb_support_xa=0

relay-log-index=/data/mysql/mysqldata3306/relaylog/mysql-relay-bin.index

relay-log=/data/mysql/mysqldata3306/relaylog/mysql-relay-bin

innodb_buffer_pool_size=${bpsize}

innodb_data_home_dir=/data/mysql/mysqldata3306/innodb_ts

innodb_data_file_path=ibdata1:256M:autoextend

innodb_open_files=7168

innodb_flush_log_at_trx_commit=1

innodb_log_file_size=4G

innodb_log_group_home_dir=/data/mysql/mysqldata3306/innodb_log

innodb_adaptive_flushing_lwm=30

innodb_flush_method=O_DIRECT

innodb_io_capacity=${iocapacity}

[mysql]

no-auto-rehash

prompt="\\[email protected]\\h : \\d \\r:\\m:\\s> "

default-character-set=utf8

socket=/data/mysql/mysqldata3306/sock/mysql.sock

[mysqldump]

user=skyeyebackup

password=skyeyebackup

socket=/data/mysql/mysqldata3306/sock/mysql.sock

hex-blob

max_allowed_packet=2G

default-character-set=utf8

single-transaction

EOF


chown mysql:mysql /etc/my.cnf

chmod 400 /etc/my.cnf


if [ ! -d /data/mysql/mysqldata3306/mydata/mysql ] ;then

mysql_install_db --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql/mysqldata3306/mydata --skip-name-resolve

chkconfig mysqld on

service mysqld start

mysqlstarted="no"

while [ "$mysqlstarted" = "no" ]

do

sleep 1

if [ "`mysql -u root -n -N -s -r -e \"select 1\"`" = "1" ] ;then

mysqlstarted="yes"

fi

done

mysql -u root -n -e "delete from mysql.user where user=‘‘ or host not in (‘localhost‘,‘127.0.0.1‘);delete from mysql.db;flush privileges;create database skyeye;grant select,insert,update,delete on skyeye.* to ‘skyeye‘@‘127.0.0.1‘ identified by password ‘*A6EC8FBFBBF786D565C09125BC6DE94B18C99E05‘;grant super,process,select on *.* to ‘skyeyemonitor‘@‘127.0.0.1‘ identified by password ‘*8A91882A516AD0D2459D2F1400140C0A95D67C01‘; grant select on skyeye.* to ‘skyeyebackup‘@‘localhost‘ identified by password ‘*001F19F6905729491F70765BB39900EA9284531E‘;grant process on *.* to ‘skyeyebackup‘@‘localhost‘;"

else

service mysqld start

fi


if [ ! -d /data/mysql/bin ] ;then

mkdir -p /data/mysql/bin

chown mysql:mysql /data/mysql/bin

fi


if [ ! -f /data/mysql/bin/skyeye_mysql_backup.sh ] ;then

cp skyeye_mysql_backup.sh /data/mysql/bin/skyeye_mysql_backup.sh

chown mysql:mysql /data/mysql/bin/skyeye_mysql_backup.sh

chmod 100 /data/mysql/bin/skyeye_mysql_backup.sh

echo "0 3 * * * root /data/mysql/bin/skyeye_mysql_backup.sh" >/etc/cron.d/skyeye_mysql

service crond start

chkconfig crond on

fi


if [ ! -d /data/mysql/backup ] ;then

mkdir -p /data/mysql/backup

chown mysql:mysql /data/mysql/backup

fi


技术分享

将上图中的文件下载之后 和脚本放在同一个目录下 执行脚本即可安装

以上是关于MySQL5.6 一键安装脚本的主要内容,如果未能解决你的问题,请参考以下文章

CentOS6.x一键安装mysql5.6并定制数据目录

MySQL5.6.16二进制源码安装详解及一键安装实现

Python实现一键安装部署LNMP环境

脚本方式一键快速创建MySQL从库

一键编译安装mysql-5.6.17

lnmp 一键安装