mysql5.7升级mysql8

说明:

1、本次升级是以mysql5.7.27的二进制安包为版本,从而可以避免较长时间的源码编译

2、从MySQL5.7可以直接升级到8.0,然而仅限与General Availability (GA) 版本之间,然后也只是5.7.9及以上版本支持。如果是非GA版本,那么不支持直接升级。

3、跨版本升级是不支持的,如:从5.6升级到8.0。

升级前:

版本为5.7.27

有数据库wg_qc_common;wg_qc_sm_9

数据库中有数据

数据库中有其他用户

升级操作步骤:

step1:下载mysql8.0.16的 二进制安装包,并上传指定目录

下载地址:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz

step2:解压到指定目录并更改安装包的属性

cd /root/

tar -xf mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz -C /usr/local/ && cd /usr/local/

mv mysql-8.0.16-linux-glibc2.12-x86_64 mysql8 && chown -R mysql.mysql mysql8

step3:手动检查是否满足升级条件

1)下面问题必须不能出现

表中一定不能含有废弃的数据类型或函数

一定不能有.frm文件

确保触发器触发器必须没有缺少或空的定义或无效的定义(通过SHOW TRIGGERS或INFORMATION_SCHEMA TRIGGERS表上来你查看触发器中的character_set_client,collation_connection,Database Collation的值)

cd /usr/local/mysql57/bin

./mysqlcheck -u root -p --all-databases --check-upgrade

2)分区表

确保没有使用不支持native分区的存储引擎的分区表,可通过以下命令查询:

SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

WHERE ENGINE NOT IN ('innodb', 'ndbcluster') AND CREATE_OPTIONS LIKE '%partitioned%';

如果有返回结果,那么一定要将该分区表该为innodb存储引擎,或改为非分区表。

改表的存储引擎:

ALTER TABLE table_name ENGINE = INNODB;

将分区表改为非分区表:

ALTER TABLE table_name REMOVE PARTITIONING;

3)表名和数据字典名词

确保不要在MySQL 5.7版本的mysql系统数据库中有和8.0中数据字典相同名称的表。

可通过以下SQL查询:

SELECT TABLE_SCHEMA, TABLE_NAME

FROM INFORMATION_SCHEMA.TABLES

WHERE LOWER(TABLE_SCHEMA) = 'mysql'

and LOWER(TABLE_NAME) IN

(

'catalogs',

'character_sets',

'collations',

'column_type_elements',

'columns',

'events',

'foreign_key_column_usage',

'foreign_keys',

'index_column_usage',

'index_partitions',

'index_stats',

'indexes',

'parameter_type_elements',

'parameters',

'routines',

'schemata',

'st_spatial_reference_systems',

'table_partition_values',

'table_partitions',

'table_stats',

'tables',

'tablespace_files',

'tablespaces',

'triggers',

'version',

'view_routine_usage',

'view_table_usage'

);

如果有这样的表,那么必须重命名。如:

LOCK TABLE old_table1 WRITE; --如果有数据写入,可以暂时锁该表。

Alter TABLE old_table1 RENAME new_table1

注:那么应用也要做相应的修改,否则会造成不必要的麻烦

4)外键约束名称

确保没有表的外键约束名称超过64个字符的,可通过以下SQL查看:

SELECT CONSTRAINT_SCHEMA, TABLE_NAME,CONSTRAINT_NAME

FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS

WHERE LENGTH(CONSTRAINT_NAME) > 64;

如果有,那么要修改。如:

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol;

5)Mysql8不支持的表应迁移到InnoDB中

在更新到8.0.13或更高之前,要确保没有表分区存储在InnoDB表空间中,包括系统表空间和一般表空间。可通过以下SQL查询

SELECT DISTINCT NAME, SPACE, SPACE_TYPE

FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES

WHERE NAME LIKE '%#P#%' AND SPACE_TYPE NOT LIKE 'Single';

如果有,则将表从共享表空间移到自己的表空间中( innodb-file-per-table ),如:

ALTER TABLE table_name REORGANIZE PARTITION partition_name

INTO (partition_definition TABLESPACE=innodb_file_per_table);

step4:备份原来的数据库

1)快速关库

如果当前环境配置了冷关闭(innodb_fast_shutdown = 2),那么需要改为快速或慢关闭,如:

SET GLOBAL innodb_fast_shutdown = 1; --快关闭

SET GLOBAL innodb_fast_shutdown = 0; --慢关闭

通过快速或慢速关闭,InnoDB将其undo日志和数据文件保留在可以在发布版本之间存在文件格式差异的情况下处理的状态。

SET GLOBAL innodb_fast_shutdown=0; 这里选择慢关闭

2)停止数据库并备份

/etc/init.d/mysqld stop #关闭数据库

或者

cd /usr/local/mysql57/bin

./mysqladmin -u root -p shutdown #关闭数据库(涉及主从同步的话,建议先关闭主从同步进程,再停掉主数据库)

ps -ef | grep mysqld | grep -v grep #确认不存在mysql进程

cp -rf -p /u01/mysql/data /u01/mysql/data_5.7 #备份数据文件

cp -p /etc/my.cnf /etc/my.cnf_5.7 #备份配置文件

cp -p /etc/init.d/mysqld /etc/init.d/mysqld_5.7 #备份启停脚本

step5:修改配置文件(/etc/my.cnf)

“basedir = /usr/local/mysql #替换成“basedir = /usr/local/mysql8”

lower_case_table_names = 1 #(mysql5.7有,检查下)

skip-grant-tables #不添加,后期会用到

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER #不添加,后期会用到

query_cache_size = 64M #注释掉

query_cache_limit = 2M #注释掉

query_cache_type = 2 #注释掉

query_cache_min_res_unit = 2k #注释掉

default_table_type = InnoDB #注释掉

step6:升级数据库

1)MySQL 8.0.16 的新的升级方式,在 mysqld 额外添加了一个新的选项 –upgrade,可选值为 NONE,AUTO,MINIMAL,FORCE。

NONE:不尝试进行升级

AUTO:默认选项,MySQL 进行数据字典升级和服务升级

MINIMAL:仅升级数据字典

FORCE:强制升级,类似旧的 mysql_upgrade –force

2)MySQL 8.0.16 新的升级方式,总体来说分为2个步骤

1> 升级数据字典(DD)

2> 服务器升级:升级 MySQL 系统表、升级用户表、升级 sys 表、升级帮助更新表

cd /usr/local/mysql8/bin

./mysqld --upgrade=AUTO

3)关闭数据库

cd /usr/local/mysql8/bin

./mysqladmin -uroot -p -S /tmp/mysql.sock shutdown

4)拷贝启动脚本

cp -p support-files/mysql.server /etc/init.d/mysqld

step7:重启数据库

/etc/init.d/mysqld restart

step8:将mysql命令加入环境变量中(/etc/profile)及验证升级后的版本

export PATH=$PATH:/usr/local/mysql8/bin

source /etc/profile

step9:验证数据完整性

mysql二进制升级_mysql5.7.27升级mysql8.0.16相关推荐

  1. 生产环境mysql安装规划及调优实践--mysql8.0.29为例

    以前运维人员部署在生产环境的mysql又被扫描出安全漏洞,需要进行修补.这种事情本来应该是很简单的事儿,但如今执着于软件领域技术的人是越来越少,竟然没有人愿意去做去学,都想等着别人去处理,最终还是得老 ...

  2. MySQL下载与MySQL安装图解(MySQL5.7与MySQL8.0)

    MySQL下载与MySQL安装图解(MySQL5.7与MySQL8.0) 1.MySQL下载(MySQL8.0社区版) mysql下载方法,请根据风哥以下步骤与图示来下载mysql8.0最新社区版本: ...

  3. mysql8安装错误_Windows安装MySQL8.0.16 的步骤及出现错误问题解决方法

    一.前言: mysql8之后想比起之前常用的版本改动还是挺大的,因为刚从安装接触,就先从基本的说起.现在的mysql8安装只能采用解压配置版,像以前老版本的傻瓜式安装将不复存在.其实mysql8了解如 ...

  4. win10安装misql8_Win10下免安装版MySQL8.0.16的安装和配置教程图解

    1.MySQL8.0.16解压 其中dada文件夹和my.ini配置文件是解压后手动加入的,如下图所示 2.新建配置文件my.ini放在D:\Free\mysql-8.0.16-winx64目录下 [ ...

  5. FineReport连接mysql8.0.16

    今天想用springboot2.1.5集成finereport10.0,结果连接mysql8.0.16时,提示连接失败,上官网一看,发现内置的mysq版本驱动是5.1.39,所以问题是:mysql驱动 ...

  6. win10 64位操作系统安装mysql_win10,64位操作系统安装mysql-8.0.16经验总结(图文详细,保证一次安装成功)...

    机器配置: win10,64位: mysql-8.0.16 1.mysql下载 首先在mysql下载链接下载安装包: 点击 Download 按钮进入下载页面,点击下图中的 No thanks, ju ...

  7. 三分钟下载好mysql-8.0.16

    三分钟下载好mysql-8.0.16 正文 1:下载并解压(文件我已经放到我的资源里了,免费下载) 点击下载 我的解压路径E:\mysql-8 2:解压后的文件复制到想要的路径 我把解压后的文件复制到 ...

  8. Mysql8.0.16 连接包报错解决方法

    Mysql8.0.16 连接包报错解决方法 Mysql8.0 .16连接包报错: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized o ...

  9. Mysql8.0.16 only_full_group_by

    [1]Mysql8.0.16 关于only_full_group_by问题 应公司业务的需求,安装了Mysql8.0.16版本,原来在Mysql5.6版本执行无恙的SQL语句: SELECT prod ...

最新文章

  1. 如何完整迁移git仓库到另一个远程地址
  2. Linux 学习_在Linux下面安装eclipse
  3. AI发现人类肾细胞有一半结构未知,UCSD最新研究登上Nature,算法已开源
  4. Jetson Xavier NX上安装scipy报错:numpy.distutils.system_info.NotFoundError: No lapack/blas resources found
  5. STM32F103ZET6开发板PB3/4,PA13/14/15等I/O口的特殊配置
  6. Expression Bland 入门视频(五) 了解对象面板和属性面板
  7. RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
  8. VC6.0背景颜色更改
  9. IDEA包的分层显示
  10. spring + groovy 转
  11. c# 类属性和方法
  12. pagerank数据集_机器学习十大经典算法-PageRank(附实践代码)
  13. ubuntu下安装 Source insight
  14. 【数据库系统概念】数据库基本概念
  15. 记录与天猫精灵对接的经验 2020年8月5日
  16. 斯坦福大学公开课机器学习课程(Andrew Ng)六朴素贝叶斯算法
  17. P1359 租用游艇
  18. Nvme pcie有线千兆网卡
  19. Ubuntu桌面右键不管用解决办法
  20. 网络安全技术——DHCP技术

热门文章

  1. 你所知道的设计模式有哪些?
  2. Flask 处理高并发、多线程
  3. Docker 安装 KMS 服务器
  4. windows 技术篇 - spy++工具获取、安装和简单使用,选中windows桌面窗口快速查看窗口属性方法
  5. 模型训练中_pickle.PicklingError: Can’t pickle问题解决办法
  6. 打造DIY版Echo:树莓派+ Alexa 语音服务
  7. java函数练习题_Java 函数 编程练习题
  8. 集成开发工具(IDEA)安装与使用
  9. 用圆体来美化你的FC5(转)
  10. Word怎么转换成PDF文件格式?思路提供