服务器之家

服务器之家 > 正文

shell脚本一键安装MySQL5.7.29的方法

时间:2021-02-22 16:22     来源/作者:Timing_66

本文参考51CTO博客作者wjw555的作品

脚本内容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
vim install.mysql.sh
 
#!/bin/bash
 
[ -f /etc/init.d/functions ]&& . /etc/init.d/functions
 
###Check if user is root
if [ $UID -ne 0 ]; then
 echo "Error: You must be root to run this script, please use root to install"
 exit 1
fi
 
clear
echo "========================================================================="
echo "A tool to auto-compile & install MySQL 5.7.29 on Redhat/CentOS Linux "
echo "========================================================================="
#pkill -9 mysql
#date +%Y-%m-%d-%H-%M
#卸载系统自带的Mysql
#/bin/rpm -e $(/bin/rpm -qa | grep mysql|xargs) --nodeps
#/bin/rpm -e $(/bin/rpm -qa | grep mariadb|xargs) --nodeps
#/bin/rm -f /etc/my.cnf
 
#set mysql root password
 echo "==========================="
  mysqlrootpwd="$1"
  if [ "$1" = "" ]; then
    mysqlrootpwd="rootmysql"
  fi
 
#which MySQL Version do you want to install?
echo "==========================="
 
 isinstallmysql57="5.7.29"
 echo "Install MySQL 5.7.29,Please input y"
 read -p "(Please input y , n):"
# Initialize the installation related content.
 #Delete Old Mysql program
 rpm -qa|grep mysql
 rpm -e mysql
 
 
cat >>/etc/security/limits.conf<<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF
 
echo "fs.file-max=65535" >> /etc/sysctl.conf
 
echo "============================Install MySQL 5.7.29=================================="
 
#Backup old my.cnf
#rm -f /etc/my.cnf
if [ -s /etc/my.cnf ]; then
 mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bak
fi
echo "============================MySQL 5.7.29 installing…………========================="
 
##define mysql directory configuration variable
Datadir=/data/mysql/data
Binlogdir=/data/mysql/binlog
Logdir=/data/mysql/logs
 
##yum install devel and wget mysql
yum install numactl
/usr/bin/wget -P /tmp http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
sleep 2
tar xf /tmp/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/mysql-5.7.29-linux-glibc2.12-x86_64 /usr/local/mysql
grep mysql /etc/passwd
RETVAL=$?
if [ $RETVAL -ne 0 ];then
 useradd mysql -s /sbin/nologin -M
  action "mysql user added successfully" /bin/true
 else
  action " $(echo -e "\e[31;47;5m mysql user already exists\e[0m")" /bin/false
fi
 
if [ ! -d "$Datadir" ]
then
 mkdir -p /data/mysql/data
fi
 
 
if [ ! -d "$Binlogdir" ]
then
 mkdir -p /data/mysql/binlog
fi
 
if [ ! -d "$Logdir" ]
then
 mkdir -p /data/mysql/logs
fi
 
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /usr/local/mysql
 
#edit /etc/my.cnf
#SERVERID=`ifconfig eth0 | grep "inet addr" | awk '{ print $2}'| awk -F. '{ print $3$4}'`
cat >>/etc/my.cnf<<EOF
[client]
port   = 3306
 
[mysql]
auto-rehash
prompt="\\u@\\h [\\d]>"
#pager="less -i -n -S"
#tee=/opt/mysql/query.log
 
[mysqld]
####: for global
user        =mysql      
basedir        =/usr/local/mysql/   
datadir        =/data/mysql/data
server_id       =2333306     
port        =3306      
character_set_server    =utf8      
explicit_defaults_for_timestamp  =off      
log_timestamps      =system     
socket        =/tmp/mysql.sock   
read_only       =0       
skip_name_resolve     =1       
auto_increment_increment   =1       
auto_increment_offset    =1       
lower_case_table_names    =1       
secure_file_priv     =       
open_files_limit     =65536      
max_connections      =1000      
thread_cache_size     =64      
table_open_cache     =81920      
table_definition_cache    =4096      
table_open_cache_instances   =64      
max_prepared_stmt_count    =1048576     
 
####: for binlog
binlog_format      =row      
log_bin        =/data/mysql/binlog/mysql-bin     
binlog_rows_query_log_events  =on      
log_slave_updates     =on      
expire_logs_days     =7       
binlog_cache_size     =65536      
#binlog_checksum     =none      
sync_binlog       =1       
slave-preserve-commit-order   =ON      
 
####: for error-log
log_error       =/data/mysql/logs/error.log     
 
general_log       =off      
general_log_file     =/data/mysql/logs/general.log    
 
####: for slow query log
slow_query_log      =on       
slow_query_log_file     =/data/mysql/logs/slow.log     
#log_queries_not_using_indexes  =on      
long_query_time      =1.000000     
 
####: for gtid
#gtid_executed_compression_period =1000      
gtid_mode       =on       
enforce_gtid_consistency   =on       
 
####: for replication
skip_slave_start      =1       
#master_info_repository    =table      
#relay_log_info_repository   =table      
slave_parallel_type     =logical_clock    
slave_parallel_workers    =4       
#rpl_semi_sync_master_enabled  =1       
#rpl_semi_sync_slave_enabled   =1       
#rpl_semi_sync_master_timeout  =1000      
#plugin_load_add      =semisync_master.so  
#plugin_load_add      =semisync_slave.so   
binlog_group_commit_sync_delay  =100      
binlog_group_commit_sync_no_delay_count = 10     
 
####: for innodb
default_storage_engine       =innodb    
default_tmp_storage_engine      =innodb    
innodb_data_file_path       =ibdata1:1024M:autoextend
innodb_temp_data_file_path      =ibtmp1:12M:autoextend 
innodb_buffer_pool_filename      =ib_buffer_pool  
innodb_log_group_home_dir      =/data/mysql/data     
innodb_log_files_in_group      =3      
innodb_log_file_size       =1024M     
innodb_file_per_table       =on     
innodb_online_alter_log_max_size    =128M     
innodb_open_files        =65535     
innodb_page_size        =16k     
innodb_thread_concurrency      =0      
innodb_read_io_threads       =4      
innodb_write_io_threads       =4      
innodb_purge_threads       =4      
innodb_page_cleaners       =4  
     # 4(刷新lru脏页)
innodb_print_all_deadlocks      =on     
innodb_deadlock_detect       =on     
innodb_lock_wait_timeout      =20     
innodb_spin_wait_delay       =128     
innodb_autoinc_lock_mode      =2      
innodb_io_capacity        =200     
innodb_io_capacity_max       =2000     
#--------Persistent Optimizer Statistics
innodb_stats_auto_recalc      =on     
innodb_stats_persistent       =on     
innodb_stats_persistent_sample_pages   =20     
 
 
innodb_adaptive_hash_index      =on     
innodb_change_buffering       =all     
innodb_change_buffer_max_size     =25     
innodb_flush_neighbors       =1      
#innodb_flush_method        =      
innodb_doublewrite        =on     
innodb_log_buffer_size       =128M     
innodb_flush_log_at_timeout      =1      
innodb_flush_log_at_trx_commit     =1      
innodb_buffer_pool_size       =4096M     
innodb_buffer_pool_instances     =4
autocommit          =1      
#--------innodb scan resistant
innodb_old_blocks_pct       =37     
innodb_old_blocks_time       =1000     
#--------innodb read ahead
innodb_read_ahead_threshold      =56     
innodb_random_read_ahead      =OFF     
#--------innodb buffer pool state
innodb_buffer_pool_dump_pct      =25     
innodb_buffer_pool_dump_at_shutdown    =ON     
innodb_buffer_pool_load_at_startup    =ON     
 
EOF
 
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
Pass=$(grep 'A temporary password' /data/mysql/logs/error.log |awk '{print $NF}')
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
/etc/init.d/mysqld start
echo "export PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
echo "============================MySQL 5.7.29 install completed========================="
ps -eo start,cmd,pid|grep mysql
/usr/local/mysql/bin/mysqladmin -uroot -p"$Pass" password $mysqlrootpwd
?
1
2
[root@localhost ~]# sh install.mysql.sh mysqlroot
[root@localhost ~]# source /etc/profile.d/mysql.sh

说明: mysqlroot 为安装脚本修改MySQL服务默认密码后的新的密码

?
1
2
3
4
5
6
7
[root@localhost ~]# mysql -uroot -p'mysqlroot' -e "select now()"  
mysql: [Warning] Using a password on the command line interface can be insecure.
+---------------------+
| now()    |
+---------------------+
| 2020-10-13 16:18:47 |
+---------------------+

到此处MySQL服务启动成功!

总结

到此这篇关于shell脚本一键安装MySQL5.7.29 的文章就介绍到这了,更多相关shell脚本一键安装MySQL内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_46468647/article/details/109050312

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部