Mysql mysqldump备份数据

2023-11-17

mysqldump客户端实用程序执行逻辑备份,生成一组 SQL 语句,可以执行这些语句来重现原始数据库对象定义和表数据 。它转储一个或多个 MySQL 数据库以进行备份或传输到另一台 SQL 服务器。mysqldump 命令还可以生成 CSV、其他分隔文本或 XML 格式的输出 。

一、逻辑备份和物理备份的区别

二、mysqldump备份数据

① 备份命令

mysqldump --single-transaction -B test > back.sql  ## -B 表示备份单个数据库 -A表示所有的数据库

--single-transaction 备份前创建一个事务进行备份操作

② 比较全的备份命令

mysqldump --single-transaction -R --triggers -E -B test > back.sql

-R 在输出中包括转储数据库的存储例程(过程和函数)

-E 定时器

--triggers 触发器备份

③ 备份表

mysqldump --single-transaction -R --triggers -E test ll > back.sql

备份test数据库中的ll表

④ 通过where查询进行备份

mysqldump --single-transaction -R --triggers -E test l -w "a=2"> back4.sql

-w 可以加where添加进行备份, -w "a = 2" 则是where的条件

⑤ 备份到另外一台服务器

mysqldump --single-transaction -R --triggers -E test l -w "a=2" | gzip -c | sshpass -p '123456' ssh root@192.168.0.1 'cat > /tmp/back2.sql.gz'

通过连接ssh进行备份

 ⑥ 导入数据

mysql < back2.sql

三、mysqldump背后实现sql怎么看 

可以把general_log set global general_log = 1;
 打开然后观察一下mysqldump的执行 

2022-03-23T11:33:00.595914+08:00         6329 Query     SHOW GLOBAL STATUS
2022-03-23T11:33:01.520364+08:00         6331 Connect   root@localhost on  using Socket
2022-03-23T11:33:01.520503+08:00         6331 Query     /*!40100 SET @@SQL_MODE='' */
2022-03-23T11:33:01.520588+08:00         6331 Query     /*!40103 SET TIME_ZONE='+00:00' */
2022-03-23T11:33:01.520684+08:00         6331 Query     SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
2022-03-23T11:33:01.520738+08:00         6331 Query     START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
2022-03-23T11:33:01.520830+08:00         6331 Query     SHOW VARIABLES LIKE 'gtid\_mode'
2022-03-23T11:33:01.522339+08:00         6331 Query     UNLOCK TABLES
2022-03-23T11:33:01.522487+08:00         6331 Query     SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'UNDO LOG' AND FILE_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IN (SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA='test' AND TABLE_NAME IN ('l'))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE, TOTAL_EXTENTS, INITIAL_SIZE ORDER BY LOGFILE_GROUP_NAME
2022-03-23T11:33:01.523576+08:00         6331 Query     SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA='test' AND TABLE_NAME IN ('l')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME
2022-03-23T11:33:01.524216+08:00         6331 Query     SHOW VARIABLES LIKE 'ndbinfo\_version'
2022-03-23T11:33:01.525098+08:00         6331 Init DB   test
2022-03-23T11:33:01.525167+08:00         6331 Query     SHOW TABLES LIKE 'l'
2022-03-23T11:33:01.525322+08:00         6331 Query     SAVEPOINT sp
2022-03-23T11:33:01.525391+08:00         6331 Query     show table status like 'l'
2022-03-23T11:33:01.525586+08:00         6331 Query     SET SQL_QUOTE_SHOW_CREATE=1
2022-03-23T11:33:01.525645+08:00         6331 Query     SET SESSION character_set_results = 'binary'
2022-03-23T11:33:01.525707+08:00         6331 Query     show create table `l`
2022-03-23T11:33:01.525788+08:00         6331 Query     SET SESSION character_set_results = 'utf8'
2022-03-23T11:33:01.525859+08:00         6331 Query     show fields from `l`
2022-03-23T11:33:01.526134+08:00         6331 Query     show fields from `l`
2022-03-23T11:33:01.526400+08:00         6331 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `l` WHERE a=2
2022-03-23T11:33:01.526566+08:00         6331 Query     SET SESSION character_set_results = 'binary'
2022-03-23T11:33:01.526626+08:00         6331 Query     use `test`
2022-03-23T11:33:01.526687+08:00         6331 Query     select @@collation_database
2022-03-23T11:33:01.526758+08:00         6331 Query     SHOW TRIGGERS LIKE 'l'
2022-03-23T11:33:01.527033+08:00         6331 Query     SET SESSION character_set_results = 'utf8'
2022-03-23T11:33:01.527114+08:00         6331 Query     ROLLBACK TO SAVEPOINT sp
2022-03-23T11:33:01.527174+08:00         6331 Query     RELEASE SAVEPOINT sp
2022-03-23T11:33:01.527228+08:00         6331 Query     show events

 

① 备份前的准备

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ  

START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */

 A) mysqldump 是在RR的隔离级别进行备份的

B) 是立马开启事务的,不是begin;而是 START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */, 因为begin; 开启事务,真正创建事务是begin后的第一条sql开始的。所以假如用mysqldump备份数据需要30分钟,那么备份后的数据是在30分钟前的,而不是实时的。

② SAVEPOINT  设置保存点,并和rollback结合使用,实现回滚到指定保存点

这样的好处是为了,当我们查询完表元数据时,可以立马回滚,这样导出的事务不会造成其他事务同时操作表元数据时,产生阻塞。也就是元数据上面的MDL锁。

四、mysqldumper 

因为mysqldump是单线程进行备份的,所以我们一般使用mydumper进行备份。

mydumper工具是可以支持多线程的逻辑备份工具,比mysqldump的性能更好,能够支持大数据量的逻辑表备份,测试的结果是可以支持一库多表或全表,不支持多库同时备份,在centons6.5及mysql5.6版本上是可以使用的

① 安装 mydumper

A) 、下载mydumper 源代码 mydumper-0.9.1.tar.gz

B)、 安装依赖包
Mysqldumper工具的一些依赖包需要提前安装
#yum -y install glib2-devel mysql-devel zlib-devel  openssl-devel
C)、安装dumper工具及验证
#tar -xzvf mydumper-0.9.1.tar.gz
#cd mydumper-0.9.1/
#cmake .
#make & make install  

安装成功就会有 mydumper 和 myloader的两个命令

② 备份文件

mydumper -G -E -R --trx-consistency-only -t 4 -c -B test  -o backup_20220323

 -G  触发器

-E   定时器

-R  存储例程(过程和函数)

-t   开启线程个数

-B  数据库

-c  压缩输出文件

-o 文件路径

③ 导入数据

myloader -d /usr/local/back.tar -t 4 -B sb

-B 可以重新导入新的数据库

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql mysqldump备份数据 的相关文章

  • SQLAlchemy+pymysql 错误:sqlalchemy.util.queue.Empty

    尝试使用 Eclispse 在 Ubuntu 上运行 Python 2 SQLAlchemy 0 8 和 MySQL5 2 但我不断收到以下错误 我使用 pymysql 实际上是 pymysql3 引擎 模块监视器 from sqlalch
  • 如何对主索引重新编号

    我有一个简单的 MySQL 表 主索引 id 不是一一编号的 1 31 35 100 等 我希望它们的编号如 1 2 3 4 请告诉我该怎么做 我还想指出的是 我知道该操作可能产生的后果 但我只是想整理一下表格 我同意其他方法也可以 但我只
  • php echo 不工作

    我的代码似乎不起作用 单选按钮出现 但旁边什么也没有 似乎 mysql fetch array 由于某种原因无法工作 因为我已经玩过代码并反复测试它以查找代码似乎遇到的位置出现问题并停止工作 有人可以告诉我出了什么问题吗 欢呼声我是新手 最
  • mysql计算唯一行值

    TABLE quotation id clientid 1 25 2 25 3 25 4 25 5 26 如何查询有多少个不同的客户端TABLE quotation 我不希望重复的条目被计算多次 我需要的答案是2 在 1 行中 因为唯一的非
  • 从数据库中给定时间起经过的时间

    我有一个 HTML 表 其中包含从数据库中提取的记录 我正在使用 PHP MySQL 我的表中名为 Timer 的列未从数据库中检索 我需要在此处显示经过的时间 从数据库中的特定时间开始 例如 假设现在的时间是2013年2月21日下午6点2
  • MYSQL 查询 WHERE IN 与 OR

    我开发了一个使用 OR 查询的系统 SELECT FROM tableA JOIN tableB ON idA idB WHERE idA 1 OR idA 2 OR idA 3 OR idA 4 OR idA 5 OR idA 100 与
  • 从 varchar(100) 类型获取时间(HH:MM AM/PM)格式

    如何将字符串 RD OT 07 30 转换为时间 我只知道如何将 07 30 AM 转换为时间 下面的代码给了我一个空白数据 id strtoupper POST id query mysql query SELECT STR TO DAT
  • MySQL - 查询合并具有相同 id 的行并保留该 id 的所有条目但作为一条记录

    我一直在处理本地保存在 wamp 服务器上的 mysql 数据库中的表 我正在使用 wamp 中的 phpmyadmin 区域来运行查询 我正在尝试获取数据来执行以下操作 谁能帮我制作一张包含许多植物记录的表格 植物可以有多个名称 表格将其
  • MySQL 获取时间优化

    o我有一个包含 200 万个寄存器的表 但它很快就会增长得更多 基本上 该表包含具有相应描述符的图像的兴趣点 当我尝试执行选择在空间上靠近查询点的点的查询时 总执行时间花费太长 更准确地说 持续时间 获取 0 484 秒 27 441 秒
  • 更新\插入数据从grafana到mysql

    可以从grafana更新数据或插入数据到mysql 我需要使用 UI 在 mysql 中插入 更新信息 现在我已经在使用grafana 所以想知道是否有任何方法可以使用grafana来更新或插入信息 没有用于获取用户输入并将该数据插入 My
  • Mac OS X Yosemite/El Capitan 上自动启动 MySQL 服务器

    我想在启动时自动启动 MySQL 服务器 这在小牛队是可能的 但在优胜美地似乎不起作用 edit 似乎这也适用于 El Capitan dcc 非常接近 这是 MySQL 在 Yosemite 上再次自动启动的方式 The com mysq
  • 为什么将 MySQL 凭据放在 www 目录之外? [复制]

    这个问题在这里已经有答案了 可能的重复 将核心类放在 Web 根目录之上 好还是坏主意 https stackoverflow com questions 3648739 putting core classes above the web
  • MySQL 将 ÅäÖ 视为 AAO?

    这两个查询给了我完全相同的结果 select from topics where name Harligt select from topics where name H rligt 这怎么可能 看起来mysql在搜索时会将 翻译成aao
  • Mysql获取特定表的最后一个id

    我必须从特定的插入表中获取最后的插入 ID 可以说我有这个代码 INSERT INTO blahblah test1 test 2 VALUES test1 test2 INSERT INTO blahblah2 test1 test 2
  • MySQL #1093 - 您无法在 FROM 子句中指定用于更新的目标表“赠品”

    I tried UPDATE giveaways SET winner 1 WHERE ID SELECT MAX ID FROM giveaways 但它给出了 1093 您无法指定目标表 赠品 进行更新FROM clause 本文 ht
  • 日志中每天的每周活跃用户数

    我想知道是否有人可以帮助我使用一些 SQL 来返回两天或更长时间内登录到数据库表的唯一用户数量 让我们使用 7 天作为参考 我的日志表在每一行中包含时间戳 ts 和 user id 表示该用户当时的活动 以下查询返回此日志中的每日活跃用户数
  • 如何在php中根据url从mysql获取数据?

    我在 mysql 数据库中有一个页表 其中包含 page name title content author 字段 我想用 php 来获取它http www domain com index php page page name http
  • IN 子查询中的 GROUP_CONCAT

    SELECT A id A title FROM table as A WHERE A active 1 AND A id IN SELECT GROUP CONCAT B id from B where user 3 如果我启动子查询SE
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session
  • 有没有办法在 MySQL 中有效地对 TRUNCATE 或 DROP TABLE 进行 GRANT ?

    我最近在 MySQL 5 5 x 中尝试过 GRANT SELECT INSERT UPDATE DELETE TRUNCATE ON crawler TO my user localhost WITH GRANT OPTION 这会导致错

随机推荐

  • C语言中将变量的数值打印到.txt文件

    1 C语言中只需加入以下代码即可将变量的数值打印到 txt文件中 FILE fp fopen dayin txt a fprintf fp d n 变量名 fclose fp 2 若想每次运行C程序就覆盖掉上一次生成的 txt文件 则需要先
  • 深入PCI与PCIe之一:硬件篇

    PCI总线和设备树是X86硬件体系内很重要的组成部分 几乎所有的外围硬件都以这样或那样的形式连接到PCI设备树上 虽然Intel为了方便各种IP的接入而提出IOSF总线 但是其主体接口 primary interface 还依然是PCIe形
  • 人才盘点的主角是业务部门负责人还是HR?

    你的企业 是否存在以下问题 人才储备不足 关键岗位人员离职后 没有合适的马上接替 人才质量不高 企业战略变革转型期 不知谁可以引领和驱动变革 人才现状不清 新的业务 新的项目要开拓 不知合适的人才在哪里 人才分布不均 成熟业务部门人才扎堆
  • gin框架38--使用中间件

    gin框架38 使用中间件 介绍 案例 说明 介绍 本文主要介绍如何在gin框架中使用中间件 并通过案例加以说明 使用MyBenchLogger中间件来输出特有的日志 用AuthRequire中间件来实现基础认证 案例 package ma
  • Cost function

    cost function的形式 cost function的推导满足以下过程 1 认为error 满足某个分布 写出样本点xi的样本的error 2 认为样本点是相互独立的 推导出其对数似然函数 3 求偏导 是得导函数为0 分离常数部分
  • Java 高精度计算 BigDecimal 和 BigInteger

    BigDecimal 在 Java 中 表示小数值一般使用 float 或者 double 类型 可以用于科学计算或者工程计算等 数学意义上的小数是连续的 但 float 和 double 只能表示其中的一些离散点 如果我们要表示的数值刚好
  • Webpack 中常用的loader和plugin已经webpack如何配置

    dist文件夹存放打包后的文件 动态获取出口路径 需要有webpack init 生成package js文件 1 1webpack是什么 webpack 是一种前端资源构建工具 一个静态模块打包器 modulebundler 在 webp
  • IEnumerable vs IEnumerator

    对对象的存储对每一种语言都很重要 例如C 中的Iterator C 中的IEnumerator Java中的Iterator等 C 所有的集合类都定义了一个叫iterator的数据成员 可以通过此对象实现对集合的traverse vecto
  • kafka权威指南中文版之三

    第三章kafka producer 向kafka写入消息 无论你将kafka作为一个消息队列 或者消息总线 还是一个数据存储平台 你都要通过生产者producer向kafka写入数据 通过消费者consumer读取kafka的数据 例如 一
  • 微信支付流程

    一 微信支付流程 APP用户点击进行支付 会向我们自己的订单服务发送请求 携带订单的相关信息 订单服务接收到请求之后需要保存订单 调用微信统一下单接口生成预支付订单 微信会返回预支付订单标识 订单服务会根据微信返回的标识生成带签名的支付信息
  • SQL 注入-盲注

    目录 一 什么时候用到盲注 二 盲注的优缺点 三 盲注的流程 四 盲注的分类 五 布尔盲注 5 1 原理以及什么时候使用布尔盲注 5 2 例如upload labs靶场中的Less 8 5 3 布尔盲注常用函数及定义 5 4 length
  • PyQt5 第一章 PyQt5简介和安装

    第一章 PyQt5简介和安装 零基础入门玩转 PyQt5 邀请码 LWskm3AS 1 1 PyQt5 简介 PyQt5是Digia的一套Qt5应用框架与python的结合 同时支持2 x和3 x Qt库由Riverbank Computi
  • 计算机与图像处理论文标题,数字图像处理论文各种题目.doc

    数字图像处理论文各种题目 待处理图片 参考最终效果图 29利用中值空间滤波去去除波形噪声 要求 掌握空间滤波原理 了解中值空间滤波在实际中的应用 利用MATLAB实现对波形的中值滤波 改进算子 使图像达到标准对照图像效果 待处理图片 处理后
  • webpack html 引入cdn,Webpack如何引入CDN连接来优化编译后的体积

    背景 在 Vue 项目中 引入到工程中的全部 js 文件 编译时都会被打包进 vendor js 也就致使了 vendor js 文件体积变得至关臃肿 必定程度上影响着页面的渲染 为了减小编译后的体积 提升页面渲染速度 咱们能够经过引入 C
  • python时间戳转换年,月,日,季度,周

    数据结构 def q year day week day dict 0 星期一 1 星期二 2 星期三 3 星期四 4 星期五 5 星期六 6 星期天 for x in range 0 366 time item star time int
  • github上传的报错的问题解决

    文章目录 前言 一 遇见的问题 二 开始配置ssh key 这就完成了 可以重新尝试一下上面代码到github 前言 有很多伙伴们在操作github时候 上传代码的时候 会有报错问题 上传代码失败 这里我给出我本人的的解决办法 一 遇见的问
  • Sakura美化

    文章原地址在 我的博客 接上次的文章 闲着也是闲着 不如搭个免费的博客玩玩 0 前言 做hexo的美化工作 主要是 修改布局文件 HTML模板ejs文件 添加功能 做好CSS 还是得对HTML 结构 CSS 表现 Javascript 行为
  • 【华为OD机试真题 Python】整理扑克牌 (A卷2022Q4)

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • python数据容器--集合的常用操作

    python数据容器 集合的常用操作 数据是无序存储的 不支持下标索引 不允许重复数据的存在 set集合基本操作 my set 传智教育 itheima 黑马程序员 添加新元素 my set add python print f 添加元素后
  • Mysql mysqldump备份数据

    mysqldump客户端实用程序执行逻辑备份 生成一组 SQL 语句 可以执行这些语句来重现原始数据库对象定义和表数据 它转储一个或多个 MySQL 数据库以进行备份或传输到另一台 SQL 服务器 mysqldump 命令还可以生成 CSV