[TOC]
mysql 国内镜像
http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/ |
版本选择
- 略
MySQL官方页面
https://dev.mysql.com |
DEVELOPER ZONE: 开发者模块
- Forums
- Bugs
- Worklog:开发记录
- Labs:实验性项目
- Planet MySQL
- News and Events
- Community
DOWNLOADS:下载
MySQL Community Server (GPL): MySQL server 下载
MySQL Cluster (GPL)
MySQL Utilities (GPL):有用的工具包集合
MySQL Workbench (GPL):图形管理界面
- DOCUMENTATION:官方文档
- PDF (US Ltr) - 38.0Mb
- PDF (A4) - 38.0Mb
- PDF (RPM) - 37.3Mb
- HTML Download (TGZ) - 10.3Mb
- HTML Download (Zip) - 10.3Mb
- Man Pages (TGZ) - 216.7Kb
- Man Pages (Zip) - 329.5Kb
- Info (Gzip) - 3.4Mb
- Info (Zip) - 3.4Mb
安装
安装前
CentOs 删除默认安装的mariadbcentos7 |
5.6.x安装
https://dev.mysql.com/doc/refman/5.6/en/binary-installation.html
[root@mysqlenv_test ~]# mv mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz /usr/local/
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /usr/local
tar zxvf /path/to/mysql-VERSION-OS.tar.gz
ln -s full-path-to-mysql-VERSION-OS mysql
cd mysql
chown -R mysql .
chgrp -R mysql .
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data
bin/mysqld_safe --user=mysql &
Next command is optional
cp support-files/mysql.server /etc/init.d/mysql.server
echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh && cat /etc/profile.d/mysql.sh
5.7.x安装
官方安装文档https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html
[root@mysqlenv_test ~]# mv mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz /usr/local/
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /usr/local
tar zxvf /path/to/mysql-VERSION-OS.tar.gz
ln -s full-path-to-mysql-VERSION-OS mysql
cd mysql
mkdir mysql-files
chmod 750 mysql-files
chown -R mysql .
chgrp -R mysql .
bin/mysql_install_db --user=mysql # MySQL 5.7.5
bin/mysqld --initialize --user=mysql # MySQL 5.7.6 and up
bin/mysql_ssl_rsa_setup # MySQL 5.7.6 and up
chown -R root .
chown -R mysql data mysql-files
bin/mysqld_safe --user=mysql &
Next command is optional
cp support-files/mysql.server /etc/init.d/mysql.server
echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh && cat /etc/profile.d/mysql.sh
验证是否安装成功
- 指定的datadir是否为空
- 查看datadir中的$HOSTNAME.err内容,
- 5.7会生成临时的密码到error日志中,登录MySQL后及时修改密码
set password = ("new_password");
启动
bin/mysqld_safe --user=mysql
直接启动,mysqld_safe
守护进程防止mysqld
意外停止,当mysqld
意外停止时mysqld_safe
会重启mysqld
进程- 使用
/etc/init.d/mysql.server start
进行启动(注意脚本的名字)
配置文件
# cat /etc/my.cnf |
- 关注重要的参数
innodb_log_file_size = 2G
生产环境按实际情况修改innodb_undo_logs = 128
和innodb_undo_tablespaces = 3
安装之前先确定好,安装后不好修改[mysqld]
,[mysqld-5.7]
:[mysqld]
配置在所有MySQL版本全部生效,[mysqld-5.7]
只在MySQL5.7.X版本下才生效autocommit
,这个参数在5.5.X以后才有,安装5.6.X
前先把该参数注释掉,等安装完成后,再行打开, 5.7.X无需预先注释datadir
,innodb_log_group_home_dir
,innodb_undo_directory
一定要注意目录权限是mysql:mysql
- my.cnf关注点
mysqld --help -vv | grep my.cnf
查看配置文件的读取顺序,如果有相同的配置,最后读取的文件配置项生效- 使用
--defaults-files
可指定配置文件
升级
- 说明
通常情况下使用MySQLLinux - Generic
通用的二进制包进行安装,my.cnf
中datadir
指定数据目录;数据目录和程序目录分开后,对后续升级操作很方便 - 例子
应用程序目录5.6应用程序所在目录: /usr/local/mysql-5.6.37-linux-glibc2.12-x86_64
5.7应用撤销所在目录: /usr/local/mysql-5.7.19-linux-glibc2.12-x86_64
数据目录/data/mysql_data/
环境
[root@mysqlenv_test /usr/local]#ls -l | grep mysql
lrwxrwxrwx 1 root root 35 Sep 16 15:20 mysql -> mysql-5.6.37-linux-glibc2.12-x86_64 # 当前软链接指向为5.6的版本
drwxr-xr-x 13 mysql mysql 223 Sep 16 14:06 mysql-5.6.37-linux-glibc2.12-x86_64
drwxr-xr-x 10 root mysql 148 Sep 16 13:25 mysql-5.7.19-linux-glibc2.12-x86_64
[root@mysqlenv_test ~]#ls -l /data/mysql_data/
total 13576
-rw-rw---- 1 mysql mysql 56 Sep 16 15:22 auto.cnf
-rw-rw---- 1 mysql mysql 65423 Sep 16 15:21 bin.000001
-rw-rw---- 1 mysql mysql 1199276 Sep 16 15:21 bin.000002
-rw-rw---- 1 mysql mysql 369 Sep 16 15:29 bin.000003
-rw-rw---- 1 mysql mysql 356 Sep 16 15:35 bin.000004
-rw-rw---- 1 mysql mysql 52 Sep 16 15:30 bin.index
drwx------ 2 mysql mysql 20 Sep 16 15:31 db56
-rw-rw---- 1 mysql mysql 19134 Sep 16 15:35 error.log
-rw-rw---- 1 mysql mysql 865 Sep 16 15:35 ib_buffer_pool
-rw-rw---- 1 mysql mysql 12582912 Sep 16 15:35 ibdata1
drwx------ 2 mysql mysql 4096 Sep 16 15:21 mysql
drwx------ 2 mysql mysql 4096 Sep 16 15:21 performance_schema
-rw-rw---- 1 mysql mysql 350 Sep 16 15:30 slow.log
drwx------ 2 mysql mysql 6 Sep 16 15:21 test
Database changed
mysql> SELECT VERSION ();
+------------+
| VERSION () |
+------------+
| 5.6.37-log |
+------------+
1 row in set (0.00 sec)
mysql> CREATE DATABASE db56;
Query OK, 1 row affected (0.02 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db56 |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
升级操作应该在slave先进行测试
# 1. 必须安全停止数据库
[root@mysqlenv_test ~]#/etc/init.d/56mysql.server stop
Shutting down MySQL.. SUCCESS!
# 2. 使用新的版本
[root@mysqlenv_test ~]#cd /usr/local/
[root@mysqlenv_test /usr/local]#unlink mysql
[root@mysqlenv_test /usr/local]#ln -sv mysql-5.7.19-linux-glibc2.12-x86_64 mysql
‘mysql’ -> ‘mysql-5.7.19-linux-glibc2.12-x86_64’
# MySQL的应用程序版本已经升级完成
#都不需要做任何的改变,即可将当前系统的mysql版本升级完成
#注意:此时只是应用程序升级完成,系统表仍然还是5.6的版本
# 3.修改目录权限
[root@mysqlenv_test /usr/local]#cd /usr/local/mysql
[root@mysqlenv_test /usr/local/mysql]# chown root:mysql -R .
# 4.启动
[root@mysqlenv_test /usr/local]#/etc/init.d/mysql.server start
Starting MySQL....... SUCCESS!
# 此时error.log中有很多[ERROR] 日志或者警告日志
# 需要进行upgrade更新系统表元数据才不会产生警告
# 5.升级元数据
[root@mysqlenv_test /usr/local]#mysql_upgrade -p -s
Enter password:
The --upgrade-system-tables option was used, databases won't be touched.
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Upgrading the sys schema.
Upgrade process completed successfully.
Checking if update is needed.
# 参数 -s 一定要加,表示只更新系统表,-s: upgrade-system-tables
# 如果不加-s,则会把所有库的表以5.7.x的方式重建,会非常的耗时
# 因为数据库二进制文件是兼容的,无需升级
# 6. 验证
mysql> SELECT VERSION();
+------------+
| VERSION() |
+------------+
| 5.7.19-log |
+------------+
1 row in set (0.00 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db56 |
| mysql |
| performance_schema |
| sys | # sys是5.7新加的库
| test | # test在5.7以后已弃用,从5.6升级所以保留
+--------------------+
6 rows in set (0.00 sec)
注意能否顺利升级datadir是关键,datadir最好是和程序目录进行分离