升级需谨慎,事前先备份

MySQL升级的实质是对数据字典的升级,数据字典有:sys、mysql、information_schema、performance_schema 。

MySQL升级的两种方式:

1、in-place upgrade(适合小版本的升级)

关闭当前的MySQL,替换原来的安装目录和my.cnf配置文件,mysql_upgrade脚本升级数据字典,在现有的数据目录上重启MySQL,

特点:不改变数据文件,升级速度快;这种方式先停掉数据库,在进行升级操作,所以停机时间长;但,不可以跨操作系统,不可以跨大版本(5.5—>5.7).

2、logical upgrade(适合不同操作系统的MySQL升级,大版本之间的升级)

使用mysqldump 或 mydumper 导入导出数据,实现版本的升级。可以利用gtid或者主从增量恢复数据。

特点:可以跨操作系统,跨大版本,整理表碎片;但,数据量大的情况下升级速度慢,容易出现乱码等问题。升级时间长,但是切换时间短

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.升级方法介绍

本文测试准备了新的mysql服务器来承接迁移的数据库,很多细节没有做测试,比如最后增量数据没有做同步,也没做端口变更,只是做迁移数据和升级了数据库。这种也可以做成单台服务器多个实例做迁移,然后搭建主从恢复增量数据,最后做切换。

ip:192.168.163.21->192.168.163.20

mysql:5.6.29->5.7.29

2.升级步骤

2.1操作之前,查看版本

[root@rhel7 mysql5.7]# /app/mysql5.7/bin/mysql -V
/app/mysql5.7/bin/mysql  Ver 14.14 Distrib 5.7.32, for linux-glibc2.12 (x86_64) using  EditLine wrapper

2.2利用mysqldump导出数据

利用mysqldump工具,从mysql 5.6.26导出数据:
mysqldump -uroot -p --default-character-set=utf8 --all-databases --single-transaction --routines --triggers --events --master-data=2 -S /data/mysql/mysql4406/tmp/mysql4406.sock --set-gtid-purged=off > /tmp/full_20210208.sql

2.3停掉MySQL 5.6的数据库并备份MySQL 5.6软件目录

将旧版本MySQL 5.6的数据库关闭并备份原来的数据目录。
[root@rhel7 /]# cp -rp /data /data56

[root@rhel7 /]# cp /etc/init.d/mysql mysql56

[root@rhel7 /]# cp -rp /usr/local/mysql /usr/local/mysql56

2.4建立新版本的数据目录并授权

这一步选用了一个新的服务器来承接旧的mysql业务,所以在新的服务器上搭建mysql5.7版本

[root@mysql-test ~ 13:41:48]# mkdir -p /data/3309

[root@mysql-test ~ 13:41:57]# mkdir -p /application/

[root@mysql-test ~ 13:42:09]# chown -R mysql.mysql /data/

2.5替换MySQL的安装文件

需要执行unlink mysql命令,取消链接到MySQL 5.6.26版本的链接文件,或者重新直接mv。
解压新版本的MySQL软件包,然后重新做链接并赋予MySQL权限。命令如下:

[root@mysql-test ~ 13:42:09]# tar -zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz

[root@mysql-test ~ 13:42:09]# mv mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz /application/mysql

[root@mysql-test ~ 13:42:00]# chown -R mysql.mysql /application/

2.6替换参数文件并初始化数据库

替换MySQL 5.6的配置文件为MySQL 5.7版本的my.cnf文件,并初始化数据库。 命令如下:
/application/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf --basedir=/application/mysql --datadir=/data/3309/data -initialize

将mysql5.6的参数文件移动到mysql5.7中来

scp /data/mysql/mysql4406/etc/my4406.cnf root@192.168.163.20:/data/3309/my.cnf

[root@mysql-test /data/3309 13:52:26]# chown -R mysql.mysql my.cnf

2.7启动新版本MySQL

[root@mysql-test /application/mysql 13:35:19]# /application/mysql/bin/mysql -uroot -p -S /data/3309/mysql.sock

将mysql启动加入系统服务systemctl status mysqld3309.service

cat >> /etc/systemd/system/mysqld3309.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

[Install]

WantedBy=multi-user.target

[Service]

User=mysql

Group=mysql

ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf

LimitNOFILE = 5000

EOF

服务启动方式

[root@mysql-test /data/3309 14:03:02]# systemctl start mysqld3309.service

[root@mysql-test /data/3309 14:03:07]# systemctl status mysqld3309.service

2.8导入从MySQL 5.6导出的文件到新版本数据库中

将mysql5.6的数据全部备份

[mysql@rhel7 ~]$ mysqldump -uroot -p --default-character-set=utf8 --all-databases --single-transaction --routines --triggers --events --master-data=2 -S /data/mysql/mysql4406/tmp/mysql4406.sock --set-gtid-purged=off > /tmp/full_20210208.sql

命令如下,将mysql5.6的数据移动到mysql5.7的服务器中来

在mysql5.7中将数据恢复
[mysql@mysql-test /usr/local ]$ mysql -uroot -p -S /data/3309/mysql.sock < /tmp/full_20210208.sql

2.9升级系统表数据字典信息

命令如下:
[mysql@mysql-test /usr/local ]$ mysql_upgrade -uroot -p -S /data/3309/mysql.sock
输出结果:

[mysql@mysql-test /usr/local ]$ mysql_upgrade -uroot -p -S /data/3309/mysql.sock

Enter password:

Checking if update is needed.

Checking server version.

Running queries to upgrade MySQL server.

Checking system database.

mysql.columns_priv                                 OK

mysql.db                                           OK

mysql.engine_cost                                  OK

mysql.event                                        OK

mysql.func                                         OK

mysql.general_log                                  OK

mysql.gtid_executed                                OK

mysql.help_category                                OK

mysql.help_keyword                                 OK

mysql.help_relation                                OK

mysql.help_topic                                   OK

mysql.innodb_index_stats                           OK

mysql.innodb_table_stats                           OK

mysql.ndb_binlog_index                             OK

mysql.plugin                                       OK

mysql.proc                                         OK

mysql.procs_priv                                   OK

mysql.proxies_priv                                 OK

mysql.server_cost                                  OK

mysql.servers                                      OK

mysql.slave_master_info                            OK

mysql.slave_relay_log_info                         OK

mysql.slave_worker_info                            OK

mysql.slow_log                                     OK

mysql.tables_priv                                  OK

mysql.time_zone                                    OK

mysql.time_zone_leap_second                        OK

mysql.time_zone_name                               OK

mysql.time_zone_transition                         OK

mysql.time_zone_transition_type                    OK

mysql.user                                         OK

The sys schema is already up to date (version 1.5.2).

Found 0 sys functions, but expected 22. Re-installing the sys schema.

Upgrading the sys schema.

Checking databases.

oldboy.t1                                          OK

sys.sys_config                                     OK

Upgrade process completed successfully.

Checking if update is needed.

没有报错,表示系统表数据字典信息升级成功。

2.10重启MySQL服务

[root@mysql-test /application/mysql 13:36:26]# systemctl restart mysqld3309.service

[root@mysql-test /application/mysql 13:36:35]# systemctl status mysqld3309.service

2.11验证MySQL版本

目前己经是MySQL5.7版本,证明升级成功:
[root@mysql-test /tmp 13:25:28]# /usr/local/mysql/bin/mysql -V
/usr/local/mysql/bin/mysql Ver 14.14 Distrib 5.7.20, for linux-glibc2.12 (x86_64) using EditLine wrapper

升级:Logical Upgrade升级MySQL5.6.26的更多相关文章

  1. MySQL5.6.26升级到MySQL5.7.9实战方案【转】

    MySQL5.6.26升级到MySQL5.7.9实战方案 转自 MySQL5.6.26升级到MySQL5.7.9实战方案 - 其他网络技术 - 红黑联盟http://www.2cto.com/net/ ...

  2. 采用MySQL_upgrade升级授权表方式升级

    1.7.1 采用MySQL_upgrade升级授权表方式升级(1) 这种升级方式比较省事,通过MySQL_upgrade命令即可完成.下面来演示一下整个升级过程. 1)修改my.cnf配置文件,因为M ...

  3. Ubuntu14.04编译安装mysql5.6.26

    Ubuntu14.04编译安装mysql5.6.26 (1)安装编译源码需要的包 sudo apt-get install make cmake gcc g++ bison libncurses5-d ...

  4. CentOS 6.5 源码安装MySQL5.6.26

    1:下载安装cmake (mysql5.5以后是通过cmake来编译的) 2:创建mysql的安装目录及数据库存放目录 #mkdir /usr/mysql                 //安装my ...

  5. 利用JDBC连接Eclipse和mySQL5.1.26数据库

    初学JDBC,看了看书,自己动手的时候还是有很多地方有问题,最终终于解决了实现了数据库的连接.现将整个步骤描述如下: 环境:mySQL5.1.26(win 32bit), Eclipse JavaEE ...

  6. Web工程软件升级之数据库升级(一)

    1. 首先检查oracle数据库版本是否正确 (可以使用方法 lsinventory来实现) 2. 检查oracle连接是否成功 3. 解压升级包,放到特定目录 4. 做升级前数据备份,备份主要业务数 ...

  7. Android应用程序的自动更新升级(自身升级、通过tomcat)(转)

    Android应用程序的自动更新升级(自身升级.通过tomcat) http://blog.csdn.net/mu0206mu/article/details/7204746 刚入手android一个 ...

  8. linux 安装 mysql-5.6.26

    linux安装mysql-5.6.26 查看工具:winscp 下载地址 http://mirrors.sohu.com/mysql/MySQL-5.6/ 文件: mysql-5.6.26-linux ...

  9. CentOS 6.5 MySQL5.6.26源码安装

    一.源码安装cmake工具 从mysql5.5起,mysql源码安装开始使用cmake wget http://cmake.org/files/v3.2/cmake-3.2.3.tar.gztar z ...

  10. django升级2.1python升级3.7时出现的错误:"trying to load '%s': %s" % (entry[1], e) django.template.library.InvalidTemplateLibrary:

    django升级2.1python升级3.7时出现如下的错误: "trying to load '%s': %s" % (entry[1], e) django.template. ...

随机推荐

  1. 在vscode中用tsc编译ts文件的时候报错,tsc : 无法加载文件,因为在此系统上禁止运行脚本;SecurityError

    1. TypeScript安装成功,在C盘的Administrator目录下,运行 tsc -v 也可看到TypeScript的版本.  2. 但在vscode中的时候运行tsc 编译ts文件的时候报 ...

  2. 第一次作业:https://edu.cnblogs.com/campus/qdu/DS2020/homework/11165

    大家好,我是信息与计算科学一班的刘宝龙.爱好是看动漫,玩游戏,听音乐,不喜欢户外运动,是一个二次元宅男.但是喜欢交朋友,希望能与班里所有的同学建立良好的同学关系. 自己的强项是与人的交流与沟通,还有遇 ...

  3. Pintia 7-3 列车调度

    7-3 列车调度 (25 分) 火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条轨 ...

  4. Redis5.0.4-集群(单机版)搭建

    最近尝试搭建了一下redis集群,这里记录一下,最后附上的是参考的博客地址. 安装C语言编译环境GCC yum install -y gcc-c++ 下载redis并编译安装 下载: wget htt ...

  5. MySQL Workbench常用快捷键及修改方法

    常用快捷键: 1. 执行整篇sql脚本:Ctrl + Shift + Enter 2. 执行当前行:Ctrl + Enter 3. 注释/取消注释: Ctrl + / 4. 格式化sql语句(美化sq ...

  6. conceive of NIO

    设想需要传递数据的两端 输入端与接收端 1.字符存储格式不同,需unicode 2.保存格式不通,需格式化 传输数据时 1.需要介质(通道) 2.需要对数据进行输入端接收端都能识别的格式. 3.需要将 ...

  7. windows 7 安装 vmtools 解决心得

    win7 系统安装vmtools 他有几种报错 我见过三种 一种是sp0升级到sp1很恶心 升级到sp1还需要升级到sp2 第二种是 VGA服务缺失 他这个缺失之后需要补丁 第三种就是 安装得序无法自 ...

  8. Integer类自动拆箱,装箱解析

    1.自动拆箱 例1: int i1 = 10; Integer i2 = new Integer(10); System.out.println(i1 == i2); 这个结果是true i1为基本数 ...

  9. Unity录音保存wav

    using System; using System.Collections; using System.Collections.Generic; using System.IO; using Sys ...

  10. [转]C++回调函数

    回调函数 回调函数是一个时时听到的概念,比如在windows API编程时遇到的WinProc函数,就是我们编写而由操作系统调用的函数.现在,我们需要慢慢又详细的记录一下这个问题. 库与使用者的问题 ...