当前位置: 首页 > 编程笔记 >

实战MySQL升级的最佳方法

蒋高扬
2023-03-14
本文向大家介绍实战MySQL升级的最佳方法,包括了实战MySQL升级的最佳方法的使用技巧和注意事项,需要的朋友参考一下

MySQL5.7新增了不少新功能,比如:Online DDL、多源复制、增强半同步、表空间传输、sys 库、Group Replication等。最近终于等到了一个机会,将MySQL升级到5.7,很是兴奋不已。

MySQL升级的概述

MySQL升级的实质:

对数据字典的升级

数据字典有:mysql、information_schema、performance_schema、sys schema。

MySQL升级的两种方式:

in-place upgrade:

适合小版本的升级。

即 关闭当前的MySQL,替换当前的二进制文件或包,在现有的数据目录上重启MySQL,并运行mysql_upgrade.

特点:不改变数据文件,升级速度快;但,不可以跨操作系统,不可以跨大版本(5.5—>5.7).

logical upgrade:

适合不同操作系统的MySQL升级,大版本之间的升级。

即:使用mysqldump 或 mydumper 导入导出数据,实现版本的升级。

特点:可以跨操作系统,跨大版本;但,升级速度慢,容易出现乱码等问题。

升级前的准备:

提前做好备份。

了解新版本变更的信息(哪些不再兼容,不再支持哪些功能)

在官方网站的general information—>what is new in mysql 5.7

升级的注意事项:

确认新版本是否有重大变更

注意 SQL mode 的变化

比如:在MySQL5.7中发生了SQL mode的变化,对不再支持的SQL mode,部分SQL会跑不通,此时可以清空SQL mode,跑完之后在设置SQL mode。

升级成功后,确认业务SQL是否可以跑通

程序层是否都正常

有时原使用的程序语言部分内容不被支持新版本数据库。比如,有一次在5.1时用的是PHP4.0,但升级到5.6,PHP的某些函数不被支持。

在升级完成之后,一定要在测试时使用和线上版本相同的程序,测试是否存在问题。

存储引擎的变化

比如:在未来的5.8版本,不再支持myisam 引擎。

注意字符集的乱码问题

接下来是,使用in-place upgrade方式,将MySQL5.6升级到MySQL5.7。

In-place upgrade 升级MySQL

环境:

5.6.15 —>5.7.20

升级前的准备:

备份+留意新版本的变更内容
升级操作:

1、对5.7的软件包,下载,解压

# tar -xzvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
# ln -s mysql-5.7.20-linux-glibc2.12-x86_64 mysql5.7

2、关闭当前MySQL(5.6)

# mysql -u root -p -S /data/mysql3308/mysql3308.sock --execute="SET GLOBAL innodb_fast_shutdown=0"
# mysqladmin -u root -p -S /data/mysql3308/mysql3308.sock shutdown

3、替换二进制文件(5.7 替换 5.6)

# cd /usr/local
# mv mysql  mysql5.6
# mv mysql5.7 mysql

4、使用现有的数据目录启动MySQL

# mysqld_safe --user=mysql --socket=/data/mysql3308/mysql3308.sock -p --skip-grant-tables --datadir=/data/mysql3308/data

5、检查所有表是否与当前版本兼容,并更新系统库

# mysql_upgrade -uroot -p -S /data/mysql3308/mysql3308.sock
注:mysql_upgrade的作用是检查所有库的所有表是否与当前的新版本兼容,并更新系统库。

6、重启,确保对系统表所做的变更得以生效

# mysqld --defaults-file=/data/mysql3308/my3308.cnf &
# mysql -uroot -p -S /data/mysql3308/mysql3308.sock

至此,升级完成。

问题:对MySQL做升级,若升级失败了怎么办?

在做升级时,一般创建一个从库进行升级,若升级失败,也不会影响到主库;若升级成功,测试也成功,便会将其他的从库也逐渐升级到新版本,最后将主库下线,提升一个从库做新主库,对旧主库进行版本升级。

 类似资料:
  • 备注:这个指南同样适用于从beta 3.0.0-9升级到3.0.1的用户。 介绍 3.0版本引入了大量的新特性,这些特性为我们带来了大量的重要革新性变化。让我们的network的管理更简单,新的抽象的合约层,允许你从第三方引入各种依赖文件。伴随以太坊的开发工具逐步成熟,我们认为这样的革新非常有价值。下面我们将一步步指引你来享受这些新特性带来的好处。 为了展示2.0到3.0版本的变化,后续会使用下面

  • 我们以华硕P2B主板为例,详细介绍其BIOS的升级步骤,也可供其它AwardBIOS的主板升级时参考: 一、选取所需的软件:BIOS的刻录程序Pflash.exe,可在主板附带的光盘上找到它(也可以到华硕BIOS下载网址http://www.asus.com.tw/Chinese/Products/BIOS/bios-util.html下载)。同时在http://www.asus.com.tw/C

  • 问题内容: 我的iPhone应用程序连接到我的PHP Web服务,以从MySQL数据库检索数据。一个请求可以返回500个结果。 一次实现分页并检索20个项目的最佳方法是什么? 假设我从数据库中收到了前20个广告。现在如何请求接下来的20个广告? 问题答案: 从MySQL文档: LIMIT子句可用于约束SELECT语句返回的行数。LIMIT接受一个或两个数字参数,这两个参数都必须是非负整数常量(使用

  • 问题内容: 我们有一个实时的MySQL数据库,该数据库的插入率为99%,每秒约100个。我们希望每天都存档数据,以便我们可以在不影响主实时数据库的情况下对其进行查询。此外,归档完成后,我们要清除实时数据库。 没有(如果可能)锁定INSERT的最佳方法是什么?我们对查询使用INSERT DELAYED。 问题答案: http://www.maatkit.org/具有mk-archiver 将表中的行

  • 2.10.1. 从5.0版升级 2.10.2. 升级授权表 2.10.3. 将MySQL数据库拷贝到另一台机器 做为一般原则,我们建议从一个发布系列升级到另一个发布系列时,你应当先升级到它的下一个系列而不要跳过。例如,如果你目前正运行MySQL 3.23,想要升级到较新的系列,要升级到MySQL 4.0而不要升级到5.0或5.1。 下面的项列出了升级时的相关信息: ·从MySQL 5.0升级到5.

  • 本文向大家介绍Mysql从5.6.14安全升级至mysql5.6.25的方法,包括了Mysql从5.6.14安全升级至mysql5.6.25的方法的使用技巧和注意事项,需要的朋友参考一下 服务器上Mysql的版本为:社区版的mysql-community-server-5.6.14。近日局方对服务器进行漏洞扫描,发现zhyh08上的mysql存在几个高危漏洞,要求进行修复。受这几个漏洞影响的主要是