1 #!/bin/bash 2 3 echo "mysql 初始化安装脚本" 4 5 <<COMMENT 6 这些事注释内容: 7 FILE: CENTOS7-INIT.SH 8 USAGE: sh centos7-init.sh 9 AUTHOR: 邢飞, webaa88@126.com 10 CREATED: 2018.3.2 11 VERSION: 1.0 12 MYSQL版本:5.7.21 13 CENTOS 7 BASE 14 COMMENT 15 ######################定义变量###################### 16 GROUP_NAME=mysql 17 USER_NAME=mysql 18 MYSQLDB_HOME=/data/mysql 19 MYSQLDB_DATA_HOME=/data/mysql/mysqldata 20 MYSQL_VERSION="mysql-5.7.21-linux-glibc2.12-x86_64" 21 CPU_NUMBERS=$(cat /proc/cpuinfo |grep "processor"|wc -l) 22 MYSQL_ID=`ifconfig eno16777736 | grep "inet addr" | awk -F. '{print $4}' | awk '{print $1}'` 23 # 获取服务器内存 24 COMPUTER_MEM=`free -m |grep "Mem"|awk '{print $2}'` 25 ################################################### 26 27 #check if user is root 28 29 if [ $(id -u) != "0" ];then 30 echo "Error: You must be root to run this script!" 31 exit 1 32 fi 33 34 echo "=========================================================================" 35 echo " install MySQL 5.7.21 on Redhat/CentOS Linux " 36 echo "=========================================================================" 37 38 39 #addGroup 40 41 if [ -z $(cat /etc/group|awk -F: '{print $1}'| grep -w "$GROUP_NAME") ] 42 then 43 groupadd $GROUP_NAME 44 if(( $? == 0 )) 45 then 46 echo "group $GROUP_NAME add sucessfully!" 47 fi 48 else 49 echo "$GROUP_NAME is exsits" 50 fi 51 52 #addUser 53 54 if [ -z $(cat /etc/passwd|awk -F: '{print $1}'| grep -w "$USE_NAME") ] 55 then 56 adduser -g $GROUP_NAME $USER_NAME 57 if (( $? == 0 )) 58 then 59 echo "user $USER_NAME add sucessfully!" 60 fi 61 else 62 echo "$USER_NAME is exsits" 63 fi 64 65 66 #downMySQL 67 # rm -rf /tmp/mysql-5.7.* 68 # wget http://downloads.mysql.com/archives/get/file/${MYSQL_VERSION}.tar.gz -P /tmp 69 # if(( $? == 0 )) 70 # then 71 # echo "MySQL DownLoad sucessfully!" 72 # else 73 # echo "MySQL DownLoad failed!" 74 # exit $ERROR_EXIT 75 # fi 76 77 # 判断mysql目录是否创建 78 if [ -d $MYSQLDB_HOME ];then 79 echo "目录已创建" 80 else 81 mkdir -p $MYSQLDB_HOME 82 fi 83 84 85 86 # 判断mysql软件包是否存在 87 if [ -f ${MYSQL_VERSION}.tar.gz ] 88 then 89 tar -zxvf $MYSQL_VERSION.tar.gz 90 mv $MYSQL_VERSION /data/mysql 91 else 92 echo "没有发现mysql二进制文件" 93 echo "请将mysql二进制文件放到和本脚本在同一目录中" 94 exit 2 95 fi 96 97 # 安装libaio 98 yum -y install libaio 99 100 if [ -s /etc/my.cnf ]; then 101 mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bak 102 fi 103 104 echo "====================安装mysql5.7.21==========================" 105 106 # 创建mysql配置文件: 107 cat >>/etc/my.cnf<<EOF 108 109 [mysql] 110 111 # 设置mysql客户端默认字符集 112 113 default-character-set=utf8 114 115 socket=/tmp/mysql.sock 116 117 [mysqld] 118 119 #skip-name-resolve 120 121 #设置3306端口 122 123 port = 3306 124 125 126 # 设置mysql的安装目录 127 128 basedir=/data/mysql 129 130 # 设置mysql数据库的数据的存放目录 131 132 datadir=/data/mysql/mysqldata 133 134 # 允许最大连接数 135 136 max_connections=512 137 138 # 服务端使用的字符集默认为8比特编码的latin1字符集 139 140 character-set-server=utf8 141 142 # 创建新表时将使用的默认存储引擎 143 144 default-storage-engine=INNODB 145 146 #lower_case_table_name=1 147 148 max_allowed_packet=16M 149 150 key_buffer_size=32MB 151 152 # innodb参数 153 # 154 innodb_buffer_pool_size=512MB 155 156 innodb_buffer_pool_dump_at_shutdown=1 #该命令用于在关闭时把热数据dump到本地磁盘 157 innodb_buffer_pool_load_at_startup=1 #在启动时把热数据加载到内存 158 innodb_flush_log_at_trx_commit=0 #每个事务提交时。每隔一秒,把事务日志缓冲区的数据写到日志文件中,以及吧日志文件的数据刷到磁盘上他的性能是最好的,同样安全性也是最差的,当系统宕机时,会丢失1秒的数据 159 160 #避免双写缓冲的参数: 161 innodb_flush_method=O_DIRECT 162 163 innodb_lock_wait_timeout=50 # 锁等待超时时间 单位秒 164 #启用标准InnoDB监视器 165 innodb_status_output=ON 166 # 查询缓存 167 query_cache_size=56MB 168 169 170 #慢查询: 171 #开启慢查询日志: 172 slow_query_log=1 173 slow_query_log_file=master.slow 174 long_query_time=2 175 176 177 178 #配置错误日志: 179 log-error=/data/mysql/log/mysql_error.log 180 181 182 # 复制的参数 183 log_bin=master-bin 184 server_id=10 185 binlog_format=ROW 186 sync_binlog=1 187 # 半同步复制参数 188 #rpl_semi_sync_master_enabled = 1 189 #rpl_semi_sync_master_timeout = 1000 # 单位秒 190 191 192 # 启用gtid复制: 193 gtid_mode=ON 194 enforce-gtid-consistency=true 195 196 EOF 197 198 # 设置mysql目录权限 199 if [ -d $MYSQLDB_DATA_HOME ];then 200 echo "目录已存在" 201 else 202 mkdir -p $MYSQLDB_DATA_HOME 203 chown -R mysql:mysql /data/mysql 204 echo "目录和权限创建成功!" 205 fi 206 207 # 创建日志文件 208 mkdir -p $MYSQLDB_HOME/log 209 touch $MYSQLDB_HOME/log/mysql-error.log 210 #touch $MYSQLDB_HOME/log/mysql-slow.log 211 chown -R mysql:mysql $MYSQLDB_HOME 212 213 # 配置开机启动 214 function add_auto_start 215 { 216 cp /data/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld 217 chmod +x /etc/rc.d/init.d/mysqld 218 chkconfig --add mysqld 219 } 220 221 222 # 初始化数据库 223 /data/mysql/bin/mysqld --initialize --user=mysql --basedir=$MYSQLDB_HOME/ --datadir=$MYSQLDB_DATA_HOME/ >>/tmp/mysqlpass.txt 224 225 226 # 设置环境变量 227 228 cat >> /etc/profile <<EOF 229 PATH=$MYSQLDB_HOME/bin:\$PATH 230 export PATH 231 EOF 232 233 source /etc/profile 234 235 236 echo "mysql 5.7.21 安装完成,密码文件请查看/tmp/mysqlpass.txt文件" 237 sleep 5 238 ######################################################################################### 239 add_auto_start
浙公网安备 33010602011771号