?荣誉认证:51CTO博客专家博主、TOP红人、明日之星;阿里云开发者社区专家博主、技术博主、星级博主。
?技能证书:阿里云ACP。
?微信公众号:微笑的段嘉许
?本文由微笑的段嘉许原创!
?欢迎关注?点赞?收藏⭐留言?
?51CTO首发时间:?2023年3月19日?
✉️坚持和努力一定能换来诗与远方!
?作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!
不要偷走我小火车哦~ ~ ~
?导航小助手?
文章目录
⭐ 本文介绍⭐
本篇文章主要介绍MySQL的两种升级方式,本地升级和备份升级。
?理论讲解:
什么是MySQL
- 数据库:MySQL是一种关系型数据库管理系统,它可以存储和管理大量结构化数据。数据库是由一个或多个表组成的,每个表包含多个行和列,用户可以通过SQL语言进行增删改查等操作。
- 数据类型:MySQL支持各种数据类型,包括整型、浮点型、日期时间型、字符串型等。不同的数据类型具有不同的存储大小和精度,用户需要根据实际需求选择合适的数据类型。
- 索引:MySQL支持各种类型的索引,包括B树索引、哈希索引、全文索引等。索引可以提高查询效率,但也会增加数据修改的开销,用户需要根据实际情况进行选择。
- 事务:MySQL支持ACID事务,即原子性、一致性、隔离性和持久性。事务可以保证数据的完整性和一致性,用户可以通过事务控制语句进行事务管理。
- 视图:MySQL支持视图,即基于一个或多个表的虚拟表。视图可以简化查询操作,用户可以通过视图进行数据查询和修改等操作。
- 存储引擎:MySQL支持多种存储引擎,包括InnoDB、MyISAM、Memory等。不同的存储引擎具有不同的优缺点,用户需要根据实际需求进行选择。
- 安全性:MySQL支持各种安全措施,包括用户认证、权限管理、SSL加密等。用户需要根据实际情况进行安全配置,以保证数据库的安全性。
MySQL是一种功能强大的关系型数据库管理系统,用户需要掌握其各种理论知识,才能更好地进行数据库管理和应用开发。
MySQL升级涉及到的理论知识点包括
- MySQL的版本号:MySQL的版本号由三个数字组成,分别是主版本号、次版本号和修订版本号。例如,MySQL 5.7.30的主版本号为5,次版本号为7,修订版本号为30。
- MySQL的发行周期:MySQL的发行周期一般为一年左右,每个版本都会有一些新的功能和改进。
- MySQL的兼容性:在升级MySQL时,需要考虑新版本是否与现有应用程序和数据库兼容。如果不兼容,可能需要修改应用程序或数据库结构。
- MySQL的备份和恢复:在升级MySQL之前,需要对现有的数据库进行备份。如果升级失败,可以通过备份文件进行恢复。
- MySQL的升级方法:MySQL的升级方法包括在线升级和离线升级。在线升级可以在不停机的情况下进行,但可能会导致一些性能问题。离线升级需要停机,但可以更好地控制升级过程。
- MySQL的升级步骤:MySQL的升级步骤包括准备工作、升级前的检查、备份数据库、升级MySQL软件、升级数据库结构、测试和验证升级结果等。
什么情况下需要将老版本的MySQL升级到高版本
- 安全漏洞:老版本的MySQL可能存在安全漏洞,升级到高版本可以提高数据库的安全性。
- 性能问题:老版本的MySQL可能存在性能问题,升级到高版本可以提高数据库的性能。
- 新功能需求:新版本的MySQL可能会有一些新的功能和改进,升级到高版本可以满足新的需求。
- 支持新的操作系统:新版本的MySQL可能会支持新的操作系统,升级到高版本可以在新的操作系统上运行。
- 应用程序兼容性:一些应用程序需要特定版本的MySQL,当应用程序需要升级时,可能需要将MySQL升级到与应用程序兼容的版本。
总之,当老版本的MySQL无法满足当前需求时,需要将其升级到高版本。
?实验配置与实现:
推荐步骤:
- 在Centos04上安装MySQL5.6版本的MySQL数据库,启动服务设置密码,登录MySQL数据库创建duanjiaxu数据库,表名为djx,设置两列数据分别使用name和id列,id列为主键,表中插入数据记录。
- 在Centos04上安装MySQL 5.7版本数据库,将 5.6版本升级到 5.7版本
- 在Centos04上安装MySQL 8.0版本数据库,将 5.7版本升级到 8.0版本数据库。
一、在Centos04安装MySQL 5.6版本的MySQL数据库,启动服务设置登录密码,登录MySQL数据库创建duanjiaxu数据库,表名为djx,设置两列数据分别使用name和id列,id列为主键,表中插入数据记录
1.1、在Centos04安装MySQL 5.8版本,启动服务设置登录面。
1)使用winSCP上传MySQL 5.6、5.7、8.0版本程序包
2)安装 5.6版本MySQL
[root@centos04 ~]# groupadd mysql //创建MySQL管理组
[root@centos04 ~]# useradd -M -s /sbin/nologin -g mysql mysql //创建MySQL管理用户
[root@centos04 ~]# tar zxf ./mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz -C /usr/src/ //解压MySQL程序包
[root@centos04 ~]# mv /usr/src/mysql-5.6.46-linux-glibc2.12-x86_64/ /usr/local/mysql //剪切到/usr/local/mysql
[root@centos04 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld //生成服务配置文件
[root@centos04 ~]# chmod +x /etc/init.d/mysqld //添加执行权限
[root@centos04 ~]# chkconfig --add mysqld //启动服务
[root@centos04 ~]# chkconfig --level 35 mysqld on //设置开机自启
1.2、修改服务配置文件
1)修改配置文件
[root@centos04 ~]# vim /etc/my.cnf //进入配置文件
---
1 [mysqld]
2 user=mysql
3 basedir=/usr/local/mysql/
4 datadir=/usr/local/mysql/data
5 socket=/tmp/mysql.sock
6 port=3306
7 [mysql]
8 socket=/tmp/mysql.sock
1.3、修改MySQL数据库所有者,优化命令、初始化数据库启动服务
1)修改MySQL数据库所有者
[root@centos04 ~]# chown mysql:mysql /etc/my.cnf //修改MySQL所有者
[root@centos04 ~]# chown -R mysql:mysql /usr/local/mysql/ //修改目录所有者
[root@centos04 ~]# echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile //优化命令
[root@centos04 ~]# source /etc/profile
2)初始化MySQL数据库,启动服务
[root@centos04 ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ //初始化数据库
[root@centos04 ~]# systemctl start mysqld //启动服务
[root@centos04 ~]# netstat -anptu | grep mysqld //监听网卡
tcp6 0 0 :::3306 :::* LISTEN 41079/mysqld
3)设置MySQL数据库登录密码,登录数据库
[root@centos04 ~]# mysqladmin -uroot password //设置密码
New password: //输入密码
Confirm new password: //确定密码
[root@centos04 ~]# mysql -uroot -ppwd@123 //登录MySQL数据库
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.46 MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
1.4、创建duanjiaxu数据库,表名为djx,设置两列数据分别使用name和id列,id列为主键,表中插入数据记录
1)创建名为duanjiau库
mysql> create database duanjiaxu; //创建数据库
Query OK, 1 row affected (0.00 sec)
mysql> show databases; //查询创建的数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| duanjiaxu |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
2)设计表结构分别使用name和id列,id列为主键
mysql> create table duanjiaxu.djx (name char(6),id char(18),primary key(id)); //设计表结构
Query OK, 0 rows affected (0.00 sec)
mysql> desc duanjiaxu.djx; //查看表结构
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name | char(6) | YES | | NULL | |
| id | char(18) | NO | PRI | | |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
3)插入数据
mysql> insert into duanjiaxu.djx values ('djx','1111111111111111'); //插入数据
Query OK, 1 row affected (0.00 sec)
mysql> select * from duanjiaxu.djx; //查询插入的数据
+------+------------------+
| name | id |
+------+------------------+
| djx | 1111111111111111 |
+------+------------------+
1 row in set (0.00 sec)
二、在Centos04安装MySQL 5.7把呢不能数据库,将 5.6升级到 5.7版本
2.1、停止MySQL 5.6版本服务,备份 5.6数据库数据、修改MySQL主配置文件
1)解压MySQL 5.7版本程序包
[root@centos04 ~]# tar zxf ./mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/src/ //解压程序包
[root@centos04 ~]# mv /usr/src/mysql-5.7.30-linux-glibc2.12-x86_64/ /usr/local/mysql5.7 //剪切到/usr/local/mysql5.7目录
2)停止MySQL 5.6版本服务
[root@centos04 ~]# /usr/local/mysql/bin/mysqladmin -uroot -ppwd@123 -S /tmp/mysql.sock shutdown //停止MySQL服务
Warning: Using a password on the command line interface can be insecure.
[root@centos04 ~]# cp -r /usr/local/mysql/data/ /usr/local/mysql_back //备份数据库数据
[root@centos04 ~]# ls /usr/local/mysql_back/ //查看是否备份成功
auto.cnf duanjiaxu ib_logfile0 mysql test
centos04.err ibdata1 ib_logfile1 performance_schema
3)修改MySQL主配置文件、修改用户所有者
[root@centos04 ~]# vim /etc/my.cnf
1 [mysqld]
2 user=mysql
3 basedir=/usr/local/mysql5.7/
4 datadir=/usr/local/mysql/data
5 socket=/tmp/mysql3307.sock
6 port=3307
7 [mysql]
8 socket=/tmp/mysql3307.sock
2.2、从MySQL 5.6版本升级到MySQL 5.7版本
1)修改用户所有者、配置高版本数据库挂载低版本数据
[root@centos04 ~]# chown -R mysql:mysql /usr/local/mysql5.7/ //修改用户所有者
[root@centos04 ~]# /usr/local/mysql5.7/bin/mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables --skip-networking & //配置高版本数据库挂载低版本数据
2)低版本MySQL升级到高本版MySQL、登录高版本MySQL查看数据
[root@centos04 ~]# /usr/local/mysql5.7/bin/mysql_upgrade -uroot -ppwd@123 -S /tmp/mysql3307.sock --force //低版本升级到高版本
[root@centos04 ~]# /usr/local/mysql5.7/bin/mysql -uroot -ppwd@123 -S /tmp/mysql3307.sock //登录到5.7版本数据库
3)查看数据
mysql> show databases; //查看数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| duanjiaxu |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
6 rows in set (0.00 sec)
mysql> select * from duanjiaxu.djx; //查看表中数据
+------+------------------+
| name | id |
+------+------------------+
| djx | 1111111111111111 |
+------+------------------+
1 row in set (0.00 sec)
三、在Centos01安装MySQL 8.0版本数据库,将 5.7版本升级到 8.0版本数据库
3.1、安装MySQL 8.0版本
1)挂载系统光盘,安装依赖
[root@centos04 ~]# mount /dev/cdrom /mnt/ //挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos04 ~]# ls /mnt/ //查看系统光盘是否挂载成功
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@centos04 ~]# rm -rf /etc/yum.repos.d/CentOS-* //删除系统自带的yum源
[root@centos04 ~]# cat /etc/yum.repos.d/local.repo //查看创建的本地yum源
[local]
name=centos
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@centos04 ~]# yum -y install libyaml //安装依赖
2)使用winSCP工具上传环境检查工具
3)安装环境检查工具
警告:./mysql-shell-8.0.32-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-shell-8.0.32-1.el7 ################################# [100%]
4)停止MySQL 5.7服务
[root@centos04 ~]# /usr/local/mysql5.7/bin/mysql -uroot -ppwd@123 -S /tmp/mysql3307.sock //登录5.7版本MySQL数据库
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.7.30 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> set global innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)
mysql> select @@innodb_fast_shutdown;
+------------------------+
| @@innodb_fast_shutdown |
+------------------------+
| 0 |
+------------------------+
1 row in set (0.00 sec)
mysql> shutdown; //停止服务
Query OK, 0 rows affected (0.00 sec)
3.2、修改MySQL主配置文件、加载 5.7版本数据、重写启动服务
1)修改mysql主配置文件
[root@centos04 ~]# vim /etc/my.cnf //修改配置文件
1 [mysqld]
2 user=mysql
3 basedir=/usr/local/mysql8.0/
4 datadir=/usr/local/mysql/data
5 socket=/tmp/mysql3308.sock
6 port=3308
7 [mysql]
8 socket=/tmp/mysql3308.sock
2)解压MySQL 8.0程序包
[root@centos04 ~]# tar zxf ./mysql-8.0.32-el7-x86_64.tar.gz -C /usr/src/ //解压MySQL程序包
[root@centos04 ~]# mv /usr/src/mysql-8.0.32-el7-x86_64/ /usr/local/mysql8.0 //剪切到/usr/local/mysql8.0目录
[root@centos04 ~]# chown -R mysql:mysql /usr/local/mysql8.0/ //修改目录所有者
3)加载 5.7版本数据,重新启动服务
[root@centos04 ~]# /usr/local/mysql8.0/bin/mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables --skip-networking & //加载老版本数据
[root@centos04 ~]# /usr/local/mysql8.0/support-files/mysql.server restart //重新启动服务
Shutting down MySQL..2023-03-14T16:35:43.080990Z mysqld_safe mysqld from pid file /usr/local/mysql/data/centos04.pid ended
SUCCESS!
Starting MySQL. SUCCESS!
[1]+ 完成 /usr/local/mysql8.0/bin/mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables --skip-networking
[root@centos04 ~]# netstat -anptu | grep mysqld //监听端口
tcp6 0 0 :::3308 :::* LISTEN 45211/mysqld
tcp6 0 0 :::33060 :::* LISTEN 45211/mysqld
4)登录MySQL数据库、查询数据
[root@centos04 ~]# /usr/local/mysql8.0/bin/mysql -uroot -ppwd@123 -S /tmp/mysql3308.sock //登录MySQL数据库
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.32 MySQL Community Server - GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases; //查询数据库
+--------------------+
| Database |
+--------------------+
| duanjiaxu |
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
6 rows in set (0.00 sec)
mysql> select * from duanjiaxu.djx; //查询duanjiaxu库中的djx表数据
+------+------------------+
| name | id |
+------+------------------+
| djx | 1111111111111111 |
+------+------------------+
1 row in set (0.00 sec)
?作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!