MySQL5.7 通过逻辑备份迁移到GreatSQL注意事项

KylinV10上安装GreatSQL:二进制包部署与性能调优实践 在国产化与信创加速落地的背景下,企业级数据库的自主可控成为基础设施建设的核心议题。Linux服务器上安装数据库通常面临源码编译耗时长、rpm包目录定制不灵活等痛点,而二进制包部署以其解压即用、目录可控、便于迁移复制的优势,成为高效交付的优选方案。本文从数据库二进制包部署的原理出发,阐述其在国产操作系统环境中的技术价值,并聚焦银河麒麟V10(KylinV10)这一典型信创平台,完整演示GreatSQL的安装、初始化、systemd托管、权限配置及关键性能调优步骤。同时结合MGR优化特性与常见故障排查经验,帮助 阅读详情

一、背景概述

在将数据库从MySQL 5.7迁移到GreatSQL8.0.32时,由于数据量较小且关注安全性,决定使用mysqldump执行逻辑备份,并将数据导入GreatSQL。但在备份时采用了备份全库(--all-databases)的方式,在导入GreatSQL后,修改用户密码时出现错误。这是因为mysqldump备份时包括了mysql系统库,而MySQL 5.7中的mysql系统库采用了MyISAM存储引擎,而GreatSQL的mysql系统库采用了InnoDB存储引擎。因此,在导入数据后,部分系统表被覆盖,导致了错误的出现。

二丶问题复现

1.部署2个实例

部署MySQL 5.7与GreatSQL 8.0.32,具体步骤省略

2.MySQL 创建测试数据

通过sysbench创建10张表

$ sysbench lua/oltp_read_write.lua --mysql-db=sysbench --mysql-host=192.168.1.162 --mysql-port=6003 --mysql-user=root --mysql-password=greatsql --tables=10 --table_size=5000 --report-interval=2 --threads=10 --time=600 --mysql-ignore-errors=all prepare

3.MySQL 创建测试用户

mysql> create user test1@'%' identified by 'greatsql';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on *.* to test1@'%';
Query OK, 0 rows affected (0.01 sec)

4.MySQL进行全库备份

$ /mysql57/svr/mysql/bin/mysqldump -uroot -pgreatsql -h192.168.1.162 -P6003  --single-transaction --set-gtid-purged=OFF --all-databases > all.sql

5.GreatSQL导入备份数据

greatsql> source all.sql;

在导入过程中有如下报错,从这里可以看出导入时有系统表被导入,并且部分系统表不支持被修改:

file

6.GreatSQL执行修改用户密码操作

greatsql> alter user test1@'%' identified by 'abc123';

ERROR 1785 (HY000): Statement violates GTID consistency: Updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables.

此时报错违反了 GTID 的一致性,由于导入数据后有部分MySQL库下的系统表被修改成了MyISAM存储引擎,并且修改用户密码会涉及多张系统表的更新,在一个 SQL 语句中既对非事务表进行了更新操作,又对事务表进行了更新操作,这违反了 GTID 的一致性规则。

7.GreatSQL执行查看库表信息的操作

当执行刷新权限的操作后,执行下面的SQL时也会报错

greatsql> flush privileges;
Query OK, 0 rows affected, 11 warnings (0.00 sec)

greatsql> show tables;
ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist

greatsql> show databases;
ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist

mysql.infoschema用户是MySQL8.0中引入的,mysql.infoschema用户是MySQL数据库的系统用户,用来管理和访问系统自带实例information_schema;导入MySQL系统库后,user表被覆盖为MySQL5.7的user表,此用户不存在,因此在刷新权限后访问元数据信息时报错;

8.查看mysqldump备份了哪些系统表

$ grep 'CREATE TABLE ' all.sql
......
CREATE TABLE `innodb_index_stats` (
CREATE TABLE `innodb_table_stats` (
CREATE TABLE `ndb_binlog_index` (
CREATE TABLE `plugin` (
CREATE TABLE `proc` (
CREATE TABLE `procs_priv` (
CREATE TABLE `proxies_priv` (
CREATE TABLE `server_cost` (
CREATE TABLE `servers` (
CREATE TABLE IF NOT EXISTS `slave_master_info` (
CREATE TABLE IF NOT EXISTS `slave_relay_log_info` (
CREATE TABLE `slave_worker_info` (
CREATE TABLE `tables_priv` (
CREATE TABLE `time_zone` (
CREATE TABLE `time_zone_leap_second` (
CREATE TABLE `time_zone_name` (
CREATE TABLE `time_zone_transition` (
CREATE TABLE `time_zone_transition_type` (
CREATE TABLE `user` (
CREATE TABLE IF NOT EXISTS `general_log` (
CREATE TABLE IF NOT EXISTS `slow_log` (
......

三、问题解决

  1. 可以初始化一个新的GreatSQL实例,备份这个新的GreatSQL实例的MySQL系统库
$ /greatsql/svr/mysql/bin/mysqldump -uroot -pgreatdb -h127.0.0.1 -P6001  --single-transaction --set-gtid-purged=OFF -B mysql > mysql.sql
  1. 导入mysql系统库的备份文件到GreatSQL实例中
greatsql> source mysql.sql;

3.导入完成后,刷新权限

greatsql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

4.执行创建用户测试

greatsql> create user test1@'%' identified by 'greatsql';
Query OK, 0 rows affected (0.01 sec)

greatsql> grant all on *.* to test1@'%';
Query OK, 0 rows affected (0.01 sec)

5.执行 show 操作

greatsql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| sys_audit          |
| sysbench           |
| test               |
+--------------------+
7 rows in set (0.01 sec)

greatsql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test           |
+----------------+
1 row in set (0.01 sec)

四、总结

1.在从MySQL5.7向GreatSQL或者MySQL8.0 通过逻辑备份迁移时,不要备份系统库mysql,避免发生问题;

2.用户及权限可以单独进行备份然后导入到GreatSQL或者MySQL8.0中。

Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流群:

微信&QQ群:

QQ群:533341697

微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

如何迁移MySQL数据库? 综上所述,迁移 MySQL 数据库时可能会遇到多种问题,需要认真分析和解决。在迁移过程中,可以采取备份和还原、复制和同步、导出和导入等多种方法,具体的方法可以根据实际情况选择。以上是几种常用的迁移MySQL数据库的方法,具体的方法可以根据实际情况选择。需要注意的是,在迁移过程中,需要考虑数据的一致性和完整性,以及数据库版本的兼容性等问题。 阅读详情

相关推荐

嵌入式C开发必备:用Cursor规则搞定代码风格检查(附Pikachu项目实战)

本文以Pikachu开源项目为例,详细介绍了如何利用Cursor的AI代理规则系统,为嵌入式C开发项目配置一套完整的代码风格检查与规范执行方案。通过实战演示,指导开发者创建项目级规则,实现命名、格式、硬件抽象层及驱动开发的自动化规范,从而提升代码一致性、可维护性和团队协作效率。

weixin_29181861的博客 599

MySQL数据库--几种数据迁移的方法详解都在这了!看完必懂

大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。麻烦帮忙转发一下这篇文章+关注我如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。麻烦帮忙转发一下这篇文章+关注我。

m0_58269070的博客 2万+

IT资产管理(三)之GLPI资产录入

glpi 在 10 版本之后已经有自带的 glpi-agent 代理程序可自动获取服务器、电脑等的信息并进行自动录入和更新,不再依赖 10 版本之前的 fusioninventory 插件或者第三方资产统计平台 OCS Inventory 等

予挚之的博客 2986

MySQL数据库迁移方式详解

MySQL数据库迁移是指将MySQL数据库从一台服务器迁移到另一台服务器,或者从一个环境迁移到另一个环境的过程。这通常是为了升级服务器、增加存储空间、提高性能或改变数据库架构。以下是对MySQL数据库迁移的详细解析,包括准备工作、迁移方法、注意事项和优缺点。MySQL数据库的迁移是一项复杂的工作,涉及多个步骤和环节。为了有效减少迁移过程中可能出现的风险,并保障数据的安全与一致,充分的准备工作、详尽的计划制定以及严谨的实施步骤是必不可少的。通过这些措施,可以大大提高迁移的成功率,确保整个过程顺利进行。

OpsEye的博客 1万+

手把手教你用RSoft BPM仿真一个1x2光分束器:从参数设置到结果分析全记录

本文详细介绍了使用RSoft BPM模块设计和仿真1×2光分束器的完整流程,包括参数设置、结构建模、仿真配置和结果分析。通过实战指南,帮助读者掌握光波导器件的仿真技术,实现50:50功率分配的设计目标,适用于光通信和集成光学领域的研究与应用。

weixin_30545945的博客 545

如何免费访问和使用Gemini API?

Gemini Ultra具有最先进的性能,在几个指标上超过了GPT-4的性能。它是第一个在大规模多任务语言理解基准测试中超越人类专家的模型,该基准测试57个不同学科的世界知识和解决问题的能力。Gemini是谷歌迄今为止开发的最先进、最庞大的AI模型。它为多模态而建,理解并处理不同类型的数据,比如文本、代码、音频、图像和视频。下面我们将加载Masood Aslami的图像,并用它来测试Gemini Pro Vision的多模态性。有了Gemini可以为查询提供图像、音频和文本,获得几乎完美的答案。

java_cjkl的博客 1万+

MySQL数据迁移

如:将C:\projectDeploy\mysql\mysql5.6\mysql5.6\MySQL Server 5.6\data中的数据复制到 D:\mysql\data。1.需要设置目标路径的权限,如果不设置,MySql服务无法启动,服务是以NETWORK_SERVICE用户运行的,不设置文件夹权限会导致服务无法访问该文件夹。3、设置目标路径的权限(D:\MySql\Data),添加NETWORK_SERVICE用户为完全控制,不懂就把所有权限都沟上。5、启动mysql服务。...

qq_44702056的博客 5507

雷达信号处理——恒虚警检测(CFAR)

上图展示的是同时在距离维和多普勒维进行恒虚警检测的原理,如果只是在距离维或多普勒维做CFAR,检测单元的左右两侧均有设定好数量的保护单元和参考单元。不同的CFAR检测器适用于不同的场景,CA-CFAR算法适用于均匀环境中的单目标或彼此相距较远的多目标环境,在邻近多目标环境会发生目标的遮蔽效应,在杂波边缘会发生杂波边缘效应。从图中也可以看到,根据阈值的选择不同,有不同的检测器,其中CA-CFAR是取的参考单元的均值,SO-CFAR取的是参考单元的最小值,而GO-CFAR是取的参考单元的最大值。

诚朴勇毅 3万+

技术分享 | MySQL 的几种数据迁移方案

导出导入优点推荐度(效率)mysqldump原生,可远程⭐⭐⭐数据量<10Gmydumpermyloader多线程⭐⭐⭐数据量>50GLOAD DATA最灵活⭐⭐数据量<20G原生,多线程⭐⭐⭐数据量<50G原生,单线程⭐数据量<20GMySQL<导入时,需要避免数据丢失。前 3 种都支持WHERE过滤,mydumper 是最快的。最常用(因为支持自定义导出部分列)。前 2 种因为是备份工具,所以有 FTWRL 锁。

LinkSLA的博客 4240

紫光同创PGL50H开发板实战:盘古50KH视频板的多媒体处理与高速通信方案

本文详细介绍了基于紫光同创PGL50H FPGA芯片的盘古50KH视频开发板在多媒体处理与高速通信方面的实战应用。文章从开发板硬件架构解析入手,逐步指导开发环境搭建、DDR3内存控制器配置、HDMI视频输入输出实战,并重点探讨了利用板载HSST高速收发器实现光纤通信与万兆以太网的方案。最后,通过构建一个集多路视频采集、处理与光纤传输于一体的系统案例,展示了该开发板在高性能实时数据处理领域的强大潜力。

b9c0d的博客 485

分区补光与ISP图像调节技术

在安防监控场景中,逆光、强光、明暗不均(如门口 / 窗边的 “阴阳脸” 画面)是导致图像细节丢失的核心问题。分区补光技术通过对画面不同亮度区域精准补光,解决 “局部过曝 / 欠曝” 难题;ISP(图像信号处理器)图像调节技术则通过算法优化,提升画面色彩、对比度与细节。二者协同可实现 “硬件补光 + 算法优化” 的双重增强,是低功耗摄像机实现高清画质的关键技术组合。分区补光与 ISP 图像调节技术:原理、协同方案及安防监控应用案例。一、核心技术原理解析。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 730

GreatSQL社区2024年全年总结(免费领红包封面)

* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。社区2024年总结GreatSQL 社区在2024年度上持续迈进,成果斐然。一方面,开放了 GreatSQL 单机版以及三节点 MGR 集群的在线测试体验环境,让用户能够在线体验各种 GreatSQL 创新特性。另一方面,社区手册也持续更新,方便用户查阅。同时,社区积极拓展教育合作领域,成功走进郑州大学,联合开设 “G...

老叶茶馆 195

YOLOv8 骨骼结构识别详细说明

YOLOv8骨骼结构识别是一种基于深度学习技术的医学影像分析方法,主要用于X光、CT等影像中的骨骼定位与识别。该系统具有多骨骼同步识别能力,可应用于手部、脊柱、骨盆等不同部位,并能精确定位骨骼关键点。技术实现包括数据预处理、模型训练、推理检测、关键点分析和批量处理五个核心模块,支持骨折检测、骨龄评估等临床应用。该系统需注意医学合规性,要求高质量标注数据,并针对骨骼影像特点进行特征工程优化,同时考虑不同设备的部署需求。

u010117029的博客 330

快90倍的秘密:xtquant_big_convert直连QMT FormulaServer 58600端口的0.145ms行情快速路径

xtquant_big_convert 是运行在大 QMT 环境里的 RPC 桥接包,它能兼容 MiniQMT(xtquant)的接口实现替换。而其中真正的性能亮点是 **FormulaServer 行情直连快速路径**:客户端绕过 QMT 的 Python 策略进程,直接连接 QMT 内置 C++ 行情服务的 **58600 端口**,实测穿过完整客户端栈只需 **0.145ms/次**,比走

gitblog_00711的博客 353

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

mysql数据迁移

mysql数据迁移。

MAX_VALUE的博客 2201

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Mysql数据库迁移问题解决方案

Navicat运行SQL文件报 Finished with error:Navicat 错误 数据库迁移

Boy_Martin的博客 3035

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

怎样快速地迁移 MySQL 中的数据?

今天,我们介绍了三种数据库迁移的方式,分别是:逻辑迁移、文件迁移和物理迁移。逻辑迁移的方式主要是使用 mysqldump 命令进行迁移,其原理主要是将数据库中的数据和结构生成 SQL 文件,再导入即可。这种迁移方式主要适用于数据量比较小且服务器性能较好的场景下,例如数据连少于 500 万条以下的场景。文件迁移的方式其实也算是逻辑迁移的范畴,它主要通过命令将数据保存在文件中,然后再导入数据库即可,这种迁移方式是不会迁移表结构的,所以在导入数据之前需要手动创建表结构,其原理跟逻辑迁移的方式相同。

欢迎来到我的博客 1616

数据迁移的几种方式 - MySQL数据库

本文关键字:MySQL、数据库、数据迁移、导入、导出。开始和数据库玩耍以后,我们将一直与SQL和数据打交道。在日常的操作中,我们只需要对指定的数据库进行操作,执行增删改查,权限管理等。但有些时候由于项目的升级,或者服务器的更换,我们要将数据从一个地方转移到另一个地方,准确的说是从一个数据库服务转移到另一个数据库服务中,因为我们还要继续使用这些数据。

微光点亮星辰 2万+

MySQL数据库迁移:如何轻松迁移数据库

1.背景介绍 MySQL数据库迁移是一项重要的数据管理任务,它涉及到将数据从一个数据库系统迁移到另一个数据库系统。在实际应用中,数据库迁移可能是由于多种原因导致的,例如数据库升级、系统迁移、数据库优化等。在这篇文章中,我们将深入探讨MySQL数据库迁移的核心概念、算法原理、最佳实践以及实际应用场景。 1.背景介绍 MySQL数据库迁移是一项复杂的技术任务,涉及到数据库架构、数据结构、数据迁移...

AI天才研究院 4990

MySQL迁移数据(切换数据保存的文件夹)

备注:此流程是针对windows下相同版本(5.7.20)的(不同版本之间的迁移可参考,不一定成功,本人没有测试) 1、首先做好数据备份,将原来的data文件夹(我的目录D:\company\mysql-5.7.20-winx64\data)复制备份 2、停止原先的服务 进入到MySQL的bin文件夹(我的目录D:\company\mysql-5.7.20-winx64\bin) ...

u012562117的博客 3200

Mysql如何迁移数据库数据

此外,JNPF支持全源码交付,完全支持根据公司、项目需求、业务需求进行二次改造开发或内网部署,具备多角色门户、登录认证、组织管理、角色授权、表单设计、流程设计、页面配置、报表设计、门户配置、代码生成工具等开箱即用的在线服务。注意⚠️:这种方式只适用相同版本的数据库之间的迁移,跨版本复制,mysql重启可能会报错,并且在复制数据目录时,mysql一定要停止,否则新mysql会重启报错。,通过简单的拖拉拽操作,开发者能够高效完成软件开发,提高开发效率,减少代码编写工作。方式二:使用 source。

pantouyuchiyu的博客 965

MySQL数据库迁移(基于mysqldump)总结

MySQL数据库迁移(基于mysqldump)命令总结

HYbk123的博客 2340

mysql数据库迁移的方式

数据库迁移的三种方法

sinat_30181949的博客 1661

【进阶】迁移mysql数据库(小白详细教程)

本文是一个针对小白的详细教程,介绍了如何从原MySQL数据库导出数据,创建新数据库,并将原数据导入新数据库的迁移过程。 从原数据库导出数据 创建新数据库 将导出的SQL文件导入新数据库 提供了迁移MySQL数据库的详细步骤 面向小白的进阶教程

weixin_45927422的博客 1870

如何简单实现mysql数据库迁移

业务场景:需要将服务器A上的mysql数据库迁移到另外一台服务器B。 1. 用ssh终端连接服务器A 2. mysqldump指令将数据库表/数据保存成xx.sql文件存到本地 #导出数据到/root/目录下 # 导出所有数据库的表结构和数据 mysqldump -uroot -p123456 --all-databases > /root/alldata.sql # 导出指定数据......

weixin_41645232的博客 1万+

MySQL数据库迁移SQL语句指南

迁移注意事项 版本兼容性:检查MySQL版本差异,特别是5.7到8.0的迁移 字符集设置:确保源和目标数据库使用相同的字符集 外键约束:迁移时暂时禁用外键检查 SET FOREIGN_KEY_CHECKS=0; 大表迁移:考虑使用pt-archiver等工具分批迁移 停机时间:评估业务影响,尽量在低峰期执行迁移 以上SQL语句和脚本可根据实际迁移需求进行调整,建议在测试环境验证后再进行生产环境迁移。

weixin_46261399的博客 1042
上一篇: Percona Toolkit 神器全攻略(实用类)
下一篇: Percona Toolkit 神器全攻略(配置类)
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值