✍什么是MySQL数据库升级
当前不少系统的数据库依旧是MySQL5.6,由于MySQL5. 7 及MySQL8. 0 在性能及安全方面有着很大的提升,因此需要升级数据库。本文通过逻辑方式、物理方式原地升级来介绍MySQL5.6 升级至MySQL5. 7 的方法,并介绍其使用场景。
✍逻辑方式升级
逻辑方式升级其实就是通过逻辑备份工具(例如mysqldump工具)将数据库、表、其他相关对象及数据逻辑备份成SQL脚本,再将其还原至MySQL5. 7 的实例中。
推荐步骤:
在Centos01安装Mysql 5.6版本的Mysql数据库,启动服务设置登录密码,登录mysql数据库创建xsh数据库,表名字为自己名字全拼,设置两列数据分别使用name和id列,id列为主键,表中插入数据记录
在Centos01安装Mysql5.7版本数据库,将5.6升级到5.7版本
在Centos01安装Mysql8.0版本数据库,将5.7升级到8.0版本数据库
实验步骤:
创建管理Mysql用户和组
[root@centos ~]# groupadd mysql
[root@centos ~]# useradd -M -s /sbin/nologin -g mysql mysql
上传mysql不同版本
解压mysql安装到指定位置
[root@centos06 ~]# tar zxf ./mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz -C /usr/src/
[root@centos06 ~]# mv /usr/src/mysql-5.6.46-linux-glibc2.12-x86_64/ /usr/local/mys
Ql
生成服务配置文件
[root@centos06 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@centos06 ~]# chmod +x /etc/init.d/mysqld
[root@centos01 ~]# chkconfig --add mysqld
[root@centos01 ~]# chkconfig --level 35 mysqld on
修改Mysql主配值文件
[root@centos06 ~]# vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/
socket=/tmp/mysql.sock
port=3306
[mysql]
socket=/tmp/mysql.sock
修改Mysql数据库所有者
[root@centos06 ~]# chown mysql:mysql /etc/my.cnf
[root@centos06 ~]# chown -R mysql:mysql /usr/local/mysql/
优化命令
[root@centos06 ~]# echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile
[root@centos06 ~]# source /etc/profile
初始化mysql启动服务
[root@centos06 ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
[root@centos06 ~]# systemctl start mysqld
设置密码
[root@centos06 ~]# mysqladmin -uroot password
进入数据库
[root@centos06 ~]# mysql -uroot -ppwd@123
创建数据设计表插入数据
mysql> create database benet;
mysql> create table benet.student(name char(6),id char(18),primary key(id));
mysql> desc benet.student;
mysql> insert into benet.student values ('bob','1111111111111111');
mysql> select * from benet.student;
停止老板数据库 从mysql5.6.升级到mysql5.7
[root@centos06 ~]# /usr/local/mysql/bin/mysqladmin -uroot -ppwd@123 -S /tmp/mysql.sock shutdow
配份老版本数据库数据
[root@centos06 ~]# cp -r /usr/local/mysql/data/ /usr/local/mysql_back
修改Mysql主配值文件
[root@centos06 ~]# vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql5.7/
datadir=/usr/local/mysql/data/
socket=/tmp/mysql3307.sock
port=3307
[mysql]
socket=/tmp/mysql3307.sock
解压5.7
[root@centos06 ~]# tar zxf ./mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/src/
创建mysql5.7修改用户所有者
[root@centos06 ~]# mv /usr/src//mysql-5.7.30-linux-glibc2.12-x86_64/ /usr/local/mysql5.7
[root@centos06 ~]# chown -R mysql:mysql /usr/local/mysql5.7
配置高版本数据库挂载低版本数据
[root@centos06 ~]# /usr/local/mysql5.7/bin/mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables --skip-networking &
启动高版本Mysql
[root@centos06 ~]# /usr/local/mysql5.7/support-files/mysql.server start
低版本Mysql升级到高版本Mysql
[root@centos06 ~]# /usr/local/mysql5.7/bin/mysql_upgrade -uroot -ppwd@123 -S /tmp/mysql3307.sock --force
登录新版本Mysql查看数据
[root@centos06 ~]# /usr/local/mysql5.7/bin/mysql -uroot -ppwd@123 -S /tmp/mysql3307.sock
删除yum源
[root@centos06 ~]# rm -rf /etc/yum.repos.d/CentOS-*
安装依赖程序
[root@centos06 ~]# yum -y install libyaml
上传mysql-shellx8.6_64
安装环境检查工具
[root@centos06 ~]# rpm -ivh ./mysql-shell-8.0.32-1.el7.x86_64.rpm
停止Mysql 5.7服务
[root@centos06 ~]# /usr/local/mysql5.7/bin/mysql -uroot -ppwd@123 -S /tmp/mysql3307.sock
mysql> set global innodb_fast_shutdown=0;
mysql> select @@innodb_fast_shutdown;
mysql> shutdown;
修改Mysql主配值文件
[root@centos06 ~]# vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql8.0/
datadir=/usr/local/mysql/data/
socket=/tmp/mysql3308.sock
port=3308
[mysql]
socket=/tmp/mysql3308.sock
[root@centos06 ~]# netstat -anptu | grep mysqld
[root@centos06 ~]# tar zxf ./mysql-8.0.32-el7-x86_64.tar.gz -C /usr/src/
[root@centos06 ~]# mv /usr/src/mysql-8.0.32-el7-x86_64/ /usr/local/mysql8.0
加载老版本Mysql数据库
[root@centos06 ~]# /usr/local/mysql8.0/bin/mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables --skip-networking &
[root@centos06 ~]# /usr/local/mysql8.0/bin/mysql -uroot -ppwd@123 -S /tmp/mysql3308.sock