首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

技术分享 | 改写 mysqldump 解决 DEFINER 问题

只能看下是否可以从 mysqldump 源码中去掉 DEFINER 定义。 本次 mysqldump 改写主要有 2 个目的: 1....摘取备份中视图、函数、存储过程、触发器等对象的 DEFINER 定义; 2....五、备份顺序 如下是 mysqldump 备份对象时的顺序,值得注意的是 mysqldump 在备份表的时候会连带视图也一起备份,但是只是临时视图(常量别名替换实际列),主要是为了防止后续其他视图、函数与存储过程中用到该视图...,所以通过临时视图来解决依赖问题,在最后才真正备份视图,这招非常精妙!...八、性能测试 通过 sysbench 造测试数据后,分别使用改写后的 mysqldump 与原生的 mysqldump 进行多次远程备份,查看平均耗时。

1.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    揭秘MySQL 8.4新版备份利器:全面解读Mysqldump参数与实战技巧

    工作原理 MysqlDump 的工作原理如下: 连接数据库:mysqldump 通过指定的用户凭证连接到 MySQL 服务器。...无增量备份:mysqldump 不支持增量备份,每次备份都需要导出整个数据库。 使用场景 小型数据库备份:对于小型数据库,mysqldump 是一个简单且高效的备份工具。...-A, --all-databases 所有数据库。这与--databases选项相同,只是选择了所有数据库。 -Y, --all-tablespaces 所有表空间。...--ignore-views 跳过转储表视图。 总结 MysqlDump是MySQL 数据库管理系统中一个非常有用的工具,适用于各种备份和迁移场景。...通过合理配置选项和参数,MysqlDump可以满足大多数 MySQL 数据库的备份和恢复需求。

    8210

    MySQL终章

    视图 什么是视图 是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据 视图的特点 1....视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系。 2. 视图是由基本表(实表)产生的表(虚表)。   3. 视图的建立和删除不影响基本表。   4....对视图内容的更新(添加、删除和修改)直接影响基本表。   5. 当视图来自多个基本表时,不允许添加和删除数据。...视图的创建 create view 视图名称 as sql 查询语句 视图的使用 select 字段名+条件 from 视图名称; 视图的更新 alter view 视图名称 AS SQL语句 视图的删除...1.使用mysqldump实现逻辑备份 #语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql #示例: #单库备份 mysqldump -uroot

    1.3K50

    MYSQL之视图、触发器、存储过程、函数、事物、数据库锁和数据库备份

    一、视图 -- view 视图:是一个虚报表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。...视图有如下特点:   1.视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系;   2.视图是由基本表(实表)产生的表(虚表);   3.视图的建立和删除不影响基本表;   4.对视图内容的更新...(添加、删除和修改)直接影响基本表;   5.当视图来自多个基本表时,不允许添加和删除数据。   ...1.创建视图 create view 视图名称 as sql 查询语句   2.使用视图 select * from 视图名称;   3.更新视图 alter view 视图名称 AS SQL语句...  4.删除视图 drop view ren_view; 二、触发器 -- trigger 触发器:监视某种情况,并触发某种操作。

    2.9K91

    MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁

    浏览目录: 1.视图 2.触发器 3.存储过程 4.函数 5.事物 6.数据库锁 7.数据库备份 1.视图 视图:是一个虚拟表,其内容由查询定义。...同真实的表一样,视图包含一系列带有名称的列和行数据 视图有如下特点;   1. 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系。   2....视图是由基本表(实表)产生的表(虚表)。   3. 视图的建立和删除不影响基本表。   4. 对视图内容的更新(添加、删除和修改)直接影响基本表。   5....当视图来自多个基本表时,不允许添加,修改和删除数据。  ...1.创建视图 create view 视图名称 as sql 查询语句  2.使用视图 select * from 视图名称;  3.更新视图 alter view 视图名称

    1.6K70

    从库mysqldump过程中主库做DDL会怎样?

    开始分析之前,我们先了解下mysqldump这个工具,我们知道,mysqldump是官方自带的逻辑备份工具,可以将数据表中的记录备份成一个可执行的sql文件。...我们在使用的过程中,都会带上--single-transaction这个参数,这个参数有这么几个功能: 1、在导出数据之前,开启一个事务,拿到一致性视图。...下面我们回答题目中的问题,如果我们在从库进行mysqldump备份操作,实际上从库上会进行这么几个步骤,这里我们画一个mysqldump的备份步骤: 步骤1 SET SESSION TRANSACTION...; /* 时刻 3 */ 步骤6:ROLLBACK TO SAVEPOINT sp; /* 时刻 4 */ /* other tables */ 步骤1:设置RR隔离级别 步骤2:开启事务,拿到一致性视图...已经释放了table_1的元数据锁,那么不会对从库产生影响,mysqldump拿到的是DDL变更前的表结构。

    1.2K20

    MySQL数据库升级的一些坑

    今天处理的一套环境基于存储和时长等因素使用的是第一种方法,整个流程如下: 1) mysqldump备份数据库,备份文件大约为120G 2) 停止MySQL 5.5数据库 3) 修改数据库端口重新启动数据库...1) mysqldump备份数据库,备份文件大约为120G,为了快速在线备份采用mysqldump,但是异常情况下的恢复效率是硬伤,所以此处不建议使用mysqldump备份,而是建议使用物理备份,甚至如果条件允许...问题到了这个阶段的时候,其实已经比较难收场了,因为数据字典文件损坏,导致升级数据字典的操作完全不可能,现在数据库连里面的表都desc不出来了 7) 检查复核,本来轻轻松松收工的验证工作现在变成了紧急修复工作...后续的第一波补救措施如下: 8)使用已有的凌晨固定的物理备份恢复数据,大约为1个小时,mysqldump恢复果断放弃,印象中至少得6个小时以上。...后续的第二波补救措施如下: 13)使用mysqldump备份当前数据库,仅仅备份指定的数据库,不使用all-databases选项,权限单独导出。

    1.7K30

    ERROR 1356 (HY000): View xxx references invalid definerinvoker

    背景 业务授权自己的某个视图的查询权限给另一个账号时, 另一个账号查询报错ERROR 1356 但业务自己的视图是能够正常查询的(虽然没得后面的select的那些表的权限.....)...如果指定 SQL SECURITY 为 INVOKER 则查询该视图的账号需要该视图后面的查询语句能够正常执行. 其实就是: 查询视图的时候, 谁执行后面的SELECT....建视图的时候尽量使用默认的Definer(啥也不加). 2. 仔细看报错. 基本上除了BUG, 报错都是提示得最明显的....参考: https://dev.mysql.com/doc/refman/8.0/en/stored-objects-security.html 补充 今天有同事使用mysqldump导出数据的时候也遇到这个报错了...登录数据库查看该视图, 发现是其基表不存在了.... 解决办法: 1. 删除该视图 2. 找回原基表, 基本上不可能 3. mysqldump导出的时候加上 --force 强制导出, 忽略报错

    49030

    mysqldump命令详解 Part 3- 备份全库

    的命令 mysqldump导出是MySQL逻辑备份的一种广泛采用的方式 今天的内容为备份全库 1....或者如下命令 mysqldump -h127.0.0.1 -usystem -p123456 -A >/tmp/all.sql ?...第一行是mysqldump的版本 这里为10.13的版本 第二三行显示主机名为127.0.0.1 数据库版本为5.7.25 接下来为一些系统变量的设置 注意这里/* !...最后是备份的完成日期 3.总结 所以全库备份出来的语句主要包含如下内容 建立数据库(如果不存在) 使用数据库 删除表(如果存在) 建表 锁表 禁用非唯一索引 插入数据 启用非唯一索引(重建索引) 释放锁 视图导出...另外:可能注意到了上面的语句中只有数据库和表的信息 没有存储过程 函数 触发器等的信息 所以默认这些是不导出的 经测试视图也会一并导出 今天的内容就到这里,欢迎查看

    2.7K10

    MySQL数据迁移那些事儿

    逻辑迁移中使用最多的就是通过 mysqldump 等备份工具导出再导入了。...mysqldump 同样适用于不同版本不同配置之间的迁移,不过全量迁移时,笔者不建议使用 -A 参数备份全部数据库,特别是对于不同版本之间迁移,可能某些系统库稍有不同,迁移后容易出现未知问题。...mysql -uroot -pxxxx < db.sql 对于迁移部分库和部分表,也可以采用上方类似方案,只是备份时要按需备份,下面列举出几种常见的 mysqldump 备份场景: # 备份单个库 mysqldump...mysqldump -uroot -pxxxxx testdb --no-create-info > testdb_data.sql 总得来说,使用 mysqldump 方案更加灵活,为了快速迁移,我们应该尽量减少备份内容...建议在新库创建好用户并授予好权限后再迁移,这样可以避免出现视图及函数导入错误,因为视图及函数有个定义者的概念。

    1.3K30

    MySql笔记

    order by 进行排序 order by 默认是升序排列 SELECT id, name, score FROM students ORDER BY score;//成绩从低到高排列 那么如何进行序排列...desc表示序 SELECT id, name, gender, score FROM students ORDER BY score DESC;//成绩从高到低排列 使用分组查询和统计后可使用HAVING...password表示该用户的登陆密码 删除用户 drop user 'username'@'host'; 字段类型 字符串型 整数型 浮点型 视图 视图的优势在于 安全和高效 创建视图 CREATE...where address="保定"; 查询视图 创建完成以后我们查询视图 select * from ; 删除视图 drop ; 事务 事务用于保证数据的一致性 他有一组相关的...GetAllProducts(); //GetAllProducts()是存储名 删除 DROP PROCEDURE GetAllProducts(); //GetAllProducts()是存储名 数据库备份 mysqldump

    62720

    【黄啊码】MySQL的这些小知识点,初入门的你必须得学会

    9、视图有哪些特点? 视图的特点如下: 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。 视图是由基本表(实表)产生的表(虚表)。视图的建立和删除不影响基本表。...对视图内容的更新(添加,删除和修改)直接影响基本表。 当视图来自多个基本表时,不允许添加和删除数据。 视图的操作包括创建视图,查看视图,删除视图和修改视图。 10、SQL的生命周期?...16、MySQL备份计划如何制定 视库的大小来定,一般来说 100G 内的库,可以考虑使用 mysqldump 来做, 因为 mysqldump更加轻巧灵活,备份时间选在业务低峰期, 可以每天进行都进行全量备份...(mysqldump 备份出来的文件比较小,压缩之后更小)。...100G 以上的库,可以考虑用 xtranbackup 来做,备份速度明显要比 mysqldump 要快。 一般是选择一周一个全备,其余每天进行增量备份,备份时间为业务低峰期。

    59920

    MySQL的这些小知识点,初入门的你必须得学会

    9、视图有哪些特点? 视图的特点如下: 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。 视图是由基本表(实表)产生的表(虚表)。视图的建立和删除不影响基本表。...对视图内容的更新(添加,删除和修改)直接影响基本表。 当视图来自多个基本表时,不允许添加和删除数据。 视图的操作包括创建视图,查看视图,删除视图和修改视图。 10、SQL的生命周期?...16、MySQL备份计划如何制定 视库的大小来定,一般来说 100G 内的库,可以考虑使用 mysqldump 来做, 因为 mysqldump更加轻巧灵活,备份时间选在业务低峰期, 可以每天进行都进行全量备份...(mysqldump 备份出来的文件比较小,压缩之后更小)。...100G 以上的库,可以考虑用 xtranbackup 来做,备份速度明显要比 mysqldump 要快。 一般是选择一周一个全备,其余每天进行增量备份,备份时间为业务低峰期。

    65020
    领券