MySQL5.6升级MySQL5.7

升级方式介绍

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: db51User: rootPassword: Select_priv: YInsert_priv: YUpdate_priv: YDelete_priv: YCreate_priv: YDrop_priv: YReload_priv: YShutdown_priv: YProcess_priv: YFile_priv: Y

4.修改授权表结构

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

5.在此查看授权表信息

# 升级后的密码信息
account_locked: N
*************************** 7. row ***************************Host: localhostUser: mysql.sessionSelect_priv: NInsert_priv: NUpdate_priv: NDelete_priv: NCreate_priv: NDrop_priv: NReload_priv: NShutdown_priv: NProcess_priv: N

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

pkill -9 mysqlcat > /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
EOFsystemctl 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.rhkb.cn/news/480675.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

添加字符(暴力模拟)

添加字符 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);char[] A in.next().toCharArray();char[] B in.next().toCharArray();int …

关注度上升,交易量直线上涨,Base Season 即将到来?

撰文&#xff1a;Zeneca 编译&#xff1a;Yangz&#xff0c;Techub News 译者按&#xff1a;凭借 AI 发币平台 Clanker 及 Virtuals 的爆火&#xff0c;行业对 Base 生态的关注出现「暴涨」。当地时间 11 月 26 日&#xff0c;Base 上的交易量直线拉升&#xff0c;达到约 1136…

安能物流 All in TiDB 背后的故事与成果

导读 在数字化转型的浪潮中&#xff0c;安能物流通过技术创新不断提升物流效率&#xff0c;迈出了全链路 All in TiDB 的重要一步。本文将深入探讨安能物流如何选择 TiDB 作为核心数据库&#xff0c;以应对高并发、数据处理能力和系统可扩展性等挑战。通过 TiDB 的弹性扩展能力…

《深入理解经典广度优先遍历算法》

广度优先遍历:宽度优先遍历&#xff08;Breadth-First Search, BFS&#xff09;, 图论和树论中基本的查找搜索算法&#xff0c; 是广大图算法的基础.。 前置知识和介绍 数据结构: 队列&#xff0c; 双端队列。 二叉树:经典bfs,按层bfs&#xff08;即树的层序遍历&#xff09;。…

FPGA工具链及功能介绍

一、处理流程 把verilog等源码&#xff0c;变为FPGA中可执行的比特流文件&#xff0c;主要包含这些步骤&#xff1a; 步骤功能转译将verilog代码转化为更详细的语法&#xff0c;增加更多细节内容技术映射将每个vrilog用到的模块&#xff0c;对应到FPGA的物理器件上优化优化冗余…

『python爬虫』使用docling 将pdf或html网页转为MD (保姆级图文)

目录 预览效果安装下载模型测试代码总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 预览效果 支持转化pdf的表格 安装 Docling 本身是专注于文档转换的工具&#xff0c;通常用于将文件&#xff08;如 PDF&…

超详细ensp配置VRRP和MSTP协议

一、简介 1、什么是VRRP&#xff1a; &#xff08;1&#xff09;VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09;的概念&#xff1a; VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09;指的是一种实现路由器冗余备份的协议&#xff0c;常用于…

【案例学习】如何使用Minitab实现包装过程的自动化和改进

Masimo 是一家全球性的医疗技术公司&#xff0c;致力于开发和生产各种行业领先的监控技术&#xff0c;包括创新的测量、传感器和患者监护仪。在 Masimo Hospital Automation 平台的助力下&#xff0c;Masimo 的连接、自动化、远程医疗和远程监控解决方案正在改善医院内外的护理…

【C语言】结构体、联合体、枚举类型的字节大小详解

在C语言中&#xff0c;结构体&#xff08;struct&#xff09;和联合体&#xff08;union&#xff09; 是常用的复合数据类型&#xff0c;它们的内存布局和字节大小直接影响程序的性能和内存使用。下面为大家详细解释它们的字节大小计算方法&#xff0c;包括对齐规则、内存分配方…

中科亿海微SoM模组——波控处理软硬一体解决方案

本文介绍的波控处理软硬一体解决方案主要是面向相控阵天线控制领域&#xff0c;波控处理通过控制不同天线组件的幅相来调整天线波束的方向和增益&#xff0c;实现高精度角度控制和高增益。本方案由波控处理板、波控处理控制软件算法和上位机软件共同构成。波控处理SoM模组原型样…

Java设计模式 —— 【创建型模式】工厂模式(简单工厂、工厂方法模式、抽象工厂)详解

文章目录 前言一、简单工厂&#xff08;静态工厂&#xff09;1、概述2、代码实现3、优缺点 二、工厂方法模式1、概述2、代码实现3、优缺点 三、抽象工厂模式1、概述2、代码实现3、优缺点 四、总结 前言 先看个案例&#xff1a;【手机和手机店】在没有工厂的时候&#xff0c;手…

【阅读记录-章节4】Build a Large Language Model (From Scratch)

文章目录 4. Implementing a GPT model from scratch to generate text4.1 Coding an LLM architecture4.1.1 配置小型 GPT-2 模型4.1.2 DummyGPTModel代码示例4.1.3 准备输入数据并初始化 GPT 模型4.1.4 初始化并运行 GPT 模型 4.2 Normalizing activations with layer normal…

关于VNC连接时自动断联的问题

在服务器端打开VNC Server的选项设置对话框&#xff0c;点左边的“Expert”&#xff08;专家&#xff09;&#xff0c;然后找到“IdleTimeout”&#xff0c;将数值设置为0&#xff0c;点OK关闭对话框。搞定。 注意,服务端有两个vnc服务,这俩都要设置ide timeout为0才行 附件是v…

遗传算法与深度学习实战(25)——使用Keras构建卷积神经网络

遗传算法与深度学习实战&#xff08;25&#xff09;——使用Keras构建卷积神经网络 0. 前言1. 卷积神经网络基本概念1.1 卷积1.2 步幅1.3 填充1.4 激活函数1.5 池化 2. 使用 Keras 构建卷积神经网络3. CNN 层的问题4. 模型泛化小结系列链接 0. 前言 卷积神经网络 (Convolution…

使用 Docker Compose 来编排部署LMTNR项目

使用 Docker Compose 来部署一个包含 Linux、MySQL、Tomcat、Nginx 和 Redis 的完整项目的例子。假设我们要部署一个简单的 Java Web 应用&#xff0c;并且使用 Nginx 作为反向代理服务器。 项目目录结构 首先需要确保 Docker 和docker-compose已经安装并正在运行。docker --v…

快速理解倒排索引在ElasticSearch中的作用

一.基础概念 定义&#xff1a; 倒排索引是一种数据结构&#xff0c;用来加速文本数据的搜索和检索&#xff0c;和传统的索引方式不同&#xff0c;倒排索引会被每个词汇项与包含该词汇项的文档关联起来&#xff0c;从而去实现快速的全文检索。 举例&#xff1a; 在传统的全文…

跨平台应用开发框架(3)-----Qt(样式篇)

目录 1.QSS 1.基本语法 2.QSS设置方式 1.指定控件样式设置 2.全局样式设置 1.样式的层叠特性 2.样式的优先级 3.从文件加载样式表 4.使用Qt Designer编辑样式 3.选择器 1.类型选择器 2.id选择器 3.并集选择器 4.子控件选择器 5.伪类选择器 4.样式属性 1.盒模型 …

Pump Science平台深度剖析:兴起、优势、影响与未来

在过去的几个月里&#xff0c;人们越来越关注去中心化科学&#xff08;DeSci&#xff09;。DeSci 是一种利用区块链技术进行科学研究的新方法。传统的科学研究经常面临所谓的“死亡之谷”&#xff0c;这指的是基础科学研究与成功开发和造福患者的实施之间的重要时期。DeSci 旨在…

网安瞭望台第4期:nuclei最新poc分享

国内外要闻 多款 D-Link 停产路由器漏洞&#xff1a;攻击者可远程执行代码 近日&#xff0c;知名网络硬件制造商 D-Link 发布重要安全公告。由于存在严重的远程代码执行&#xff08;RCE&#xff09;漏洞&#xff0c;其敦促用户淘汰并更换多款已停产的 VPN 路由器型号。 此次…

TDengine在debian安装

参考官网文档&#xff1a; 官网安装文档链接 从列表中下载获得 Deb 安装包&#xff1b; TDengine-server-3.3.4.3-Linux-x64.deb (61 M) 进入到安装包所在目录&#xff0c;执行如下的安装命令&#xff1a; sudo dpkg -i TDengine-server-<version>-Linux-x64.debNOTE 当…