本文主要记录57版本升级80版本的过程,供参考。

■ 57版本升级80版本注意事项

  1. 默认字符集由latin1变为utf8mb4
  2. MyISAM系统表全部换成InnoDB表
  3. sql_mode参数默认值变化,8.0版本sql_mode不支持 NO_AUTO_CREATE_USER,要避免配置的sql_mode中带有 NO_AUTO_CREATE_USER
  4. 密码认证插件变更,由于默认密码策略变更,为了避免连接问题,可仍采用5.7的mysql_native_password认证插件
  5. 关于系统表升级,在MySQL 8.0.16版本之前需手动执行mysql_upgrade完成升级,在MySQL 8.0.16版本及之后由mysqld来完成该系统表升级

■ 备份原57版本配置文件,停库

停库前,确保数据都刷到硬盘上,innodb_fast_shutdown 需改成 0

show variables like 'innodb_fast_shutdown';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| innodb_fast_shutdown | 1 |
+----------------------+-------+
set global innodb_fast_shutdown=0;
shutdown;

可见默认的停库模式是fast,需改掉彻底停库,将数据刷到磁盘上。

■ 卸载57版本所有的rpm包,安装80版本相关的rpm包

这一步比较简单,略过。

■ 更改部分配置参数

因5.7版本与8.0版本参数有所不同,为了能顺利升级,需更改部分配置参数,主要注意sql_mode、basedir、密码认证插件及字符集设置,其他参数建议照搬原5.7配置。

以下是本次升级的新配置文件my.cnf重点需要关注的部分:

# From source server
datadir=/u01/mysql/data
socket=/u01/mysql/mysql.sock
log-error=/u01/mysql/log/mysqld.log
pid-file=/u01/mysql/mysqld.pid
character-set-server=utf8
max_connections=1000
lower_case_table_names=1
max_allowed_packet=500M #sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
gtid-mode=on
enforce-gtid-consistency=1
log-bin=mysql-bin
skip_slave_start=1
auto_increment_increment=2
auto_increment_offset=1 default-time_zone='+8:00' # Other conf
skip_ssl
default_authentication_plugin=mysql_native_password

■ 直接启动mysql服务

systemctl start mysql@bootstrap

■ 第一次升级

报错如下:

2021-12-02T04:03:07.042653Z 4 [ERROR] [MY-013235] [Server] Error in parsing Routine 'dciom_nrm'.'NEXTVAL2' during upgrade. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE NAME = n);^M   IF isnull(nextVal)^M   THEN INSERT INTO SEQUENCE_TABLE VALUES' at line 6
2021-12-02T04:03:07.046907Z 4 [ERROR] [MY-013235] [Server] Error in parsing Routine 'scidc_rm'.'NEXTVAL2' during upgrade. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE NAME = n);^M IF isnull(nextVal)^M THEN INSERT INTO SEQUENCE_TABLE VALUES' at line 6
2021-12-02T04:03:07.968182Z 4 [Warning] [MY-010200] [Server] Resolving dependency for the view 'dciom_monitor.kpi_perform_model_object' failed. View is no more valid to use
2021-12-02T04:03:08.333967Z 4 [Warning] [MY-010200] [Server] Resolving dependency for the view 'dciom_monitor_custom.v_last_24hours' failed. View is no more valid to use
2021-12-02T04:03:08.519573Z 4 [Warning] [MY-010200] [Server] Resolving dependency for the view 'dciom_nrm.v_resource_union' failed. View is no more valid to use
2021-12-02T04:03:09.707344Z 0 [ERROR] [MY-010022] [Server] Failed to Populate DD tables.
2021-12-02T04:03:09.709096Z 0 [ERROR] [MY-010119] [Server] Aborting
2021-12-02T04:03:09.709123Z 0 [Note] [MY-000000] [WSREP] Initiating SST cancellation
2021-12-02T04:03:11.709262Z 0 [Note] [MY-000000] [WSREP] Server status change initializing -> disconnecting
2021-12-02T04:03:11.709302Z 2 [Note] [MY-000000] [WSREP] rollbacker thread exiting 2
2021-12-02T04:03:11.709362Z 0 [Note] [MY-000000] [WSREP] wsrep_notify_cmd is not defined, skipping notification.
2021-12-02T04:03:11.709442Z 0 [Note] [MY-000000] [Galera] Closing send monitor...
2021-12-02T04:03:11.709497Z 0 [Note] [MY-000000] [Galera] Closed send monitor.
2021-12-02T04:03:11.709552Z 0 [Note] [MY-000000] [Galera] gcomm: terminating thread
2021-12-02T04:03:11.709609Z 0 [Note] [MY-000000] [Galera] gcomm: joining thread
2021-12-02T04:03:11.709718Z 0 [Note] [MY-000000] [Galera] gcomm: closing backend
2021-12-02T04:03:11.709816Z 0 [Note] [MY-000000] [Galera] PC protocol downgrade 1 -> 0
2021-12-02T04:03:11.709860Z 0 [Note] [MY-000000] [Galera] Current view of cluster as seen by this node
view ((empty))
2021-12-02T04:03:11.709901Z 1 [ERROR] [MY-000000] [Galera] Exception: State wait was interrupted
2021-12-02T04:03:11.709995Z 1 [ERROR] [MY-000000] [Galera] View callback failed. This is unrecoverable, restart required. (FATAL)

可以看出这个错误的原因是函数语法格式出了问题,升级前先删掉这个函数再试一试:

drop function dciom_nrm.NEXTVAL2;

drop function scidc_rm.NEXTVAL2;

同时删掉几个带警告的视图:

drop view dciom_monitor.kpi_perform_model_object;

drop view dciom_monitor_custom.v_last_24hours;

drop view dciom_nrm.v_resource_union;

■ 再次升级

报错如下:

2021-12-07T09:35:55.942763Z 7 [System] [MY-013381] [Server] Server upgrade from '50700' to '80023' started.
2021-12-07T09:35:59.121596Z 7 [ERROR] [MY-000000] [WSREP] Percona-XtraDB-Cluster prohibits use of ADMIN command on a table (dciom_duty.t_duty_class) that resides in non-transactional storage engine with pxc_strict_mode = ENFORCING or MASTER
2021-12-07T09:35:59.128650Z 0 [ERROR] [MY-013380] [Server] Failed to upgrade server.
2021-12-07T09:35:59.128741Z 0 [ERROR] [MY-010119] [Server] Aborting

看来是pxc_strict_mode = ENFORCING设置问题,改为PERMISSIVE

ok!成功升级到80版本!

mysql> select version();
+-------------+
| version() |
+-------------+
| 8.0.23-14.1 |
+-------------+

不过关于这个参数pxc_strict_mode的配置是有隐患的,详见之前的博客:

http://liking.site/2018/12/06/mysql-pxc集群如何导入无主键表/

MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-2的更多相关文章

  1. boost的asio接收单路大数据量udp包的方法

    开发windows客户端接收RTP视频流,当h264视频达到1080P 60fps的时候,按包来调用recvfrom的函数压力比较大,存在丢包的问题,windows的完成端口的性能效果当然可以解决这个 ...

  2. CentOS6安装各种大数据软件 第五章:Kafka集群的配置

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  3. 【大数据之数据仓库】安装部署GreenPlum集群

    本篇将向大家介绍如何快捷的安装部署GreenPlum测试集群,大家可以跟着我一块儿实践一把^_^ 1.主机资源 申请2台网易云主机,操作系统必须是RedHat或者CentOS,配置尽量高一点.如果是s ...

  4. elasticsearch5.0集群大数据量迁移方法及注意事项

    当es集群的数据量较小的情况下elasticdump这个工具比较方便,但是当数据量达到一定级别比如上百G的时候,elasticdump速度就很慢了,此时我们可以使用快照的方法进行备份 elasticd ...

  5. 大数据基础知识:分布式计算、服务器集群[zz]

    大数据中的数据量非常巨大,达到了PB级别.而且这庞大的数据之中,不仅仅包括结构化数据(如数字.符号等数据),还包括非结构化数据(如文本.图像.声音.视频等数据).这使得大数据的存储,管理和处理很难利用 ...

  6. 大数据Hadoop的HA高可用架构集群部署

        1 概述 在Hadoop 2.0.0之前,一个Hadoop集群只有一个NameNode,那么NameNode就会存在单点故障的问题,幸运的是Hadoop 2.0.0之后解决了这个问题,即支持N ...

  7. 大数据平台搭建 - cdh5.11.1 - hbase集群搭建

    一.简介 HBase是一种构建在HDFS之上的分布式.面向列的存储系统.在需要实时读写.随机访问超大规模数据集时,可以使用HBase. 尽管已经有许多数据存储和访问的策略和实现方法,但事实上大多数解决 ...

  8. 大数据平台搭建 - cdh5.11.1 - hadoop集群安装

    一.前言 由于线下测试的需要,需要在公司线下(测试)环境搭建大数据集群. 那么CDH是什么? hadoop是一个开源项目,所以很多公司再这个基础上进行商业化,不收费的hadoop版本主要有三个,分别是 ...

  9. 入门大数据---基于Zookeeper搭建Kafka高可用集群

    一.Zookeeper集群搭建 为保证集群高可用,Zookeeper 集群的节点数最好是奇数,最少有三个节点,所以这里搭建一个三个节点的集群. 1.1 下载 & 解压 下载对应版本 Zooke ...

  10. 流式大数据计算实践(2)----Hadoop集群和Zookeeper

    一.前言 1.上一文搭建好了Hadoop单机模式,这一文继续搭建Hadoop集群 二.搭建Hadoop集群 1.根据上文的流程得到两台单机模式的机器,并保证两台单机模式正常启动,记得第二台机器core ...

随机推荐

  1. chatgpt入口,免费在线chatgpt--与人工智能聊天?尝试chatgpt入口,免费在线chatgpt吧!

    介绍一款人工智能聊天机器人--chatgpt入口 chatgpt是一款智能聊天机器人,它能够与人类进行自然语言对话,可以回答问题.提供建议,还可以玩游戏和聊天互动,是当前最受欢迎的人工智能聊天工具之一 ...

  2. 洛谷 P8179 Tyres

    滴叉题/se/se 题意 直接复制了 有 \(n\) 套轮胎,滴叉需要用这些轮胎跑 \(m\) 圈.使用第 \(i\) 套轮胎跑的第 \(j\) 圈(对每套轮胎单独计数)需要 \(a_i+b_i(j- ...

  3. 前端Vue加载中页面动画弹跳动画loading

    前端Vue加载中页面动画弹跳动画loading, 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id=13091 效果图如下: 使用方法 ...

  4. Java求数组元素的最大值和最小值

    代码如下: public static void main(String[] args) { int [] a = {1,2,3,88,2,90}; int max = a[0]; int min = ...

  5. Sentieon安装时 jemalloc error 解决办法

    背景 Sentieon建议使用jemalloc来改善Sentieon应用程序中的内存管理和整体性能,尤其是Sentieon bwa-mem.有时在安装运行过程中会出现报错: ERROR: ld.so: ...

  6. async/await初学者指南

    JavaScript中的async和await关键字提供了一种现代语法,帮助我们处理异步操作.在本教程中,我们将深入研究如何使用async/await来掌控JavaScript程序中的流程控制. 总览 ...

  7. linux 字符集与编码格式相关

    字符集:​多个字符的集合. # 书写系统字母与符号的集合. 字符编码:​把 字符集 中的字符 编码为(映射)指定集合中的某一对象. # 以便文本在计算机中存储和通过通信网络的传递 查看文件的的编码格式 ...

  8. React报错:You are running `create-react-app` 5.0.0, which is behind the latest release (5.0.1).

    错误 解决方案 说白了就是版本过低,升级下就好.或者按照提示卸载掉原来的版本,之后输入临时创建命令即可,如下图所示 参考链接 https://stackoverflow.com/questions/7 ...

  9. npm 切换源

    切换到淘宝源 npm config set registry https://registry.npm.taobao.org 切换回官方源 npm config set registry http:/ ...

  10. PyQt5实时刷新

    对于执行很耗时的程序来说,由于PyQt需要等待程序执行完毕才能进行下一步,这个过程表现在界面上就是卡顿,而如果需要执行这个耗时程序时不断的刷新界面.那么就可以使用QApplication.proces ...