不死孤狼
IT 从来都是一个有新技术驱动的行业
  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
mysql_5.7_install.sh

 





















posted on 2018-03-08 17:44  不死孤狼  阅读(849)  评论(0)    收藏  举报