升级:Logical Upgrade升级MySQL5.6.26
升级需谨慎,事前先备份
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的更多相关文章
- MySQL5.6.26升级到MySQL5.7.9实战方案【转】
MySQL5.6.26升级到MySQL5.7.9实战方案 转自 MySQL5.6.26升级到MySQL5.7.9实战方案 - 其他网络技术 - 红黑联盟http://www.2cto.com/net/ ...
- 采用MySQL_upgrade升级授权表方式升级
1.7.1 采用MySQL_upgrade升级授权表方式升级(1) 这种升级方式比较省事,通过MySQL_upgrade命令即可完成.下面来演示一下整个升级过程. 1)修改my.cnf配置文件,因为M ...
- Ubuntu14.04编译安装mysql5.6.26
Ubuntu14.04编译安装mysql5.6.26 (1)安装编译源码需要的包 sudo apt-get install make cmake gcc g++ bison libncurses5-d ...
- CentOS 6.5 源码安装MySQL5.6.26
1:下载安装cmake (mysql5.5以后是通过cmake来编译的) 2:创建mysql的安装目录及数据库存放目录 #mkdir /usr/mysql //安装my ...
- 利用JDBC连接Eclipse和mySQL5.1.26数据库
初学JDBC,看了看书,自己动手的时候还是有很多地方有问题,最终终于解决了实现了数据库的连接.现将整个步骤描述如下: 环境:mySQL5.1.26(win 32bit), Eclipse JavaEE ...
- Web工程软件升级之数据库升级(一)
1. 首先检查oracle数据库版本是否正确 (可以使用方法 lsinventory来实现) 2. 检查oracle连接是否成功 3. 解压升级包,放到特定目录 4. 做升级前数据备份,备份主要业务数 ...
- Android应用程序的自动更新升级(自身升级、通过tomcat)(转)
Android应用程序的自动更新升级(自身升级.通过tomcat) http://blog.csdn.net/mu0206mu/article/details/7204746 刚入手android一个 ...
- linux 安装 mysql-5.6.26
linux安装mysql-5.6.26 查看工具:winscp 下载地址 http://mirrors.sohu.com/mysql/MySQL-5.6/ 文件: mysql-5.6.26-linux ...
- 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 ...
- 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. ...
随机推荐
- Logtxt
public static void SSOAuthenLog(string msg, bool isRemoteAuthen = true) { #region ...
- 服务器DMZ理解
转别人的 您的公司有一堆电脑,但可以归为两大类:客户机.服务器.所谓客户机就是主动发起连接请求的机器,所谓服务器就是被动响应提供某些服务的机器.服务器又可以分仅供企业内网使用和为外网提供服务两种. ...
- (6) JavaScript - Math对象与日期对象
1 认识对象 概念:对象就是一种类型,一种引用类型,而对象则是引用类型的实例.在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起,通常它也被称作类. 面向过程思想:只考虑过程 ...
- centos 通过yum安装docker-ce报错
通过yum安装docker-ce报错,是因为本机安装过多次造成的,如下所示,需要解决掉冲突依赖,从新安装 1 从 https://mirrors.aliyun.com/docker-ce/linux/ ...
- 获取指定网卡的ip
#!/usr/bin/env python # -*- coding: utf-8 -*- import socket import fcntl import struct def get_ip_ad ...
- Hive:FAILED: LockException [Error 10280]: Error communicating with the metastore
1.问题示例 使用hive直接选择查看表中数据报错,而相同语句在spark-sql却不报错. 实在无力吐槽hive了,因它受伤太多了. (1)使用hive hive (test)> select ...
- 【Golang】Demo
并发控制 package main // demo 参考地址https://studygolang.com/articles/25950 import ( "github.com/siddo ...
- CSS pointer-events 属性
pointer-events 属性用于设置元素是否对鼠标事件做出反应. CSS 语法 pointer-events: auto|none; 属性值 属性值 描述 auto 默认值,设置该属性链接可以正 ...
- MD5 简介 以及 C# 和 js 实现【加密知多少系列】
〇.简介 MD5 是哈希算法(散列算法)的一种应用.Hash 算法虽然被称为算法,但实际上它更像是一种思想.Hash 算法没有一个固定的公式,只要符合散列思想的算法都可以被称为是 Hash 算法. 算 ...
- 认识流媒体协议,从 RTSP 协议解析开始!
RTSP 是 Internet 协议规范,是 TCP/IP 协议体系中的一个应用层协议级网络通信系统.专为娱乐(如音频和视频)和通信系统的使用,以控制流媒体服务器.该协议用于在端点之间建立和控制媒体会 ...