├── MySQL_check.sh
├── MySQL_install.sh
└── README.md
/MySQL_check.sh:
--------------------------------------------------------------------------------
1 | ###############################################################################################################
2 | ####################
3 | ### MySQL5.7版本 ####
4 | ### CentOS7.x版本 ###
5 | ####################
6 | LANG=C
7 | #error log
8 | log_error=`cat /etc/my.cnf|grep "log_error"`
9 | log_error=`echo ${log_error#*=}`
10 | #date
11 | date=`mysql -e "select curdate();"`
12 | date=`echo $date|awk '{print $2}'`
13 | date2=`mysql -e "select date_sub(curdate(),interval 1 day);"`
14 | date2=`echo $date2|awk '{print $4}'`
15 | #check mysql server connect
16 | ping=`mysqladmin ping`
17 | #base dir
18 | base=`cat /etc/my.cnf|grep basedir`
19 | base=`echo ${base#*=}`
20 | #data dir
21 | data=`cat /etc/my.cnf | grep datadir`
22 | data=`echo ${data#*=}`
23 | #data free filesystem used
24 | used=`df -h $data`
25 | filesys=`echo $used|awk '{print $8}'`
26 | free=`echo $used|awk '{print $11}'`
27 | used=`echo $used|awk '{print $12}'`
28 | #database uptime
29 | uptime=`mysql -e"SHOW STATUS LIKE '%uptime%'"|awk '/ptime/{ calc = $NF / 3600;print $(NF-1), calc"Hour" }'`
30 | uptime=`echo $uptime|awk '{print $2}'`
31 | #database threads
32 | threads=`mysql -BNe "select count(host) from processlist;" information_schema`
33 | #mysql max_used_connection
34 | max_connect=`mysql -e "show status like '%max_used_connections%';"`
35 | max_connect=`echo $max_connect|awk '{print $4}'`
36 | #mysql aborted_clients
37 | aborted_clients=`mysql -e "show status like '%aborted_clients%';"`
38 | aborted_clients=`echo $aborted_clients|awk '{print $4}'`
39 | #mysql aborted_connects
40 | aborted_connects=`mysql -e "show status like '%aborted_connects%';"`
41 | aborted_connects=`echo $aborted_connects|awk '{print $4}'`
42 | #mysql server id
43 | id=`mysql -e "show variables like 'server_id';"`
44 | id=`echo $id|awk '{print $4}'`
45 | #mysql read_only
46 | reads=`mysql -e "show variables like 'read_only';"`
47 | reads=`echo $reads|awk '{print $4}'`
48 | #mysql max_connections
49 | maxc=`mysql -e "show variables like 'max_connections';"`
50 | maxc=`echo $maxc|awk '{print $4}'`
51 | #mysql max_connect_errors
52 | maxce=`mysql -e "show variables like 'max_connect_errors';"`
53 | maxce=`echo $maxce|awk '{print $4}'`
54 | #mysql wait_timeout
55 | wt=`mysql -e "show variables like 'wait_timeout';"`
56 | wt=`echo $wt|awk '{print $4}'`
57 | s='s'
58 | #mysql skip_name_resolve
59 | snr=`mysql -e "show variables like 'skip_name_resolve';"`
60 | snr=`echo $snr|awk '{print $4}'`
61 | #mysql sync_binlog
62 | sb=`mysql -e "show variables like 'sync_binlog';"`
63 | sb=`echo $sb|awk '{print $4}'`
64 | #mysql expire_logs_days
65 | eld=`mysql -e "show variables like 'expire_logs_days';"`
66 | eld=`echo $eld|awk '{print $4}'`
67 | day='day'
68 | #mysql table_open_cache
69 | toc=`mysql -e "show variables like 'table_open_cache';"`
70 | toc=`echo $toc|awk '{print $4}'`
71 | #mysql query_cache_size
72 | qcs=`mysql -e "show variables like 'query_cache_size';"`
73 | qcs=`echo $qcs|awk '{print $4}'`
74 | let qcs=$qcs/1024/1024
75 | m='M'
76 | #mysql sort_buffer_size
77 | sbs=`mysql -e "show variables like 'sort_buffer_size';"`
78 | sbs=`echo $sbs|awk '{print $4}'`
79 | let sbs=$sbs/1024/1024
80 | m='M'
81 | #mysql read_buffer_size
82 | rbs=`mysql -e "show variables like 'read_buffer_size';"`
83 | rbs=`echo $rbs|awk '{print $4}'`
84 | let rbs=$rbs/1024/1024
85 | m='M'
86 | #mysql join_buffer_size
87 | jbs=`mysql -e "show variables like 'join_buffer_size';"`
88 | jbs=`echo $jbs|awk '{print $4}'`
89 | let jbs=$jbs/1024/1024
90 | m='M'
91 | #mysql tmp_table_size
92 | tts=`mysql -e "show variables like 'tmp_table_size';"`
93 | tts=`echo $tts|awk '{print $4}'`
94 | let tts=$tts/1024/1024
95 | m='M'
96 | #mysql innodb_thread_concurrency
97 | itc=`mysql -e "show variables like 'innodb_thread_concurrency';"`
98 | itc=`echo $itc|awk '{print $4}'`
99 | #mysql innodb_flush_method
100 | ifm=`mysql -e "show variables like 'innodb_flush_method';"`
101 | ifm=`echo $ifm|awk '{print $4}'`
102 | #mysql innodb_file_per_table
103 | ifpt=`mysql -e "show variables like 'innodb_file_per_table';"`
104 | ifpt=`echo $ifpt|awk '{print $4}'`
105 | #mysql innodb_flush_log_at_trx_commit
106 | iflatc=`mysql -e "show variables like 'innodb_flush_log_at_trx_commit';"`
107 | iflatc=`echo $iflatc|awk '{print $4}'`
108 | #mysql innodb_lock_wait_timeout
109 | ilwt=`mysql -e "show variables like 'innodb_lock_wait_timeout';"`
110 | ilwt=`echo $ilwt|awk '{print $4}'`
111 | s='s'
112 | #mysql innodb_open_files
113 | iof=`mysql -e "show variables like 'innodb_open_files';"`
114 | iof=`echo $iof|awk '{print $4}'`
115 | #mysql lower_case_table_names
116 | lctn=`mysql -e "show variables like 'lower_case_table_names';"`
117 | lctn=`echo $lctn|awk '{print $4}'`
118 | #mysql innodb_buffer_pool_size
119 | buffer=`mysql -e "show variables like 'innodb_buffer_pool_size';"`
120 | buffer=`echo $buffer|awk '{print $4}'`
121 | let buffer=$buffer/1024/1024
122 | m="M"
123 | #log_bin_basename
124 | basename1=`mysql -e "show variables like 'log_bin_basename';"`
125 | basename1=`echo $basename1|awk '{print $4}'`
126 | #log_bin_index
127 | index=`mysql -e "show variables like 'log_bin_index';"`
128 | index=`echo $index|awk '{print $4}'`
129 | #mysql binlog
130 | binlog=`mysql -e "show variables like 'log_bin';"`
131 | binlog=`echo $binlog|awk '{print $4}'`
132 | #mysql binlog_format
133 | format=`mysql -e "show variables like 'binlog_format';"`
134 | format=`echo $format|awk '{print $4}'`
135 | #mysql binlog_row_image
136 | image=`mysql -e "show variables like 'binlog_row_image';"`
137 | image=`echo $image|awk '{print $4}'`
138 | #binlog file
139 | file=`mysql -e "show master status;"`
140 | file=`echo $file|awk '{print $6}'`
141 | #binlog Position
142 | pos=`mysql -e "show master status;"`
143 | pos=`echo $pos|awk '{print $7}'`
144 | #mysql slowlog
145 | slow=`mysql -e "show variables like 'slow_query_log';"`
146 | slow=`echo $slow|awk '{print $4}'`
147 | #mysql slow_query_log_file
148 | slowfile=`mysql -e "show variables like 'slow_query_log_file';"`
149 | slowfile=`echo $slowfile|awk '{print $4}'`
150 | #mysql error log
151 | error=`mysql -e "show variables like 'log_error';"`
152 | error=`echo $error|awk '{print $4}'`
153 | #mysql log_timestamps
154 | timestamps=`mysql -e "show variables like 'log_timestamps';"`
155 | timestamps=`echo $timestamps|awk '{print $4}'`
156 | #MySQL Master / Slave
157 | ms=`mysql -e "show slave status\G"`
158 | if [ -z "$ms" ];then
159 | ms="Master"
160 | else
161 | ms="Slave"
162 | fi
163 | #Seconds Behind Master
164 | seconds=`mysql -e "show slave status \G;"|awk '/Seconds_Behind_Master:/{print $2}'`
165 | seconds=`echo $seconds|awk '{print $1}'`
166 | #Slave_IO_Running
167 | io=`mysql -e "show slave status \G;"|awk '/Running:/{print $2}'`
168 | io=`echo $io|awk '{print $1}'`
169 | #Slave_SQL_Running
170 | sql=`mysql -e "show slave status \G;"|awk '/Running:/{print $2}'`
171 | sql=`echo $sql|awk '{print $2}'`
172 | #Master Log File
173 | mlf=`mysql -e "show slave status \G;"|awk '/Master_Log_File:/{print $2}'`
174 | mlf=`echo $mlf|awk '{print $1}'`
175 | #Relay Master Log File
176 | rmlf=`mysql -e "show slave status \G;"|awk '/Relay_Master_Log_File:/{print $2}'`
177 | rmlf=`echo $rmlf|awk '{print $1}'`
178 | #Read Master Log Pos
179 | rmlp=`mysql -e "show slave status \G;"|awk '/Read_Master_Log_Pos:/{print $2}'`
180 | rmlp=`echo $rmlp|awk '{print $1}'`
181 | #Exec Master Log Pos:
182 | emlp=`mysql -e "show slave status \G;"|awk '/Exec_Master_Log_Pos:/{print $2}'`
183 | emlp=`echo $emlp|awk '{print $1}'`
184 | #Qcache_hits
185 | hits=`mysql -e "SHOW STATUS LIKE 'Qcache_hits';"`
186 | hits=`echo $hits|awk '{print $4}'`
187 | #Qcache_inserts
188 | inserts=`mysql -e "SHOW STATUS LIKE 'Qcache_inserts';"`
189 | inserts=`echo $inserts|awk '{print $4}'`
190 | if [ $hits -ne 0 ];then
191 | let x1=$hits-$inserts
192 | let x2=$x1/$hits
193 | qmzl=`echo "scale=1;$x2*100"|bc`
194 | qmzl=`echo ${qmzl%.*}"%"`
195 | else
196 | qmzl=0
197 | qmzl=`echo $qmzl"%"`
198 | fi
199 | #table Com_select
200 | b1=`mysql -e "show global status like 'Handler_read_rnd_next';"`
201 | b2=`echo $b1|awk '{print $4}'`
202 | b3=`mysql -e "show global status like 'com_select';"`
203 | b4=`echo $b3|awk '{print $4}'`
204 | let bsml=$b2/$b4
205 | #innodb read
206 | requests=`mysql -e "SHOW STATUS LIKE 'Innodb_buffer_pool_read_requests';"`
207 | requests=`echo $requests|awk '{print $4}'`
208 | reads=`mysql -e "SHOW STATUS LIKE 'Innodb_buffer_pool_reads';"`
209 | reads=`echo $reads|awk '{print $4}'`
210 | if [ $requests -ne 0 ];then
211 | let i1=$requests-$reads
212 | let i2=$i1/$requests
213 | i2=`echo "scale=2;$i1/$requests"|bc`
214 | imzl=`echo "scale=1;$i2*100"|bc`
215 | imzl=`echo ${imzl%.*}"%"`
216 | else
217 | imzl=0
218 | imzl=`echo $imzl"%`
219 | fi
220 |
221 | ###############################################################################################################
222 |
223 | echo "
OS 文件系统
"
224 | echo ""
225 | echo "`df -h`
"
226 | echo "
返回页首"
227 | echo "
"
228 |
229 | echo "MySQL 数据库版本
"
230 | echo ""
231 | echo "`mysqladmin version`
"
232 | echo "
返回页首"
233 | echo "
"
234 |
235 | echo "MySQL 数据库基本状态信息
"
236 | echo ""
237 | echo "`echo "数据库连接状态: $ping"`
"
238 | echo "`echo "数据库启动时间: $uptime"`
"
239 | echo "`echo "数据库当前连接数: $threads"`
"
240 | echo "`echo "数据库使用的连接最大个数: $max_connect"`
"
241 | echo "`echo "数据库放弃的连接个数: $aborted_clients"`
"
242 | echo "`echo "数据库尝试连接失败次数: $aborted_connects"`
"
243 | echo "`echo "数据库软件目录: $base"`
"
244 | echo "`echo "数据目录: $data"`
"
245 | echo "`echo "使用的文件系统: $filesys"`
"
246 | echo "`echo "文件系统使用率: $used"`
"
247 | echo "`echo "剩余空间: $free"`
"
248 | echo "
返回页首"
249 | echo "
"
250 |
251 | echo "MySQL 数据库重要参数
"
252 | echo ""
253 | echo "`echo "Server_Id: $id"`
"
254 | echo "`echo "Read_Only: $reads"`
"
255 | echo "`echo "Max_Connections: $maxc"`
"
256 | echo "`echo "Max_Connect_Errors: $maxce"`
"
257 | echo "`echo "Wait_Timeout: $wt$s"`
"
258 | echo "`echo "Skip_Name_Resolve: $snr"`
"
259 | echo "`echo "Sync_Binlog: $sb"`
"
260 | echo "`echo "Expire_Logs_Days: $eld$day"`
"
261 | echo "`echo "Table_Open_Cache: $toc"`
"
262 | echo "`echo "Query_Cache_Size: $qcs$m"`
"
263 | echo "`echo "Sort_Buffer_Size: $sbs$m"`
"
264 | echo "`echo "Read_Buffer_Size: $rbs$m"`
"
265 | echo "`echo "Join_Buffer_Size: $jbs$m"`
"
266 | echo "`echo "Tmp_Table_Size: $tts$m"`
"
267 | echo "`echo "Lower_Case_Table_Names: $lctn"`
"
268 | echo "`echo "Innodb_Buffer_Pool_Size: $buffer$m"`
"
269 | echo "`echo "Innodb_Thread_Concurrency: $itc"`
"
270 | echo "`echo "Innodb_Flush_Method: $ifm"`
"
271 | echo "`echo "Innodb_File_Per_Table: $ifpt"`
"
272 | echo "`echo "Innodb_Flush_Log_At_Trx_Commit: $iflatc"`
"
273 | echo "`echo "Innodb_Lock_Wait_Timeout: $ilwt$s"`
"
274 | echo "`echo "Innodb_Open_Files: $iof"`
"
275 | echo "`echo "Log_Bin: $binlog"`
"
276 | echo "`echo "Log_Bin_Basename: $basename1"`
"
277 | echo "`echo "Log_Bin_Index: $index"`
"
278 | echo "`echo "Binlog_Format: $format"`
"
279 | echo "`echo "Binlog_Row_Image: $image"`
"
280 | echo "`echo "Binlog File: $file"`
"
281 | echo "`echo "Binlog Position: $pos"`
"
282 | echo "`echo "Log_Timestamps: $timestamps"`
"
283 | echo "`echo "Slow_Query_Log: $slow"`
"
284 | echo "`echo "Slow_Query_Log_File: $slowfile"`
"
285 | echo "`echo "Log_Error: $error"`
"
286 | echo "
返回页首"
287 | echo "
"
288 |
289 | echo "MySQL 数据库主从状态
"
290 | echo ""
291 | echo "`echo "Master / Slave: $ms"`
"
292 | echo "`echo "Slave IO Running: $io"`
"
293 | echo "`echo "Slave SQL Running: $sql"`
"
294 | echo "`echo "Master Log File: $mlf"`
"
295 | echo "`echo "Relay Master Log File: $rmlf"`
"
296 | echo "`echo "Read Master Log Pos: $rmlp"`
"
297 | echo "`echo "Exec Master Log Pos: $emlp"`
"
298 | echo "`echo "Seconds Behind Master: $seconds"`
"
299 | echo "
返回页首"
300 | echo "
"
301 |
302 | echo "MySQL 数据库大小
"
303 | echo ""
304 | echo "`mysql -e 'select table_schema,round(sum(data_length+index_length)/1024/1024,2) as "Size(M)" from information_schema.tables group by table_schema order by round(sum(data_length+index_length)/1024/1024,2) desc\G'`
"
305 | echo "
返回页首"
306 | echo "
"
307 |
308 | echo "MySQL 数据库中的大表(TOP 10)
"
309 | echo ""
310 | echo "`mysql -e 'select table_schema,table_name,round((sum(DATA_LENGTH)+sum(INDEX_LENGTH))/1024/1024,2) "Size(M)" from information_schema.tables group by table_schema,table_name order by round((sum(DATA_LENGTH)+sum(INDEX_LENGTH))/1024/1024,2) desc limit 10\G'`
"
311 | echo "
返回页首"
312 | echo "
"
313 |
314 | echo "MySQL 数据库未建主键索引的表
"
315 | echo ""
316 | echo "`mysql -e "SELECT distinct table_name,table_schema FROM information_schema.columns WHERE table_schema not in ('sys','information_schema','performance_schema','mysql') AND table_name not in (select distinct table_name from information_schema.columns where column_key='PRI')\G"`
"
317 | echo "
返回页首"
318 | echo "
"
319 |
320 | echo "MySQL 数据库从未使用过的索引
"
321 | echo ""
322 | echo "`mysql -e "select * from sys.schema_unused_indexes\G"`
"
323 | echo "
返回页首"
324 | echo "
"
325 |
326 | echo "MySQL 数据库锁统计
"
327 | echo ""
328 | echo "`mysql -e "show status like 'table_locks_%'\G"`
"
329 | echo "
返回页首"
330 | echo "
"
331 |
332 | echo "MySQL 数据库缓存命中率
"
333 | echo ""
334 | echo "`mysql -e "SHOW STATUS LIKE 'Qcache%'\G"`
"
335 | echo "`echo "查询缓存命中率大约为: $qmzl"`
"
336 | echo "
返回页首"
337 | echo "
"
338 |
339 | echo "MySQL 数据库Innodb中Read命中率
"
340 | echo ""
341 | echo "`mysql -e "show status like 'Innodb_buffer_pool_%'\G"`
"
342 | echo "`echo "Innodb命中率大约为: $imzl"`
"
343 | echo "
返回页首"
344 | echo "
"
345 |
346 | echo "MySQL 数据库临时表
"
347 | echo ""
348 | echo "`mysql -e "Show status like '%tmp%'\G"`
"
349 | echo "
返回页首"
350 | echo "
"
351 |
352 | echo "MySQL 数据库全表扫描情况
"
353 | echo ""
354 | echo "`mysql -e "show global status like 'handler_read%'\G"`
"
355 | echo "
返回页首"
356 | echo "
"
357 |
358 | echo "MySQL 数据库备份
"
359 | echo ""
360 | echo "`find /mysql/myback/* -mtime -2`
"
361 | echo "
返回页首"
362 | echo "
"
363 |
364 | echo "MySQL 数据库日志错误输出
"
365 | echo ""
366 | echo "`cat $log_error|grep $date2|grep 'ERROR'`
"
367 | echo "`cat $log_error|grep $date|grep 'ERROR'`
"
368 | echo "
返回页首"
369 | echo "
"
370 |
371 | echo "MySQL 数据库error日志
"
372 | echo ""
373 | echo "`cat $log_error|grep $date2`
"
374 | echo "`cat $log_error|grep $date`
"
375 | echo "
返回页首"
376 | echo "
"
--------------------------------------------------------------------------------
/MySQL_install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | ####################
3 | ### MySQL5.7版本 ####
4 | ### CentOS7.x版本 ###
5 | ####################
6 |
7 | #####Install Failed Delete MySQL#####
8 | #####rm -rf $base/*
9 | #####rm -rf $data/*
10 | #####rm -rf /etc/init.d/mysqld
11 | #####rm -rf /usr/local/mysql
12 | clear
13 |
14 | #check /etc/hosts
15 | echo "Check /etc/hosts"
16 | hostname=`hostname`
17 | host=`cat /etc/hosts|grep $hostname`
18 | if [ -z "$host" ];then
19 | echo 'check /etc/hosts IP hostname Failed!'
20 | exit 0
21 | else
22 | echo 'check /etc/hosts IP hostname success!'
23 | rehost=`echo $host|awk '{print $1}'`
24 | id1=`echo ${rehost#*.}`
25 | id2=`echo ${id1#*.}`
26 | id=`echo $id2|sed 's/\.//g'`
27 | ##check memory
28 | mem=`grep MemTotal /proc/meminfo|awk '{print $2}'`
29 | let innobufsiz=$mem*7/10/1024
30 | let mem=$mem/1024
31 | echo " "
32 | echo "##########################################"
33 | echo "# 1,Default Quick Install #"
34 | echo "# 2,Custom Install #"
35 | echo "# 3,Cancel Install #"
36 | echo "# Version:MySQL 5.7.18 #"
37 | echo "##########################################"
38 | echo " "
39 |
40 | #####please input : 1,Default Install 2,Custom Install 3,Cancel Install#######
41 | read -p "Please Select [1-3] To Continue (Default 1): " which
42 | which=${which:=1}
43 | while true
44 | do
45 | case "$which" in
46 | 1)
47 | ################Default Quick Install################
48 |
49 | ##Define variables
50 | port=3306
51 | base='/mysql/mysoft'
52 | data='/mysql/mydata'
53 | ser_id=$id
54 | char='utf8'
55 | innodb=$innobufsiz
56 | azlj=`pwd`
57 | ##create user
58 | usero=`id mysql|awk '{print $1}'`
59 | if [ -z "$usero" ];then
60 | /usr/sbin/groupadd -g 600 mysql
61 | /usr/sbin/useradd -u 600 -g mysql mysql
62 | echo mysql | passwd mysql --stdin 1>/dev/null
63 | echo ""
64 | id mysql
65 | echo ""
66 | else
67 | echo ""
68 | id mysql
69 | echo ""
70 | echo -n "Do you want to use users (mysql) ("no" delet user and rebuild)[y|n] (Default y): "
71 | read cho
72 | cho=${cho:='y'}
73 | echo ""
74 | while true
75 | do
76 | case $cho in
77 |
78 | N|NO|n|no)
79 | /usr/sbin/userdel -r mysql 2>/dev/null
80 | /usr/sbin/groupdel mysql 2>/dev/null
81 | /usr/sbin/groupadd -g 600 mysql
82 | /usr/sbin/useradd -u 600 -g mysql mysql
83 | echo mysql | passwd mysql --stdin 1>/dev/null
84 | id mysql
85 | echo ""
86 | break
87 | ;;
88 | Y|YES|y|yes)
89 | id mysql
90 | echo mysql | passwd mysql --stdin 1>/dev/null
91 | echo ""
92 | break
93 | ;;
94 | exit|EXIT)
95 | exit
96 | break
97 | ;;
98 | *)
99 | echo -n "Do you want to use users (mysql) ("no" delet user and rebuild)[y|n] (Default y): "
100 | read cho
101 | cho=${cho:='y'}
102 | echo ""
103 | ;;
104 | esac
105 | done
106 | fi
107 |
108 | ####################os check####################
109 | echo "Check $base and $data"
110 | mysql=`df -hm| grep -w $base | awk '{print $(NF-2)}'`
111 | if [ ! -n "$mysql" ];then
112 | echo "$base not have lv"
113 | if [ ! -d "$base" ];then
114 | echo "$base dose not exist;"
115 | echo -n "please press y to create $base,n to quit (Y/N) (Default Y): "
116 | read cho
117 | cho=${cho:='y'}
118 | echo ""
119 | while true
120 | do
121 | case $cho in
122 | N|NO|n|no)
123 | echo "Please create $base !!!"
124 | echo ""
125 | exit
126 | ;;
127 | Y|YES|y|yes)
128 | mkdir -p $base
129 | break
130 | ;;
131 | esac
132 | done
133 | fi
134 | else
135 | if [ "$mysql" -lt 29000 ];then
136 | echo '$base lv must >=30G'
137 | fi
138 | fi
139 | mydata=`df -hm| grep -w $data | awk '{print $(NF-2)}'`
140 | if [ ! -n "$mydata" ];then
141 | echo "$data not have lv"
142 | if [ ! -d "$data" ];then
143 | echo "$data dose not exist;"
144 | echo -n "please press y to create $data,n to quit (Y/N) (Default Y): "
145 | read cho
146 | cho=${cho:='y'}
147 | echo ""
148 | while true
149 | do
150 | case $cho in
151 | N|NO|n|no)
152 | echo "Please create $data !!!"
153 | echo ""
154 | exit
155 | ;;
156 | Y|YES|y|yes)
157 | mkdir -p $data
158 | break
159 | ;;
160 | esac
161 | done
162 | fi
163 | else
164 | if [ "$mydata" -lt 99000 ];then
165 | echo '$data lv must >=100G'
166 | fi
167 | fi
168 | echo " "
169 | ##osversion
170 | os=`lsb_release -a|grep Description`
171 | v_version=`echo ${os#*:}`
172 |
173 | ##check old mysql
174 | echo "Check Old Mysql"
175 | rpm=`rpm -qa | grep mysql`
176 | if [ -z "$rpm" ];then
177 | echo "check old mysql success!"
178 | else
179 | rpm -e $rpm --nodeps
180 | echo "check old mysql: $rpm delete success!"
181 | fi
182 | echo " "
183 |
184 | ##print message
185 | echo "|--------------------------------------------------------------------|"
186 | echo " Os Version: $v_version "
187 | echo " MemTotal: $mem M "
188 | echo " BaseDir: $base "
189 | echo " DataDir: $data/$port "
190 | echo " Port : $port "
191 | echo " Server Id: $ser_id "
192 | echo " Defalut Character: $char "
193 | echo " Innodb_buffer_pool_size: $innodb M "
194 | echo " Host Ipaddr: $rehost "
195 | echo "|--------------------------------------------------------------------|"
196 |
197 | echo " "
198 | echo -n "please press y to continue,n to quit (Y/N) (Default Y): "
199 | read cho
200 | cho=${cho:='y'}
201 | echo ""
202 | while true
203 | do
204 | case $cho in
205 |
206 | N|NO|n|no)
207 |
208 | echo "Thanks!"
209 | echo ""
210 | break
211 | ;;
212 | Y|YES|y|yes)
213 | ##new directory
214 | mkdir -p $data/$port/data
215 | mkdir -p $data/$port/log
216 | mkdir -p $data/$port/binlog
217 | mkdir -p $data/$port/tmp
218 |
219 | ##edit limits.conf
220 | cat >>/etc/security/limits.conf << END
221 | mysql hard nofile 65535
222 | mysql soft nofile 65535
223 | END
224 |
225 | ##edit .bash_profile
226 | PROFILES="/home/mysql/.bash_profile"
227 | for PROFILE in $PROFILES ; do
228 | if [ -f "$PROFILE" ] ; then
229 | if [ -z "$(grep "MySQL" $PROFILE)" ] ; then
230 | cat >>$PROFILE << END
231 | #MySQL
232 | export MYSQL_HOME=$base
233 | export PATH=\$MYSQL_HOME/mysql5.7/bin:\$PATH
234 | END
235 | echo "$PROFILE parameters : success"
236 | else
237 | echo "$PROFILE parameters : already existed"
238 | fi
239 | else
240 | echo "$0: $PROFILE not found "
241 | fi
242 | done
243 | ##install software
244 | cd $azlj
245 | tar -xf mysql*5.7*tar* -C $base
246 | cd $base
247 | tar xf mysql-5.7*tar.gz
248 | ln -s mysql-5.7*-x86_64 mysql5.7
249 | chown -R mysql:mysql $base
250 | chown -R mysql:mysql $data
251 | chmod -R 755 $data
252 | #cd /usr/local
253 | #ln -s $base/mysql5.7 /usr/local/mysql
254 | rm -rf /etc/my.cnf
255 | M="M"
256 | cnf="/etc/my.cnf"
257 | cat >>$cnf << END
258 | [client]
259 | port = $port
260 | socket = $data/$port/mysql.sock
261 |
262 | [mysql]
263 | no-auto-rehash
264 | prompt=(\\u@\\h) [\\d]>\\_
265 |
266 | [mysqld]
267 | # basic settings #
268 | server_id = $ser_id
269 | user = mysql
270 | port = $port
271 | basedir = $base/mysql5.7
272 | datadir = $data/$port/data
273 | socket = $data/$port/mysql.sock
274 | pid-file = $data/$port/mysql.pid
275 | log_error = $data/$port/log/error.log
276 | sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
277 | autocommit = 1
278 | character_set_server=$char
279 | transaction_isolation = READ-COMMITTED
280 | explicit_defaults_for_timestamp = 1
281 | max_allowed_packet = 16777216
282 | event_scheduler = 1
283 | tmpdir = $data/$port/tmp
284 | log_timestamps=system
285 | lower_case_table_names = 1
286 |
287 | # connection #
288 | interactive_timeout = 43200
289 | wait_timeout = 43200
290 | lock_wait_timeout = 43200
291 | skip_name_resolve = 1
292 | max_connections = 2000
293 | max_connect_errors = 100000
294 |
295 | # table cache performance settings #
296 | table_open_cache = 4096
297 | table_definition_cache = 4096
298 | table_open_cache_instances = 64
299 |
300 | # session memory settings #
301 | read_buffer_size = 16M
302 | read_rnd_buffer_size = 32M
303 | sort_buffer_size = 32M
304 | tmp_table_size = 64M
305 | join_buffer_size = 128M
306 | thread_cache_size = 64
307 |
308 | # log settings #
309 | slow_query_log = 1
310 | slow_query_log_file = $data/$port/log/slow.log
311 | log_queries_not_using_indexes = 1
312 | log_slow_admin_statements = 1
313 | log_slow_slave_statements = 1
314 | log_throttle_queries_not_using_indexes = 10
315 | expire_logs_days = 7
316 | long_query_time = 2
317 | min_examined_row_limit = 100
318 | binlog-rows-query-log-events = 1
319 | log-bin-trust-function-creators = 1
320 | max_binlog_size = 512M
321 |
322 | # InnoDB settings #
323 | innodb_page_size = 16384
324 | innodb_data_file_path = ibdata1:1G:autoextend
325 | innodb_buffer_pool_size = $innodb$M
326 | innodb_buffer_pool_instances = 16
327 | innodb_buffer_pool_load_at_startup = 1
328 | innodb_buffer_pool_dump_at_shutdown = 1
329 | innodb_lru_scan_depth = 4096
330 | innodb_lock_wait_timeout = 50
331 | innodb_io_capacity = 10000
332 | innodb_io_capacity_max = 20000
333 | innodb_flush_method = O_DIRECT
334 | innodb_file_format = Barracuda
335 | innodb_file_format_max = Barracuda
336 | innodb_undo_logs = 128
337 | innodb_undo_tablespaces = 3
338 | innodb_flush_neighbors = 0
339 | innodb_log_buffer_size = 16777216
340 | innodb_log_file_size = 1048576000
341 | innodb_log_files_in_group = 3
342 | innodb_purge_threads = 4
343 | innodb_large_prefix = 1
344 | innodb_thread_concurrency = 64
345 | innodb_print_all_deadlocks = 1
346 | innodb_strict_mode = 1
347 | innodb_sort_buffer_size = 67108864
348 | innodb_write_io_threads = 16
349 | innodb_read_io_threads = 16
350 | innodb_file_per_table = 1
351 | innodb_stats_persistent_sample_pages = 64
352 | innodb_autoinc_lock_mode = 2
353 | innodb_online_alter_log_max_size = 1G
354 | innodb_open_files = 4096
355 | innodb_flush_log_at_trx_commit = 1
356 |
357 | # Myisam settings #
358 | myisam_max_sort_file_size=512M
359 | myisam_sort_buffer_size =8M
360 |
361 | # replication settings #
362 | #read_only = 1
363 | skip_slave_start = 1
364 | slave_parallel_workers = 4
365 | slave_parallel_type = 'LOGICAL_CLOCK'
366 | slave_preserve_commit_order = on
367 | master_info_repository = table
368 | relay_log_info_repository = table
369 | sync_binlog = 1
370 | gtid_mode = on
371 | enforce_gtid_consistency = 1
372 | log-slave-updates = 1
373 | log_bin = $data/$port/binlog/mysql-bin
374 | log_bin_index = $data/$port/binlog/binlog.index
375 | binlog_format = row
376 | binlog_row_image = minimal
377 | binlog_rows_query_log_events = 1
378 | #relay_log_index = $data/$port/binlog/relaylog.index
379 | #relay_log = $data/$port/binlog/relay.log
380 | #relay_log_recovery = 1
381 | #slave_skip_errors = ddl_exist_errors
382 | #slave-rows-search-algorithms = 'INDEX_SCAN,HASH_SCAN'
383 |
384 | # semi sync replication settings #
385 | #plugin_load = "validate_password.so;rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave.so'
386 | #rpl_semi_sync_master_enabled = 1
387 | #rpl_semi_sync_master_timeout = 3000
388 | #rpl_semi_sync_slave_enabled= 1
389 |
390 | # password plugin #
391 | #validate_password_policy = strong
392 | #validate-password = force_plus_permanent
393 |
394 | END
395 | chown mysql:mysql /etc/my.cnf
396 | $base/mysql5.7/bin/mysqld --initialize --user=mysql
397 | cd $base/mysql5.7/support-files/
398 | cp mysql.server /etc/init.d/mysqld
399 | chkconfig --add mysqld
400 | chkconfig --level 345 mysqld on
401 | service mysqld start
402 | pass=`cat $data/$port/log/error.log | grep "A temporary password is" | awk '{print $NF}'`
403 | sed -i "/\[client\]/a\user=root" /etc/my.cnf
404 | sed -i "/\user=/a\password='$pass'" /etc/my.cnf
405 | cat >>/etc/profile </dev/null 2>/dev/null
413 | mysql -uroot -pmysql -e "flush privileges;">/dev/null 2>/dev/null
414 | mysql -umysqladmin -pmysql -e "create user @'%' identified by '';">/dev/null 2>/dev/null
415 | mysql -umysqladmin -pmysql -e "grant process,replication client on *.* to @'%';">/dev/null 2>/dev/null
416 | mysql -umysqladmin -pmysql -e "grant select on sys.* to @'%';">/dev/null 2>/dev/null
417 | mysql -umysqladmin -pmysql -e "grant select on performance_schema.* to @'%';">/dev/null 2>/dev/null
418 | mysql -umysqladmin -pmysql -e "create user tivoli@'%' identified by 'tivoli';">/dev/null 2>/dev/null
419 | mysql -umysqladmin -pmysql -e "grant process,replication client on *.* to tivoli@'%';">/dev/null 2>/dev/null
420 | mysql -umysqladmin -pmysql -e "grant select on sys.* to tivoli@'%';">/dev/null 2>/dev/null
421 | mysql -umysqladmin -pmysql -e "grant select on performance_schema.* to tivoli@'%';">/dev/null 2>/dev/null
422 | mysql -umysqladmin -pmysql -e "create user sjwh@'%' identified by 'sjwh';">/dev/null 2>/dev/null
423 | mysql -umysqladmin -pmysql -e "grant SELECT, UPDATE, INSERT, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES,CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE on *.* to sjwh@'%';">/dev/null 2>/dev/null
424 | sed -i '$d' /etc/profile
425 | source /etc/profile
426 | sed -i "/\[client\]/a\user=" /etc/my.cnf
427 | sed -i "/\user=/a\password=" /etc/my.cnf
428 | suce=`ps -ef | grep mysqld|wc -l`
429 | if [ $suce -gt 2 ] ; then
430 | echo "*******`date`*******"
431 | echo "**********Install Sucessful!**********"
432 | echo "******* MySQL User: mysqladmin ****"
433 | echo "******* User Password: mysql ******"
434 | echo "**************************************"
435 | else
436 | echo "*******`date`*******"
437 | echo "***Install Failed,Please Check!***"
438 | echo "**********************************"
439 | fi
440 | rm -rf /var/lock/subsys/mysql
441 | break
442 | ;;
443 | exit|EXIT)
444 | exit
445 | break
446 | ;;
447 | *)
448 | echo -n "please press y to continue,n to quit (Y/N):"
449 | read cho
450 | echo ""
451 | ;;
452 | esac
453 | done
454 | break
455 | ;;
456 | 2)
457 | ################Default Quick Install################
458 |
459 | ##Define variables
460 | read -p "Please Input MySQL Port (Default 3306): " port
461 | port=${port:=3306}
462 | read -p "Please Input MySQL BaseDir (Default /mysql/mysoft): " base
463 | base=${base:='/mysql/mysoft'}
464 | read -p "Please Input MySQL DataDir (Default /mysql/mydata): " data
465 | data=${data:='/mysql/mydata'}
466 | read -p "Please Input MySQL Server_Id (Default $id): " ser_id
467 | ser_id=${ser_id:=$id}
468 | read -p "Please Input MySQL Default Character (Default utf8): " char
469 | char=${char:='utf8'}
470 | read -p "Please Input MySQL Innodb_Buffer_size (Default $innobufsiz M): " innodb
471 | innodb=${innodb:=$innobufsiz}
472 | azlj=`pwd`
473 | ##create user
474 | usero=`id mysql|awk '{print $1}'`
475 | if [ -z "$usero" ];then
476 | /usr/sbin/groupadd -g 600 mysql
477 | /usr/sbin/useradd -u 600 -g mysql mysql
478 | echo mysql | passwd mysql --stdin 1>/dev/null
479 | echo ""
480 | id mysql
481 | echo ""
482 | else
483 | echo ""
484 | id mysql
485 | echo ""
486 | echo -n "Do you want to use users (mysql) ("no" delet user and rebuild)[y|n] (Default y): "
487 | read cho
488 | cho=${cho:='y'}
489 | echo ""
490 | while true
491 | do
492 | case $cho in
493 |
494 | N|NO|n|no)
495 | /usr/sbin/userdel -r mysql 2>/dev/null
496 | /usr/sbin/groupdel mysql 2>/dev/null
497 | /usr/sbin/groupadd -g 600 mysql
498 | /usr/sbin/useradd -u 600 -g mysql mysql
499 | echo mysql | passwd mysql --stdin 1>/dev/null
500 | id mysql
501 | echo ""
502 | break
503 | ;;
504 | Y|YES|y|yes)
505 | id mysql
506 | echo mysql | passwd mysql --stdin 1>/dev/null
507 | echo ""
508 | break
509 | ;;
510 | exit|EXIT)
511 | exit
512 | break
513 | ;;
514 | *)
515 | echo -n "Do you want to use users (mysql) ("no" delet user and rebuild)[y|n] (Default y): "
516 | read cho
517 | cho=${cho:='y'}
518 | echo ""
519 | ;;
520 | esac
521 | done
522 | fi
523 |
524 | ####################os check####################
525 | echo "Check $base and $data"
526 | mysql=`df -hm| grep -w $base | awk '{print $(NF-2)}'`
527 | if [ ! -n "$mysql" ];then
528 | echo "$base not have lv"
529 | if [ ! -d "$base" ];then
530 | echo "$base dose not exist;"
531 | echo -n "please press y to create $base,n to quit (Y/N) (Default Y): "
532 | read cho
533 | cho=${cho:='y'}
534 | echo ""
535 | while true
536 | do
537 | case $cho in
538 | N|NO|n|no)
539 | echo "Please create $base !!!"
540 | echo ""
541 | exit
542 | ;;
543 | Y|YES|y|yes)
544 | mkdir -p $base
545 | break
546 | ;;
547 | esac
548 | done
549 | fi
550 | else
551 | if [ "$mysql" -lt 29000 ];then
552 | echo '$base lv must >=30G'
553 | fi
554 | fi
555 | mydata=`df -hm| grep -w $data | awk '{print $(NF-2)}'`
556 | if [ ! -n "$mydata" ];then
557 | echo "$data not have lv"
558 | if [ ! -d "$data" ];then
559 | echo "$data dose not exist;"
560 | echo -n "please press y to create $data,n to quit (Y/N) (Default Y): "
561 | read cho
562 | cho=${cho:='y'}
563 | echo ""
564 | while true
565 | do
566 | case $cho in
567 | N|NO|n|no)
568 | echo "Please create $data !!!"
569 | echo ""
570 | exit
571 | ;;
572 | Y|YES|y|yes)
573 | mkdir -p $data
574 | break
575 | ;;
576 | esac
577 | done
578 | fi
579 | else
580 | if [ "$mydata" -lt 99000 ];then
581 | echo '$data lv must >=100G'
582 | fi
583 | fi
584 | echo " "
585 | ##osversion
586 | os=`lsb_release -a|grep Description`
587 | v_version=`echo ${os#*:}`
588 |
589 | ##check old mysql
590 | echo "Check Old Mysql"
591 | rpm=`rpm -qa | grep mysql`
592 | if [ -z "$rpm" ];then
593 | echo "check old mysql success!"
594 | else
595 | rpm -e $rpm --nodeps
596 | echo "check old mysql: $rpm delete success!"
597 | fi
598 | echo " "
599 |
600 | ##print message
601 | echo "|--------------------------------------------------------------------|"
602 | echo " Os Version: $v_version "
603 | echo " MemTotal: $mem M "
604 | echo " BaseDir: $base "
605 | echo " DataDir: $data "
606 | echo " Port : $port "
607 | echo " Server Id: $ser_id "
608 | echo " Defalut Character: $char "
609 | echo " Innodb_buffer_pool_size: $innodb M "
610 | echo " Host Ipaddr: $rehost "
611 | echo "|--------------------------------------------------------------------|"
612 |
613 | echo " "
614 | echo -n "please press y to continue,n to quit (Y/N) (Default Y): "
615 | read cho
616 | cho=${cho:='y'}
617 | echo ""
618 | while true
619 | do
620 | case $cho in
621 |
622 | N|NO|n|no)
623 |
624 | echo "Thanks!"
625 | echo ""
626 | break
627 | ;;
628 | Y|YES|y|yes)
629 | ##new directory
630 | mkdir -p $data/data
631 | mkdir -p $data/log
632 | mkdir -p $data/binlog
633 | mkdir -p $data/tmp
634 |
635 | ##edit limits.conf
636 | cat >>/etc/security/limits.conf << END
637 | mysql hard nofile 65535
638 | mysql soft nofile 65535
639 | END
640 |
641 | ##edit .bash_profile
642 | PROFILES="/home/mysql/.bash_profile"
643 | for PROFILE in $PROFILES ; do
644 | if [ -f "$PROFILE" ] ; then
645 | if [ -z "$(grep "MySQL" $PROFILE)" ] ; then
646 | cat >>$PROFILE << END
647 | #MySQL
648 | export MYSQL_HOME=$base
649 | export PATH=\$MYSQL_HOME/mysql5.7/bin:\$PATH
650 | END
651 | echo "$PROFILE parameters : success"
652 | else
653 | echo "$PROFILE parameters : already existed"
654 | fi
655 | else
656 | echo "$0: $PROFILE not found "
657 | fi
658 | done
659 | ##install software
660 | cd $azlj
661 | tar -xf mysql*5.7*tar* -C $base
662 | cd $base
663 | tar xf mysql-5.7*-x86_64.tar.gz
664 | ln -s mysql-5.7*-x86_64 mysql5.7
665 | chown -R mysql:mysql $base
666 | chown -R mysql:mysql $data
667 | chmod -R 755 $data
668 | #cd /usr/local
669 | #ln -s $base/mysql5.7 /usr/local/mysql
670 | rm -rf /etc/my.cnf
671 | M="M"
672 | cnf="/etc/my.cnf"
673 | cat >>$cnf << END
674 | [client]
675 | port = $port
676 | socket = $data/mysql.sock
677 |
678 | [mysql]
679 | no-auto-rehash
680 | prompt=(\\u@\\h) [\\d]>\\_
681 |
682 | [mysqld]
683 | # basic settings #
684 | server_id = $ser_id
685 | user = mysql
686 | port = $port
687 | basedir = $base/mysql5.7
688 | datadir = $data/data
689 | socket = $data/mysql.sock
690 | pid-file = $data/mysql.pid
691 | log_error = $data/log/error.log
692 | sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
693 | autocommit = 1
694 | character_set_server=$char
695 | transaction_isolation = READ-COMMITTED
696 | explicit_defaults_for_timestamp = 1
697 | max_allowed_packet = 16777216
698 | event_scheduler = 1
699 | tmpdir = $data/tmp
700 | log_timestamps=system
701 | lower_case_table_names = 1
702 |
703 | # connection #
704 | interactive_timeout = 43200
705 | wait_timeout = 43200
706 | lock_wait_timeout = 43200
707 | skip_name_resolve = 1
708 | max_connections = 2000
709 | max_connect_errors = 100000
710 |
711 | # table cache performance settings #
712 | table_open_cache = 4096
713 | table_definition_cache = 4096
714 | table_open_cache_instances = 64
715 |
716 | # session memory settings #
717 | read_buffer_size = 16M
718 | read_rnd_buffer_size = 32M
719 | sort_buffer_size = 32M
720 | tmp_table_size = 64M
721 | join_buffer_size = 128M
722 | thread_cache_size = 64
723 |
724 | # log settings #
725 | slow_query_log = 1
726 | slow_query_log_file = $data/log/slow.log
727 | log_queries_not_using_indexes = 1
728 | log_slow_admin_statements = 1
729 | log_slow_slave_statements = 1
730 | log_throttle_queries_not_using_indexes = 10
731 | expire_logs_days = 7
732 | long_query_time = 2
733 | min_examined_row_limit = 100
734 | binlog-rows-query-log-events = 1
735 | log-bin-trust-function-creators = 1
736 | max_binlog_size = 512M
737 |
738 | # InnoDB settings #
739 | innodb_page_size = 16384
740 | innodb_data_file_path = ibdata1:1G:autoextend
741 | innodb_buffer_pool_size = $innodb$M
742 | innodb_buffer_pool_instances = 16
743 | innodb_buffer_pool_load_at_startup = 1
744 | innodb_buffer_pool_dump_at_shutdown = 1
745 | innodb_lru_scan_depth = 4096
746 | innodb_lock_wait_timeout = 50
747 | innodb_io_capacity = 10000
748 | innodb_io_capacity_max = 20000
749 | innodb_flush_method = O_DIRECT
750 | innodb_file_format = Barracuda
751 | innodb_file_format_max = Barracuda
752 | innodb_undo_logs = 128
753 | innodb_undo_tablespaces = 3
754 | innodb_flush_neighbors = 0
755 | innodb_log_buffer_size = 16777216
756 | innodb_log_file_size = 1048576000
757 | innodb_log_files_in_group = 3
758 | innodb_purge_threads = 4
759 | innodb_large_prefix = 1
760 | innodb_thread_concurrency = 64
761 | innodb_print_all_deadlocks = 1
762 | innodb_strict_mode = 1
763 | innodb_sort_buffer_size = 67108864
764 | innodb_write_io_threads = 16
765 | innodb_read_io_threads = 16
766 | innodb_file_per_table = 1
767 | innodb_stats_persistent_sample_pages = 64
768 | innodb_autoinc_lock_mode = 2
769 | innodb_online_alter_log_max_size = 1G
770 | innodb_open_files = 4096
771 | innodb_flush_log_at_trx_commit = 1
772 |
773 | # Myisam settings #
774 | myisam_max_sort_file_size=512M
775 | myisam_sort_buffer_size =8M
776 |
777 | # replication settings #
778 | #read_only = 1
779 | skip_slave_start = 1
780 | slave_parallel_workers = 4
781 | slave_parallel_type = 'LOGICAL_CLOCK'
782 | slave_preserve_commit_order = on
783 | master_info_repository = table
784 | relay_log_info_repository = table
785 | sync_binlog = 1
786 | gtid_mode = on
787 | enforce_gtid_consistency = 1
788 | log-slave-updates = 1
789 | log_bin = $data/binlog/mysql-bin
790 | log_bin_index = $data/binlog/binlog.index
791 | binlog_format = row
792 | binlog_row_image = minimal
793 | binlog_rows_query_log_events = 1
794 | #relay_log_index = $data/binlog/relaylog.index
795 | #relay_log = $data/binlog/relay.log
796 | #relay_log_recovery = 1
797 | #slave_skip_errors = ddl_exist_errors
798 | #slave-rows-search-algorithms = 'INDEX_SCAN,HASH_SCAN'
799 |
800 | # semi sync replication settings #
801 | #plugin_load = "validate_password.so;rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave.so'
802 | #rpl_semi_sync_master_enabled = 1
803 | #rpl_semi_sync_master_timeout = 3000
804 | #rpl_semi_sync_slave_enabled= 1
805 |
806 | # password plugin #
807 | #validate_password_policy = strong
808 | #validate-password = force_plus_permanent
809 |
810 | END
811 | chown mysql:mysql /etc/my.cnf
812 | $base/mysql5.7/bin/mysqld --initialize --user=mysql
813 | cd $base/mysql5.7/support-files/
814 | cp mysql.server /etc/init.d/mysqld
815 | chkconfig --add mysqld
816 | chkconfig --level 345 mysqld on
817 | service mysqld start
818 | pass=`cat $data/log/error.log | grep "A temporary password is" | awk '{print $NF}'`
819 | sed -i "/\[client\]/a\user=root" /etc/my.cnf
820 | sed -i "/\user=/a\password='$pass'" /etc/my.cnf
821 | cat >>/etc/profile < /etc/hosts << EOF
36 | 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
37 | ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
38 | 172.16.12.54 aliyun
39 | EOF
40 | ```
41 |
42 | ### 1.3 查看 `/etc/hosts`
43 |
44 | ```bash
45 | [root@aliyun ~]$ cat /etc/hosts
46 | 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
47 | ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
48 | 172.16.12.54 aliyun
49 | ```
50 |
51 | ### 1.4 开始安装
52 |
53 | ```bash
54 | [root@aliyun ~]$ pwd
55 | /root
56 | ```
57 |
58 | ```bash
59 | [root@aliyun ~]$ wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar
60 | ```
61 |
62 | ```bash
63 | [root@aliyun ~]$ git clone https://github.com/ghl1024/MySQL_Install.git
64 | ```
65 |
66 | ```bash
67 | [root@aliyun ~]$ ll
68 | total 680908
69 | -rw-r--r-- 1 root root 697240064 Dec 18 21:54 mysql-5.7.29-linux-glibc2.12-x86_64.tar
70 | drwxr-xr-x 3 root root 4096 Apr 11 16:49 MySQL_Install
71 | ```
72 |
73 | ```bash
74 | [root@aliyun ~]$ sh MySQL_Install/MySQL_install.sh
75 | Check /etc/hosts
76 | check /etc/hosts IP hostname success!
77 |
78 | ##########################################
79 | # 1,Default Quick Install #
80 | # 2,Custom Install #
81 | # 3,Cancel Install #
82 | # Version:MySQL 5.7.18 #
83 | ##########################################
84 |
85 | Please Select [1-3] To Continue (Default 1): 1 ###快速默认安装
86 | id: mysql: no such user
87 |
88 | uid=600(mysql) gid=600(mysql) groups=600(mysql)
89 |
90 | Check /mysql/mysoft and /mysql/mydata
91 | /mysql/mysoft not have lv ###检测/mysql/mysoft不是lv
92 | /mysql/mysoft dose not exist;
93 | please press y to create /mysql/mysoft,n to quit (Y/N) (Default Y): Y ###是否创建目录/mysql/mysoft,在根下。(y,创建;n,不创建)
94 |
95 | /mysql/mydata not have lv ###检测/mysql/mysoft不是lv
96 | /mysql/mydata dose not exist;
97 | please press y to create /mysql/mydata,n to quit (Y/N) (Default Y): Y ###是否创建目录/mysql/mydata,在根下。(y,创建;n,不创建)
98 |
99 |
100 | Check Old Mysql
101 | check old mysql success!
102 |
103 | |--------------------------------------------------------------------|
104 | Os Version: CentOS Linux release 7.3.1611 (Core)
105 | MemTotal: 1839 M
106 | BaseDir: /mysql/mysoft
107 | DataDir: /mysql/mydata/3306
108 | Port : 3306
109 | Server Id: 55186
110 | Defalut Character: utf8
111 | Innodb_buffer_pool_size: 1287 M
112 | Host Ipaddr: 172.16.12.54
113 | |--------------------------------------------------------------------|
114 |
115 | please press y to continue,n to quit (Y/N) (Default Y): Y ###列表输出安装信息,核对并确认是否继续安装(y,开始安装;n,取消安装)
116 |
117 | /home/mysql/.bash_profile parameters : success
118 | Starting MySQL.. [ OK ]
119 | *******Sat Apr 11 21:03:09 CST 2020*******
120 | **********Install Sucessful!**********
121 | ******* MySQL User: mysqladmin **** ###输出mysql管理员用户名
122 | ******* User Password: mysql ****** ###输出mysql管理员密码
123 | **************************************
124 | [root@aliyun ~]$
125 | ```
126 |
127 | ### 1.5 安装完成查看
128 |
129 | ```bash
130 | [root@aliyun ~]$ netstat -tnlp|egrep "3306|mysql"
131 | tcp6 0 0 :::3306 :::* LISTEN 3911/mysqld
132 | ```
133 |
134 | ```bash
135 | [root@aliyun ~]$ ps -aux|grep mysql
136 | root 2676 0.0 0.0 11760 1628 pts/0 S 21:03 0:00 /bin/sh /mysql/mysoft/mysql5.7/bin/mysqld_safe --datadir=/mysql/mydata/3306/data --pid-file=/mysql/mydata/3306/mysql.pid
137 | mysql 3911 0.1 15.1 2660972 285380 pts/0 Sl 21:03 0:00 /mysql/mysoft/mysql5.7/bin/mysqld --basedir=/mysql/mysoft/mysql5.7 --datadir=/mysql/mydata/3306/data --plugin-dir=/mysql/mysoft/mysql5.7/lib/plugin --user=mysql --log-error=/mysql/mydata/3306/log/error.log --pid-file=/mysql/mydata/3306/mysql.pid --socket=/mysql/mydata/3306/mysql.sock --port=3306
138 | ```
139 |
140 | ```bash
141 | #使用mysql用户登录
142 | [root@aliyun ~]$ su - mysql
143 | Last login: Sat Apr 11 21:07:01 CST 2020 on pts/0
144 | ```
145 |
146 | ```bash
147 | [mysql@aliyun ~]$ mysql -umysqladmin -pmysql
148 | mysql: [Warning] Using a password on the command line interface can be insecure.
149 | Welcome to the MySQL monitor. Commands end with ; or \g.
150 | Your MySQL connection id is 17
151 | Server version: 5.7.29-log MySQL Community Server (GPL)
152 |
153 | Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
154 |
155 | Oracle is a registered trademark of Oracle Corporation and/or its
156 | affiliates. Other names may be trademarks of their respective
157 | owners.
158 |
159 | Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
160 |
161 | (mysqladmin@localhost) [(none)]> show databases;
162 | +--------------------+
163 | | Database |
164 | +--------------------+
165 | | information_schema |
166 | | mysql |
167 | | performance_schema |
168 | | sys |
169 | +--------------------+
170 | 4 rows in set (0.00 sec)
171 |
172 | (mysqladmin@localhost) [(none)]>
173 | ```
174 |
175 | ## :sun_with_face: 2. 自定义安装过程如下
176 |
177 | - 自定义安装,是根据用户需要安装到指定路径下,(自动创建用户指定的软件目录与数据目录);
178 | - 如下示例(软件安装在 `/home/mysql/mysoft` 下,数据目录在 `/home/mysql/mydata` 下,端口为 `3333`,管理员用户为 `root`,管理员密码为 `root`);
179 |
180 | ### 2.1 查看主机名
181 |
182 | ```bash
183 | [root@aliyun ~]$ hostname
184 | aliyun
185 | ```
186 |
187 | ### 2.2 将 `ip` 和 `hostname` 加入到 `/etc/hosts` 中
188 |
189 | ```bash
190 | [root@aliyun ~]$ cat > /etc/hosts << EOF
191 | 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192 | ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
193 | 172.16.12.54 aliyun
194 | EOF
195 | ```
196 |
197 | ### 2.3 查看 `/etc/hosts`
198 |
199 | ```bash
200 | [root@aliyun ~]$ cat /etc/hosts
201 | 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
202 | ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
203 | 172.16.12.54 aliyun
204 | ```
205 |
206 | ### 2.4 开始安装
207 |
208 | ```bash
209 | [root@aliyun ~]$ pwd
210 | /root
211 | ```
212 |
213 | ```bash
214 | [root@aliyun ~]$ wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar
215 | ```
216 |
217 | ```bash
218 | [root@aliyun ~]$ git clone https://github.com/ghl1024/MySQL_Install.git
219 | ```
220 |
221 | ```bash
222 | [root@aliyun ~]$ ll
223 | total 680908
224 | -rw-r--r-- 1 root root 697240064 Dec 18 21:54 mysql-5.7.29-linux-glibc2.12-x86_64.tar
225 | drwxr-xr-x 3 root root 4096 Apr 11 16:49 MySQL_Install
226 | ```
227 |
228 | ```bash
229 | [root@aliyun ~]$ sh MySQL_Install/MySQL_install.sh
230 | Check /etc/hosts
231 | check /etc/hosts IP hostname success!
232 |
233 | ##########################################
234 | # 1,Default Quick Install #
235 | # 2,Custom Install #
236 | # 3,Cancel Install #
237 | # Version:MySQL 5.7.18 #
238 | ##########################################
239 |
240 | Please Select [1-3] To Continue (Default 1): 2 ###选择自定义安装
241 | Please Input MySQL Port (Default 3306): 3333 ###输入端口号(默认为3306)
242 | Please Input MySQL BaseDir (Default /mysql/mysoft): /home/mysql/mysoft ###输入软件安装目录(默认为/mysql/mysoft)
243 | Please Input MySQL DataDir (Default /mysql/mydata): /home/mysql/mydata ###输入数据文件目录(默认为/mysql/mydata)
244 | Please Input MySQL Server_Id (Default 55186): ###输入server_id(默认取值为IP后两位的结合,如:192.168.1.124,server_id为1124)
245 | Please Input MySQL Default Character (Default utf8): ###输入数据库默认字符集(默认为utf8)
246 | Please Input MySQL Innodb_Buffer_size (Default 1287 M): ###输入innodb_buffer_size大小(默认取值为实际系统内存的70%)
247 |
248 | uid=600(mysql) gid=600(mysql) groups=600(mysql)
249 |
250 | Do you want to use users (mysql) (no delet user and rebuild)[y|n] (Default y): y ###是否重建mysql用户(y,不重建;n,删除现有mysql用户并重建)
251 |
252 | uid=600(mysql) gid=600(mysql) groups=600(mysql)
253 |
254 | Check /home/mysql/mysoft and /home/mysql/mydata
255 | /home/mysql/mysoft not have lv ###检测/home/mysql/mysoft不是lv
256 | /home/mysql/mysoft dose not exist;
257 | please press y to create /home/mysql/mysoft,n to quit (Y/N) (Default Y): y ###是否创建目录/home/mysql/mysoft,在根下。(y,创建;n,不创建)
258 |
259 | /home/mysql/mydata not have lv ###检测/home/mysql/mydata不是lv
260 | /home/mysql/mydata dose not exist;
261 | please press y to create /home/mysql/mydata,n to quit (Y/N) (Default Y): y ###是否创建目录/home/mysql/mydata,在根下。(y,创建;n,不创建)
262 |
263 |
264 | Check Old Mysql
265 | check old mysql success!
266 |
267 | |--------------------------------------------------------------------|
268 | Os Version: CentOS Linux release 7.3.1611 (Core)
269 | MemTotal: 1839 M
270 | BaseDir: /home/mysql/mysoft
271 | DataDir: /home/mysql/mydata
272 | Port : 3333
273 | Server Id: 55186
274 | Defalut Character: utf8
275 | Innodb_buffer_pool_size: 1287 M
276 | Host Ipaddr: 172.16.12.54
277 | |--------------------------------------------------------------------|
278 |
279 | please press y to continue,n to quit (Y/N) (Default Y): y ###列表输出安装信息,核对并确认是否继续安装(y,开始安装;n,取消安装)
280 |
281 | /home/mysql/.bash_profile parameters : already existed
282 | Starting MySQL.. [ OK ]
283 | *******Sat Apr 11 21:57:52 CST 2020*******
284 | *******Install Sucessful!*******
285 | ******* MySQL User: root ******* ###输出mysql管理员用户名
286 | ***** User Password : root ***** ###输出mysql管理员密码
287 | ********************************
288 | [root@aliyun ~]$
289 | ```
290 |
291 | ### 2.5 安装完成查看
292 |
293 | ```bash
294 | [root@aliyun ~]$ netstat -tnlp|egrep "3306|mysql"
295 | tcp6 0 0 :::3333 :::* LISTEN 4158/mysqld
296 | [root@aliyun ~]$ ps -aux | grep mysql
297 | root 2923 0.0 0.0 11760 1628 pts/0 S 21:57 0:00 /bin/sh /home/mysql/mysoft/mysql5.7/bin/mysqld_safe --datadir=/home/mysql/mydata/data --pid-file=/home/mysql/mydata/mysql.pid
298 | mysql 4158 0.1 15.3 2660972 288628 pts/0 Sl 21:57 0:00 /home/mysql/mysoft/mysql5.7/bin/mysqld --basedir=/home/mysql/mysoft/mysql5.7 --datadir=/home/mysql/mydata/data --plugin-dir=/home/mysql/mysoft/mysql5.7/lib/plugin --user=mysql --log-error=/home/mysql/mydata/log/error.log --pid-file=/home/mysql/mydata/mysql.pid --socket=/home/mysql/mydata/mysql.sock --port=3333
299 | root 4294 0.0 0.0 112648 968 pts/0 R+ 22:07 0:00 grep --color=auto mysql
300 | [root@aliyun ~]$
301 | ```
302 |
303 | ## :sun_with_face: 3. 退出
304 |
305 | ```bash
306 | [root@aliyun ~]$ sh MySQL_Install/MySQL_install.sh
307 | Check /etc/hosts
308 | check /etc/hosts IP hostname success!
309 |
310 | ##########################################
311 | # 1,Default Quick Install #
312 | # 2,Custom Install #
313 | # 3,Cancel Install #
314 | # Version:MySQL 5.7.18 #
315 | ##########################################
316 |
317 | Please Select [1-3] To Continue (Default 1): 3
318 | [root@aliyun ~]$
319 | ```
320 |
--------------------------------------------------------------------------------