MySQL5.6升级MySQL5.7

news2024/12/26 20:10:10

升级方式介绍

08 数据库服务版本升级方法
5.6 – 5.7 – 8.0

数据库版本升级方法:

Inplace-本地升级

  • 步骤一:在同一台服务器中,需要部署高版本数据库服务实例
  • 步骤二:低版本数据库中的数据进行备份迁移,迁移到高版本服务中 (物理备份方式-停止服务)
  • 步骤三:运行启动高版本数据库服务实例,进行测试
  • 步骤四:停止低版本数据库服务,将业务迁移到新版数据库

Mergeing-迁移

步骤一:在不同服务器中,可以部署高版本数据库服务实例

步骤二:低版本数据库中的数据进行备份迁移,迁移到高版本服务中 (逻辑备份方式/主从同步)

步骤三:运行启动高版本数据库服务实例,进行测试

步骤四:停止低版本数据库服务,将业务迁移到新版数据库

升级时,数据内容不变,数据结构变

  • 查看8.0和5.7的区别
[root@db01~]# ll /data/3306/data/
总用量 191000
-rw-r----- 1 mysql mysql       56 615 12:32 auto.cnf
-rw-r----- 1 mysql mysql     1428 615 14:24 binlog.000001
-rw-r----- 1 mysql mysql      179 615 14:49 binlog.000002
-rw-r----- 1 mysql mysql      462 615 14:51 binlog.000003
-rw-r----- 1 mysql mysql     4937 615 18:09 binlog.000004
-rw-r----- 1 mysql mysql      179 615 19:17 binlog.000005
-rw-r----- 1 mysql mysql     1002 615 20:48 binlog.000006
-rw-r----- 1 mysql mysql      179 615 21:47 binlog.000007
-rw-r----- 1 mysql mysql      179 615 21:48 binlog.000008
-rw-r----- 1 mysql mysql      179 615 21:56 binlog.000009
-rw-r----- 1 mysql mysql      179 615 22:10 binlog.000010
-rw-r----- 1 mysql mysql      179 617 08:47 binlog.000011
-rw-r----- 1 mysql mysql     1610 617 14:38 binlog.000012
-rw-r----- 1 mysql mysql      179 617 15:40 binlog.000013
-rw-r----- 1 mysql mysql      179 617 15:40 binlog.000014
-rw-r----- 1 mysql mysql      179 617 15:44 binlog.000015
-rw-r----- 1 mysql mysql      578 617 16:37 binlog.000016
-rw-r----- 1 mysql mysql      179 617 17:34 binlog.000017
-rw-r----- 1 mysql mysql     6323 617 21:39 binlog.000018
-rw-r----- 1 mysql mysql     1623 617 21:57 binlog.000019
-rw-r----- 1 mysql mysql      304 617 21:39 binlog.index
-rw------- 1 mysql mysql     1676 615 12:32 ca-key.pem
-rw-r--r-- 1 mysql mysql     1112 615 12:32 ca.pem
-rw-r--r-- 1 mysql mysql     1112 615 12:32 client-cert.pem
-rw------- 1 mysql mysql     1680 615 12:32 client-key.pem
-rw-r----- 1 mysql mysql     7442 617 17:34 db01.err
-rw-r----- 1 mysql mysql        6 617 21:39 db01.pid
-rw-r----- 1 mysql mysql   196608 617 21:57 #ib_16384_0.dblwr
-rw-r----- 1 mysql mysql  8585216 615 12:32 #ib_16384_1.dblwr
-rw-r----- 1 mysql mysql     3527 617 21:39 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 617 21:57 ibdata1
-rw-r----- 1 mysql mysql 50331648 617 21:57 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 615 12:32 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 617 21:39 ibtmp1
drwxr-x--- 2 mysql mysql      187 617 21:39 #innodb_temp
drwxr-x--- 2 mysql mysql      143 615 12:32 mysql
-rw-r----- 1 mysql mysql 27262976 617 21:57 mysql.ibd
drwxr-x--- 2 mysql mysql     8192 615 12:32 performance_schema
-rw------- 1 mysql mysql     1680 615 12:32 private_key.pem
-rw-r--r-- 1 mysql mysql      452 615 12:32 public_key.pem
-rw-r--r-- 1 mysql mysql     1112 615 12:32 server-cert.pem
-rw------- 1 mysql mysql     1680 615 12:32 server-key.pem
drwxr-x--- 2 mysql mysql       28 615 12:32 sys
-rw-r----- 1 mysql mysql 16777216 617 21:57 undo_001
-rw-r----- 1 mysql mysql 16777216 617 21:51 undo_002
drwxr-x--- 2 mysql mysql       20 617 21:08 wzy
[root@db01~]# ll /data/3357/data/
总用量 110660
-rw-r----- 1 mysql mysql       56 615 22:44 auto.cnf
-rw------- 1 mysql mysql     1676 615 22:44 ca-key.pem
-rw-r--r-- 1 mysql mysql     1112 615 22:44 ca.pem
-rw-r--r-- 1 mysql mysql     1112 615 22:44 client-cert.pem
-rw------- 1 mysql mysql     1680 615 22:44 client-key.pem
-rw-r----- 1 mysql mysql      351 617 08:49 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 617 08:49 ibdata1
-rw-r----- 1 mysql mysql 50331648 617 08:49 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 615 22:44 ib_logfile1
drwxr-x--- 2 mysql mysql     4096 615 22:44 mysql
drwxr-x--- 2 mysql mysql     8192 615 22:44 performance_schema
-rw------- 1 mysql mysql     1680 615 22:44 private_key.pem
-rw-r--r-- 1 mysql mysql      452 615 22:44 public_key.pem
-rw-r--r-- 1 mysql mysql     1112 615 22:44 server-cert.pem
-rw------- 1 mysql mysql     1680 615 22:44 server-key.pem
drwxr-x--- 2 mysql mysql     8192 615 22:44 sys

升级注意事项

数据库版本升级规则:官方参考链接

  • 数据库服务版本升级时,只支持在GA(General Availability)版本之间进行升级

  • 数据库服务版本升级时,支持从数据库5.6到5.7再到8.0,跨版本升级,但是建议先将5.6升级到最新版本,在进行跨版本升级。避免跨越的版本过多而导致的升级失败

  • 数据库服务版本升级时,需要提前考虑好版本回退的方案,最好升级前做好数据备份(特别是向8.0版本升级)

  • 数据库服务版本升级时,制定的升级方案和升级步骤,需要尽可能降低数据库服务停机的时间

    下图为非GA版本

在这里插入图片描述

升级流程

数据库版本升级流程:

  • 数据库服务数据备份保存(可以采用热备和冷备两种方案,冷备是需要停止业务后备份,热备是无需停止业务备份)
  • 数据库服务最新程序安装(最新版本数据库服务安装过程时,无需停止原有数据库旧版服务)
  • 数据库服务原有程序关闭(网站显示维护页面)
  • 数据库服务最新程序启动(加载原有程序数据实现挂库升级,并采用跳过授权表和跳过网络方式启动)
  • 数据库服务升级数据结构(数据库服务升级程序后,还需要升级数据系统结构信息,因此升级时间和数据量无关)
  • 数据库服务可以正常重启(数据库服务升级完毕后,确认数据库服务是可以正常完成重启操作)
  • 数据库服务功能测试验证(反复核实验证与数据库服务相关的各项功能是否正常)
  • 数据库服务升级工作完毕(取消网站维护页面,恢复正常网站线上运营业务)

5.6本地升级5.7案例

MySQL5.6部署

下载地址:https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz

准备相关目录,略。

注意不要有/etc/my.cnf,否则影响初始化

1.MySQL5.6初始化安装命令如下:

/usr/local/mysql3356/scripts/mysql_install_db \
--user=mysql \
--basedir=/usr/local/mysql3356 \
--datadir=/data/3356/data

2.准备启动文件

cat > /data/3356/my.cnf <<eof
[mysqld]
user=mysql
port=3356
basedir=/usr/local/mysql56
datadir=/data/3356/data
socket=/tmp/mysql3356.sock
eof
cat >/etc/systemd/system/mysqld3356.service <<eof
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Instal1]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql3356/bin/mysqld --defaults-file=/data/3356/my.cnf
LimitNOFILE=65535
eof

3.启动数据库并连接测试。可以发现为无密码登录

[root@db51~]# systemctl daemon-reload
[root@db51~]# systemctl start mysqld3356
[root@db51~]# mysql -S /tmp/mysql3356.sock -uroot
-bash: mysql: command not found
[root@db51~]# /usr/local/mysql/bin/mysql -S /tmp/mysql3356.sock -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.48 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, 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           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql>

MySQL5.7部署

下载软件程序: https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.40-linux-glibc2.12-x86_64.tar.gz

准备相关目录略

1.初始化:

/usr/local/mysql3357/bin/mysqld \
--initialize-insecure \
--user=mysql  \
--basedir=/usr/local/mysql57 \
--datadir=/data/3357/data

2.书写数据库配置

cat > /data/3357/my.cnf <<eof
[mysqld]
user=mysql
port=3357
basedir=/usr/local/mysql3357
datadir=/data/3357/data
socket=/tmp/mysql3357.sock
eof

systemctl管理文件

cat >/usr/lib/systemd/system/mysqld3357.service<<EOF
[Unit]
Description=MySQL Server
Documentation=mysqld.service
After=network.target
After=syslog.target
 
[Install]
WantedBy=multi-user.target
 
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql3357/bin/mysqld --defaults-file=/data/3357/my.cnf
LimitNOFILE = 35535
EOF

使用systemctl启动后,查看端口

[root@db01local]# ss -antl|grep 335
LISTEN     0      80        [::]:3356                  [::]:*                  
LISTEN     0      80        [::]:3357                  [::]:* 

登录

[root@db01local]# /usr/local/mysql57/bin/mysql -S /tmp/mysql3357.sock -P 3357
Server version: 5.7.30 MySQL Community Server (GPL)
mysql> 

创建测试用的表

create database xiaoA;
use xiaoA;
create table t1 (id int,name char(10),age int);
insert into t1 values (1,'wenzy',20),(2,'girl',21),(3,'baby',22);
create database xiaoB;

然后停止MySQL5.6版本的数据库

MySQL5.6升级到5.7

5.6 – 5.7

步骤一:进行数据库服务备份操作

物理备份 逻辑备份-mysqldump 主从同步

步骤二:将原有数据信息导入到新版数据库服务

迁移恢复数据

步骤三:进行前期新版数据库功能测试

web服务器(程序代码)— 5.7数据库服务(业务数据) – 浏览器访问测试

步骤四:停止旧版数据库服务 (网站维护页通知)

systemctl stop mysqld3356.service

步骤五:备份原有数据信息
物理备份:cp -ar /data/3356/data/ /backup/mysql3356/

步骤六:实现数据挂库升级

更改mysql56的配置文件,basedir。

为什么:不把mysql3357的配置文件改为datadir=/data/3356/data

答:应用程序需要连接数据库,这样改变了端口,变动较大。不稳定

1.修改MySQL5.6的程序目录为新版MySQL5.7

[root@db01~]# vim /data/3356/my.cnf 
[mysqld]
server_id=3356
port=3356
user=mysql
basedir=/usr/local/mysql57
datadir=/data/3356/data
socket=/tmp/mysql3356.sock

2.启动新数据库

/usr/local/mysql3357/bin/mysqld_safe \
--defaults-file=/data/3356/my.cnf \
--skip-grant-tables \
--skip-networking &

3.连接新数据库,可以发现成了5.7版本。授权信息但是没有

[root@db51~]# mysql -S /tmp/mysql3356.sock -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.30 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| xiaoA              |
| xiaoB              |
+--------------------+

# 这是 MySQL5.6的授权表信息
mysql> select * from mysql.user \G

*************************** 2. row ***************************
                  Host: db51
                  User: root
              Password: 
           Select_priv: Y
           Insert_priv: Y
           Update_priv: Y
           Delete_priv: Y
           Create_priv: Y
             Drop_priv: Y
           Reload_priv: Y
         Shutdown_priv: Y
          Process_priv: Y
             File_priv: Y

4.修改授权表结构

/usr/local/mysql3357/bin/mysql_upgrade -S /tmp/mysql3356.sock --force	

5.在此查看授权表信息

# 升级后的密码信息
account_locked: N
*************************** 7. row ***************************
                  Host: localhost
                  User: mysql.session
           Select_priv: N
           Insert_priv: N
           Update_priv: N
           Delete_priv: N
           Create_priv: N
             Drop_priv: N
           Reload_priv: N
         Shutdown_priv: N
          Process_priv: N

5.修改数据库启动配置,然后正常启动新版数据库服务

pkill -9 mysql

cat > /etc/systemd/system/mysqld3356.service <<'EOF'
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Instal1]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql3357/bin/mysqld --defaults-file=/data/3356/my.cnf
LimitNOFILE=65535
EOF

systemctl daemon-reload 
systemctl start mysqld3356

6.验证新版数据库MySQL5.7权限信息正确

[root@db51~]# mysql -S /tmp/mysql3356.sock 
Welcome to the MySQL monitor.  Commands end with ; or \g.


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
| xiaoA              |
| xiaoB              |
+--------------------+
7 rows in set (0.00 sec)

mysql> create database wenzy;
Query OK, 1 row affected (0.00 sec)
sql -S /tmp/mysql3356.sock 
Welcome to the MySQL monitor.  Commands end with ; or \g.


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
| xiaoA              |
| xiaoB              |
+--------------------+
7 rows in set (0.00 sec)

mysql> create database wenzy;
Query OK, 1 row affected (0.00 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2253303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么理解BeamSearch?

在大模型推理中&#xff0c;常会用到BeamSearch&#xff0c;本文就BeamSearch原理与应用理解展开讲解。 一、BeamSearch原理 Beam Search 是一种启发式搜索算法&#xff0c;常用于自然语言处理&#xff08;NLP&#xff09;和其他需要生成序列的任务中&#xff0c;比如机器翻译…

shodan2-批量查找CVE-2019-0708漏洞

声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…

SciPy Optimize和 CVXPY对比

CVXPY和SciPy Optimize模块都是在Python中解决优化问题的强大工具&#xff0c;但它们是为不同类型的问题而设计的&#xff0c;具有不同的优点和局限性。本文对比两者的优缺点&#xff0c;阐述各自的应用场景&#xff0c;同时解释常用求解器&#xff0c;并给出实际示例进行说明。…

DevOps工程技术价值流:GitLab源码管理与提交流水线实践

在当今快速迭代的软件开发环境中&#xff0c;DevOps&#xff08;开发运维一体化&#xff09;已经成为提升软件交付效率和质量的关键。而GitLab&#xff0c;作为一个全面的开源DevOps平台&#xff0c;不仅提供了强大的版本控制功能&#xff0c;还集成了持续集成/持续交付(CI/CD)…

Android Studio 右侧工具栏 Gradle 不显示 Task 列表

问题&#xff1a; android studio 4.2.1版本更新以后AS右侧工具栏Gradle Task列表不显示&#xff0c;这里需要手动去设置 解决办法&#xff1a; android studio 2024.2.1 Patch 2版本以前的版本设置&#xff1a;依次打开 File -> Settings -> Experimental 选项&#x…

Linux详解:文件权限

文章目录 前言Linux文件权限基础文件成员与三组权限字符 权限的修改修改文件所有者总结 前言 在浩瀚的操作系统世界中&#xff0c;Linux以其开源、灵活和强大的特性&#xff0c;成为了服务器、开发环境以及众多个人用户的首选。而在Linux的众多特性中&#xff0c;文件权限机制…

SeggisV1.0 遥感影像分割软件【源代码】讲解

在此基础上进行二次开发&#xff0c;开发自己的软件&#xff0c;例如&#xff1a;【1】无人机及个人私有影像识别【2】离线使用【3】变化监测模型集成【4】个人私有分割模型集成等等&#xff0c;不管是您用来个人学习还是公司研发需求&#xff0c;都相当合适&#xff0c;包您满…

Spark常问面试题---项目总结

一、数据清洗&#xff0c;你都清洗什么&#xff1f;或者说 ETL 你是怎么做的&#xff1f; 我在这个项目主要清洗的式日志数据&#xff0c;日志数据传过来的json格式 去除掉无用的字段&#xff0c;过滤掉json格式不正确的脏数据 过滤清洗掉日志中缺少关键字段的数据&#xff…

数据结构4——栈和队列

目录 1.栈 1.1.栈的概念及结构 1.2栈的实现 2.队列 2.1队列的概念及结构 2.2队列的实现 1.栈 1.1.栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一段称为栈顶&#xff0c;另一端称为…

限定符使用

正则表达式的元字符一次一般只能匹配一个位置或一个字符,如果想要匹配零个、一个或多个字符时,则需要使用限定符。限定符用于指定允许特定字符或字符集自身重复出现的次数。常用限定符如下: <asp:TextBox [^>]> 正则表达式字符类[^>]匹配除过“>”之外的任何字…

【Python】Selenium模拟在输入框里,一个字一个字地输入文字

我们平常在使用Selenium模拟键盘输入内容&#xff0c;常用的是用send_keys来在输入框上输入字&#xff1a; 基本的输入方式&#xff1a; input_element driver.find_element(By.ID, searchBox) input_element.send_keys("我也爱你") #给骚骚的自己发个骚话不过这种…

Node.js 实战: 爬取百度新闻并序列化 - 完整教程

很多时候我们需要爬取一些公开的网页内容来做一些数据分析和统计。而多数时候&#xff0c;大家会用到python &#xff0c;因为实现起来很方便。但是其实Node.js 用来爬取网络内容&#xff0c;也是非常强大的。 今天我向大家介绍一下我自己写的一个百度新闻的爬虫&#xff0c;可…

配置宝塔php curl 支持http/2 发送苹果apns消息推送

由于宝塔面板默认的php编译的curl未加入http2的支持&#xff0c;如果服务需要使用apns推送等需要http2.0的访问就会失败&#xff0c;所以重新编译php让其支持http2.0 编译方法&#xff1a; 一、安装nghttp2 git clone https://github.com/tatsuhiro-t/nghttp2.git cd nghttp…

YOLOv11 NCNN安卓部署

YOLOv11 NCNN安卓部署 之前自己在验证更换relu激活函数重新训练部署模型的时候&#xff0c;在使用ncnn代码推理验证效果很好&#xff0c;但是部署到安卓上cpu模式会出现大量的错误检测框&#xff0c;现已更换会官方默认的权重 前言 YOLOv11 NCNN安卓部署 目前的帧率可以稳定…

MeterSphere接口测试提取数组及引用

实际工作中常见的使用场景&#xff1a; 1、提取数组中某个特定值&#xff1b; $.data.groups[n].name提取特定值 2、提取数组中全部值&#xff1b; $.data.groups[*].name&#xff0c;并勾选匹配多条以提取全部值 3、提取数组中的某几个特定值&#xff1b; 如提取数组中第1个和…

【数据结构】队列的概念、结构和实现详解

本文来介绍一下数据结构中的队列&#xff0c;以及如何用C语言去模拟实现。 1.队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表。 特点&#xff1a;数据先进先出FIFO&#xff08;first in first out&#xf…

【Linux】设计文件系统(C实现)

要求&#xff1a; (1)可以实现下列几条命令 dir 列文件目录 create 创建文件 delete 删除文件 read 读文件 write 写文件 (2)列目录时要列出文件名、存取权限&#xff08;八进制&#xff09;、文件长度、时间&#xff08;创建时间&#xff0c;修改时间以及…

基于Java Springboot武汉市公交路线查询APP且微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信…

单片机-- 松瀚sonix学习过程

硬件&#xff1a;松瀚sn8f5701sg、SN-LINK 3 Adapter模拟器、sn-link转接板 软件&#xff1a; keil-c51&#xff08;v9.60&#xff09;&#xff1a;建立工程&#xff0c;编辑&#xff0c;烧录程序 SN-Link_Driver for Keil C51_V3.00.005&#xff1a;安装sonix设备包和snlin…

http(请求方法,状态码,Cookie与)

目录 1.http中常见的Header(KV结构) 2.http请求方法 2.1 请求方法 2.2 telnet 2.3 网页根目录 2.3.1 概念 2.3.2 构建一个首页 2.4 GET与POST方法 2.4.1 提交参数 2.4.2 GET与POST提交参数对比 2.4.3 GET和POST对比 3.状态码 3.1 状态码分类 3.2 3XXX状态码 3.2 …