MySQL5.7安装部署

简介

Part1:写在最前

MYSQL5.7.15是截止至本文撰写当日,mysql官网的最新社区版,mysql5.7的多项功能优化可以用激动人心来形容,嫌安装麻烦?没关系,跟着本文,带你1分钟搞定MySQL5.7.15数据库安装部署。

Part2:仅仅安装就够了?

不,当然不够,MySQL5.7的多项功能特性更新,无法一一赘述,因此,我们先从和本文最相关的my.cnf,来解读一些MySQL5.7的部分新特性。

在之前我写过一篇MySQL5.6的新特性参数,诸如:

innodb_buffer_pool_dump_at_shutdown=1

innodb_buffer_pool_load_at_startup=1

开启这个两个参数当数据库重启后把这些热数据重新加载回去

只有正常关库才会dump热数据块,宕机和kill -9不会

更多5.6安装内容可移步:

http://suifu.blog.51cto.com/9167728/1846671

在5.7里,一个新的系统参数:innodb_buffer_pool_dump_pct,其默认值为25

允许DBA控制每个缓冲池最近使用页的百分比来导出,以减缓导出innodb buffer pool所有页占用过大的磁盘。如果innodb buffer pool里缓存了100个页,那么会将最近使用的25个页导出去,最大值是100,意思为全部导出,如下图所示:

wKiom1fjcbXjsiZ7AACrCgT08qo965.jpg

注:在MariaDB10.1里,同样提供了该参数,不过其默认值是100

在线调整innodb_buffer_pool_size,不用重启mysql进程

在MySQL5.6/MariaDB 10.1版本,调整该参数必须重启MySQL进程才可以生效,而mysql5.7版本里,可以直接动态设置,非常方便。

这个功能应用场景如:

1.机器新增内存,DBA忘记调大该参数;

2.工作交接,新来的DBA发现前任DBA对该参数设置不合理。

下面在我机器里进行测试,把512M内存变更为256M,见下图:

wKioL1fjdMSSu3ApAAES8CSuJE4611.jpg

需注意的是,在调整buffer_pool期间,用户的请求会被阻塞,直到调整完毕,所以请勿在高峰期调整。

实战

Part1:整个流程分3步

1.mysql官网下载二进制版本的mysql5.7.15安装包(mysql-5.7.15-linux-glibc2.5-x86_64.tar.gz)至/root目录

2.执行下文所述的mysql_auto_install.sh脚本

3.输入您设置的密码登录数据库

Part2:自动化脚本

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

[[email protected] ~]# cat mysql_auto_install.sh

###### 二进制自动安装数据库脚本root密码MANAGER将脚本和安装包放在/root目录即可###############

######数据库目录/usr/local/mysql############

######数据目录/data/mysql############

######慢日志目录/data/slowlog############

######端口号默认3306其余参数按需自行修改############

##################

#author:[email protected]#

##################

#!/bin/bash

# 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.7.15 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 "==========================="

isinstallmysql57="n"

echo "Install MySQL 5.7.15,Please input y"

read -p "(Please input y , n):" isinstallmysql57

case "$isinstallmysql57" in

y|Y|Yes|YES|yes|yES|yEs|YeS|yeS)

echo "You will install MySQL 5.7.15"

isinstallmysql57="y"

;;

*)

echo "INPUT error,You will exit install MySQL 5.7.15"

isinstallmysql57="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

#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 InstallMySQL57()

{

echo "============================Install MySQL 5.7.15=================================="

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

echo "============================MySQL 5.7.15 installing…………========================="

#mysql directory configuration

tar xvf /root/mysql-5.7.15-linux-glibc2.5-x86_64.tar.gz

mv /root/mysql-5.7.15-linux-glibc2.5-x86_64 /usr/local/mysql

groupadd mysql -g 512

useradd -u 512 -g mysql -s /sbin/nologin -d /home/mysql mysql

mkdir -p /data/mysql

mkdir -p /data/slowlog

chown -R mysql:mysql /data/mysql

chown -R mysql:mysql /usr/local/mysql

chown -R mysql:mysql /data/slowlog

#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

socket=/tmp/mysql.sock

default-character-set=utf8

[mysql]

no-auto-rehash

default-character-set=utf8

[mysqld]

port=3306

character-set-server=utf8

socket=/tmp/mysql.sock

basedir=/usr/local/mysql

datadir=/data/mysql

explicit_defaults_for_timestamp=true

lower_case_table_names=1

back_log=103

max_connections=3000

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

#query_cache_limit=4M

transaction_isolation=REPEATABLE-READ

tmp_table_size=96M

max_heap_table_size=96M

###***slowqueryparameters

long_query_time=1

slow_query_log = 1

slow_query_log_file=/data/slowlog/slow.log

###***binlogparameters

log-bin=mysql-bin

binlog_cache_size=4M

max_binlog_cache_size=4096M

max_binlog_size=1024M

binlog_format=MIXED

expire_logs_days=7

###***relay-logparameters

#relay-log=/data/3307/relay-bin

#relay-log-info-file=/data/3307/relay-log.info

#master-info-repository=table

#relay-log-info-repository=table

#relay-log-recovery=1

#***MyISAMparameters

key_buffer_size=16M

read_buffer_size=1M

read_rnd_buffer_size=16M

bulk_insert_buffer_size=1M

#skip-name-resolve

###***master-slavereplicationparameters

server-id=$SERVERID

#slave-skip-errors=all

#***Innodbstorageengineparameters

innodb_buffer_pool_size=512M

innodb_data_file_path=ibdata1:10M:autoextend

#innodb_file_io_threads=8

innodb_thread_concurrency=16

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=75

innodb_buffer_pool_dump_pct=50

innodb_lock_wait_timeout=50

innodb_file_per_table=on

[mysqldump]

quick

max_allowed_packet=32M

[myisamchk]

key_buffer=16M

sort_buffer_size=16M

read_buffer=8M

write_buffer=8M

[mysqld_safe]

open-files-limit=8192

log-error=/data/mysql/error.log

pid-file=/data/mysql/mysqld.pid

EOF

/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql --initialize-insecure

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

/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.7.15 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.7.15 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

InstallDependsAndOpt 2>&1 | tee -a /root/mysql-install.log

InstallMySQL57 > /dev/null

CheckInstall 2>&1 | tee -a /root/mysql-install.log

Part5:登录&享受吧

1.先source一下环境变量文件使生效

[[email protected] ~] source /etc/profile

2.输入用户名密码(默认为MANAGER)登录数据库

wKioL1fg55bRtezyAAEwCj3jwm4534.jpg

至此,MySQL5.7.15安装完成

——总结——

MySQL5.7拥有诸多让我们激动和期待的新功能,限于文章篇幅原因,这里仅仅介绍冰山一角。由于笔者的水平有限,编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。

时间: 2024-12-14 07:05:52

MySQL5.7安装部署的相关文章

一分钟完成MySQL5.7安装部署

Part1:写在最前 MYSQL5.7.15是截止至本文撰写当日,mysql官网的最新社区版,mysql5.7的多项功能优化可以用激动人心来形容,嫌安装麻烦?没关系,跟着本文,带你1分钟搞定MySQL5.7.15数据库安装部署. Part2:仅仅安装就够了? 不,当然不够,MySQL5.7的多项功能特性更新,无法一一赘述,因此,我们先从和本文最相关的my.cnf,来解读一些MySQL5.7的部分新特性. 在之前我写过一篇MySQL5.6的新特性参数,诸如: innodb_buffer_pool_

mysql5.6 安装部署

mysql5.6 install 这里以预编译二进制方式安装部署,与编译安装相比,不需要编译,直接修改好my.cnf初始化后即可使用,推荐生产环境使用这种方式. 下载文件国内镜像源下载更快,没有必要去官网下载. cd ~ wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz 配置文件准备这里只会配置安装启动必要的参数,生产级别的参数这里不做介绍. cat /etc/my.cn

mysql5.6安装部署

添加mysql用户 groupadd mysql useradd mysql -g mysql -M -s /sbin/nologin 解压文件 tar –zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz -C /data/ mv /opt/mysql-5.6.33-linux-glibc2.5-x86_64 /data/mysql 创建 data.log.lib文件 mkdir -p /data/mysql/data mkdir -p /data/m

mysql5.7安装部署后初始密码查看以及修改

一.查看初始密码以下两种方法: 1.找到自己的error.log日志文件,执行自己的命令,红色标记的部分为初始化密码. grep 'temporary password' /data/mysql/error.log 017-05-04T13:28:34.092370Z 1 [Note] A temporary password is generated for [email protected]: kU<Nkb7;qZip 2.cat /root/.mysql_secret查看 二.修改初始密码

mysql5.6.20二进制安装部署文档

一.业务需求: 单台服务器线上运行着mysql5.5.48 现在是不影响线上的业务,不停止线上的mysql5.5数据库来部署另外一个mysql5.6.20的实例 二.安装部署过程: 2.1安装部署过程注意事项: 在初始化mysql数据库时,是会寻找my.cnf配置文件的,是有顺序的,默认的顺序是: [[email protected] ~]# mysql --help | grep 'Default options' -A 1 Default options are read from the

CentOS7.X安装部署mysql5.7主从环境

生产搭建环境:操作系统:CentOS7.5内存大小:32GB硬盘:500G主库IP:192.168.8.129 hostname:master从库IP:192.168.8.130 hostname:slave 涉及主从都需要执行的地方,文中只写主库的操作指使,从库请自觉执行相同的命令 目录:1.环境准备与清理2.参数调优3.安装部署 1.系统初始化1.1.1. 主从库环境关闭selinux [[email protected]]# sed -i 's/SELINUX=enforcing/SELI

MySQL5.6生产库自动化安装部署

自动化运维是一个DBA应该掌握的技术,其中,自动化安装数据库是一项基本的技能,本文中的安装脚本已通过测试,作为生产库来说没有问题,鉴于每个公司存储规划要求不同,可以按需自行修改脚本. 脚本中已经注释说明一些基本的安装信息 本脚本默认启用5.6部分新特性 innodb_buffer_pool_dump_at_shutdown=1  它dump的不是数据,是Id号 innodb_buffer_pool_load_at_startup=1 开启这个两个参数当数据库重启后把这些热数据重新加载回去 只有正

Widnwos平台 Mysql5.7 + MyFabric1.5 数据库、群集HA 高可用性,安装部署

 一.基于Windows 安装部署        MySQL Fabric是Oracle推出的用来管理一“群”服务器的系统,可以非常简单地用来部署管理MySQL的数据分片(Shading)和高可用性(High Availability)功能. 二.准备的软件 使用MySQL的Fabric功能需要下载如下软件: MySQL server 5.7 版本,Fabric功能需要GTID 即全局事务ID(global transaction identifier)来实现. MySQL server 5.7

MySQL5.6单机部署安装

MySQL二进制包安装: 安装包获取方式 官网下载url: http://dev.mysql.com/downloads/mysql/ 数据库下载url:http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.22-linuxglibc2.5-x86_64.tar.gz 搜狐下载mirror : http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.22-linux-glibc2.5x86_64.