MySQL5.6生产库自动化安装部署
自动化运维是一个DBA应该掌握的技术,其中,自动化安装数据库是一项基本的技能,本文中的安装脚本已通过测试,作为生产库来说没有问题,鉴于每个公司存储规划要求不同,可以按需自行修改脚本。
脚本中已经注释说明一些基本的安装信息
本脚本默认启用5.6部分新特性
innodb_buffer_pool_dump_at_shutdown=1 它dump的不是数据,是Id号
innodb_buffer_pool_load_at_startup=1
开启这个两个参数当数据库重启后把这些热数据重新加载回去
只有正常关库才会dump热数据块,宕机和kill -9不会
部分参数按需整改,例如innodb_buffer_pool_size = 512M,本文给的512M,一般给内存的50%-80%。
来看一下脚本的具体情况
[root@HE3 ~]# cat mysql_auto_install.sh
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
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
|
###### 二进制自动安装数据库脚本root密码MANAGER将脚本和安装包放在/root目录即可############### ######数据库目录/usr/local/mysql############ ######数据目录/data/mysql############ ######日志目录/log/mysql############ ######端口号默认3306其余参数按需自行修改############ ################## #author:rrhelei@126.com# ################## #!/bin/bash PATH= /bin : /sbin : /usr/bin : /usr/sbin : /opt/bin : /opt/sbin :~ /bin export PATH # Check if user is root if [ $( id -u) != "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.6.25 on Redhat /CentOS Linux " echo "=========================================================================" cur_dir=$( pwd ) #set mysql root password echo "===========================" mysqlrootpwd= "MANAGER" echo -e "Please input the root password of mysql:" read -p "(Default password: MANAGER):" mysqlrootpwd if [ "$mysqlrootpwd" = "" ]; then mysqlrootpwd= "MANAGER" fi echo "===========================" echo "MySQL root password:$mysqlrootpwd" echo "===========================" #which MySQL Version do you want to install ? echo "===========================" isinstallmysql56= "n" echo "Install MySQL 5.6.25,Please input y" read -p "(Please input y , n):" isinstallmysql56 case "$isinstallmysql56" in y|Y|Yes|YES| yes |yES|yEs|YeS|yeS) echo "You will install MySQL 5.6.25" isinstallmysql56= "y" ;; *) echo "INPUT error,You will exit install MySQL 5.6.25" isinstallmysql56= "n" exit esac get_char() { SAVEDSTTY=`stty -g` stty - echo stty cbreak #dd if=/dev/tty bs=1 count=1 2> /dev/null stty -raw stty echo stty $SAVEDSTTY } echo "" echo "Press any key to start...or Press Ctrl+c to cancel" char=`get_char` # Initialize the installation related content. function InitInstall() { cat /etc/issue uname -a MemTotal=` free -m | grep Mem | awk '{print $2}' ` echo -e "\n Memory is: ${MemTotal} MB " #Set timezone rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #Delete Old Mysql program rpm -qa| grep mysql rpm -e mysql #yum -y remove mysql-server mysql mysql-libs #yum -y remove php-mysql #yum -y install yum-fastestmirror #yum -y update #Disable SeLinux if [ -s /etc/selinux/config ]; then sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config fi setenforce 0 } #Installation of depend on and optimization options. function InstallDependsAndOpt() { cd $cur_dir 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 } #Install MySQL function InstallMySQL56() { echo "============================Install MySQL 5.6.22==================================" cd $cur_dir #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 #mysql directory configuration groupadd mysql -g 512 useradd -u 512 -g mysql -s /sbin/nologin -d /home/mysql mysql tar xvf /root/mysql-5 .6.25-linux-glibc2.5-x86_64. tar .gz mv /root/mysql-5 .6.25-linux-glibc2.5-x86_64 /usr/local/mysql mkdir -p /data/mysql mkdir -p /log/mysql chown -R mysql:mysql /data/mysql chown -R mysql:mysql /usr/local/mysql chown -R mysql:mysql /log #edit /etc/my.cnf SERVERID=` ifconfig eth0 | grep "inet addr" | awk '{ print $2}' | awk -F. '{ print $4"3306"}' ` cat >> /etc/my .cnf<<EOF [client] port = 3306 socket = /tmp/mysql .sock default-character- set =utf8 [mysql] default-character- set =utf8 [mysqld] port = 3306 socket = /tmp/mysql .sock basedir = /usr/local/mysql datadir = /data/mysql open_files_limit = 3072 back_log = 103 max_connections = 800 max_connect_errors = 100000 table_open_cache = 512 external-locking = FALSE max_allowed_packet = 32M sort_buffer_size = 2M join_buffer_size = 2M thread_cache_size = 51 query_cache_size = 32M tmp_table_size = 96M max_heap_table_size = 96M slow_query_log = 1 slow_query_log_file = /log/mysql/slow .log log-error = /log/mysql/error .log long_query_time = 1 server- id = $SERVERID log-bin = mysql-bin sync_binlog = 1 binlog_cache_size = 4M max_binlog_cache_size = 8M max_binlog_size = 1024M expire_logs_days = 60 key_buffer_size = 32M read_buffer_size = 1M read_rnd_buffer_size = 16M bulk_insert_buffer_size = 64M character- set -server=utf8 default-storage-engine = InnoDB binlog_format = row innodb_buffer_pool_dump_at_shutdown = 1 innodb_buffer_pool_load_at_startup = 1 binlog_rows_query_log_events = 1 explicit_defaults_for_timestamp = 1 #log_slave_updates=1 #gtid_mode=on #enforce_gtid_consistency=1 #innodb_write_io_threads = 8 #innodb_read_io_threads = 8 #innodb_thread_concurrency = 0 transaction_isolation = REPEATABLE-READ innodb_additional_mem_pool_size = 16M innodb_buffer_pool_size = 512M innodb_data_file_path = ibdata1:1024M:autoextend innodb_flush_log_at_trx_commit = 1 innodb_log_buffer_size = 16M innodb_log_file_size = 512M innodb_log_files_in_group = 2 innodb_max_dirty_pages_pct = 50 innodb_file_per_table = 1 innodb_locks_unsafe_for_binlog = 0 wait_timeout = 14400 interactive_timeout = 14400 skip-name-resolve [mysqldump] quick max_allowed_packet = 32M EOF /usr/local/mysql/scripts/mysql_install_db --basedir= /usr/local/mysql --datadir= /data/mysql --defaults- file = /etc/my .cnf --user=mysql cp /usr/local/mysql/support-files/mysql .server /etc/init .d /mysqld chmod 700 /etc/init .d /mysqld chkconfig --add mysqld chkconfig --level 2345 mysqld on cat >> /etc/ld .so.conf.d /mysql-x86_64 .conf<<EOF /usr/local/mysql/lib EOF ldconfig if [ -d "/proc/vz" ]; then ulimit -s unlimited fi /etc/init .d /mysqld start cat >> /etc/profile <<EOF export PATH=$PATH: /usr/local/mysql/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: /usr/local/mysql/lib EOF source /etc/profile /usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwd cat > /tmp/mysql_sec_script <<EOF use mysql; delete from mysql.user where user!= 'root' or host!= 'localhost' ; grant all privileges on *.* to 'sys_admin' @ '%' identified by 'MANAGER' ; flush privileges; EOF /usr/local/mysql/bin/mysql -u root -p$mysqlrootpwd -h localhost < /tmp/mysql_sec_script #rm -f /tmp/mysql_sec_script /etc/init .d /mysqld restart echo "============================MySQL 5.6.25 install completed=========================" } function CheckInstall() { echo "===================================== Check install ===================================" clear ismysql= "" echo "Checking..." if [ -s /usr/local/mysql/bin/mysql ] && [ -s /usr/local/mysql/bin/mysqld_safe ] && [ -s /etc/my .cnf ]; then echo "MySQL: OK" ismysql= "ok" else echo "Error: /usr/local/mysql not found!!!MySQL install failed." fi if [ "$ismysql" = "ok" ]; then echo "Install MySQL 5.6.25 completed! enjoy it." echo "=========================================================================" netstat -ntl else echo "Sorry,Failed to install MySQL!" echo "You can tail /root/mysql-install.log from your server." fi } #The installation log InitInstall 2>&1 | tee /root/mysql-install .log CheckAndDownloadFiles 2>&1 | tee -a /root/mysql-install .log InstallDependsAndOpt 2>&1 | tee -a /root/mysql-install .log InstallMySQL56 2>&1 | tee -a /root/mysql-install .log CheckInstall 2>&1 | tee -a /root/mysql-install .log |
执行脚本后,输入用户名密码(默认MANAGER)后登录数据库成功。
至此,MySQL5.6安装完成。
本文出自 “岁伏” 博客,请务必保留此出处http://suifu.blog.51cto.com/9167728/1846671
MySQL5.6生产库自动化安装部署的更多相关文章
- Cobbler自动化安装部署系统
自动化安装部署 https://www.cnblogs.com/nulige/p/6796593.html PXE+Kickstart工作原理 pxe+kickstart工作流程 网卡上的pxe芯片有 ...
- 敏捷开发之产品日日新,一步通之---自动化代码构建->自动化打包->自动化安装部署
本文将介绍如何自动化实现代码构建,自动化代码打包成exe安装包,自动化安装到测试环境.通过计划任务的方式,每天自动化发布最新的产品供老板展示,供测试人员使用,真正实现敏捷的快速迭代. 自动代码构建 自 ...
- HUE的自动化安装部署
HUE=Hadoop User Experience(Hadoop用户体验),直白来说就一个开源的Apache Hadoop UI系统,由Cloudera Desktop演化而来,最后Cloudera ...
- 使用Kickstart+pxe自动化安装部署无人值守的linux服务器
Kickstart+pxe Kickstart无人职守安装RHEL5过程分享(详细图解版) 启动应用有:httpd.dhcpd.named.xinetd 无人职守自动批量安装linux系统超详细 参考 ...
- MariaDB10自动化安装部署
去MariaDB官网下载MariaDB本文用的是MariaDB 10.1.16 https://downloads.mariadb.org 选择二进制版本,下载到/root目录下 mariadb-10 ...
- SSH 自动化安装部署遇到的问题
1. 对于需要添加unknown host的问题可以通过添加: -o StrictHostKeyChecking=no 例如: ssh -o StrictHostKeyChecking=no acco ...
- 比Ansible更吊的自动化运维工具,自动化统一安装部署_自动化部署udeploy 1.0
新增功能: 2015-03-11 除pass(备份与更新)与start(启动服务)外,实现一切自动化. 注:pass与start设为业务类,由于各类业务不同,所以无法实现自动化.同类业务除外,如更新的 ...
- 比Ansible更吊的自动化运维工具,自动化统一安装部署自动化部署udeploy 1.0 版本发布
新增功能: 逻辑与业务分离,完美实现逻辑与业务分离,业务实现统一shell脚本开发,由框架统一调用. 并发多线程部署,不管多少台服务器,多少个服务,同时发起线程进行更新.部署.启动. 提高list规则 ...
- 使用光盘iso实现Linux操作系统的自动安装部署
前边写了一篇使用 PXE 的方式批量安装操作系统,不是任何时候任何地方都有环境来通过 PXE 方式来进行安装.如果此时需要通过光盘安装,默认的情况下是通过交互式方式进行安装,其实也可以通过 kicks ...
随机推荐
- ListView下拉刷新、上拉载入更多之封装改进
在Android中ListView下拉刷新.上拉载入更多示例一文中,Maxwin兄给出的控件比较强大,前面有详细介绍,但是有个不足就是,里面使用了一些资源文件,包括图片,String,layout,这 ...
- Python大神成长之路: 第一次学习记录
一.Python发展史 二.Python2 or 3 博主选择了Python3. 从官网下载Python www.python.org Windows安装python3.5.python2.7.安装 ...
- asp Vernum
使用ASP加密算法加密你的数据(一) 简介 首先简单介绍一下有关加密的背景.由于美国禁止几种密码算法的对外出口的加密位数(例如SSL的40位加密限制),本文将介绍一种ASP可以使用的简单字符加密 ...
- Base64编码与图片互转
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...
- 关于NIOS ii烧写的几种方式
1. 方法一:.sof和.elf全部保存在FPGA内,程序加载和运行也是在FPGA内部. 把FPGA的配置文件.sof通过JTAG方式下载(其实是在线运行)进入FPGA本身,此时在NIOS II的界面 ...
- Jobject 使用
obj2 = JObject.Parse(result.Html); JArray _Jarr = _obj["data"]["siteList"].Value ...
- 使用bootstrap建立响应式网页——头部导航栏
1.要建立响应式网站的布局,这个时候bootstrap的高级就能体现出来了. 2.先来了解一下bootstrap提供了哪些响应式工具供我们使用: (1)屏幕宽度尺寸的概念: <768px ...
- The 2014 ACMICPC Asia Regional Xian
2题继续遗憾收场,每次都是只差最后一步.这一场却是之前那么多场中感觉距离奖牌最近的时候.好好总结一下经验教训,复盘之后好好准备下一场北京的最后一战吧. 一开始的状态非常不错,10分钟跟榜完成1A,第二 ...
- The 2014 ACMICPC Asia Regional Xian Online
[A]签到题 [B]后缀数组 [C]染色,DP(感觉可出) [D]BFS搜索,有点麻烦 [E]博弈论,Nim博弈 [F]BFS状态搜索 [G]概率DP+状态压缩 [H]异或+构造 [I]矩阵快速幂(队 ...
- Ubuntu Server 14.04 & Apache2.4 虚拟主机、模块重写、隐藏入口文件配置
环境: Ubuntu Server 14.04 , Apache2.4 一.Apache2.4 虚拟主机配置 01. 新建一份配置文件 在apache2.4中,虚拟主机的目录是通过/etc/apach ...