前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql备份工具mysqldump--简介

Mysql备份工具mysqldump--简介

原创
作者头像
陈不成i
修改2021-06-11 14:15:43
1.3K0
修改2021-06-11 14:15:43
举报
文章被收录于专栏:ops技术分享

简介

备份过程

mysqldump备份经过:

  1. 先发出一条 flush tables 关闭实例上所有打开的表
  2. 创建一个全局锁,FLUSH TABLES WITH READ LOCK获得 db 一致性状态。
  3. 设置事务隔离级别为 RR ,确保备份事务中任何时刻的数据都相同。
  4. 创建一个 RR 级别的事务一致性快照 ,执行START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
  5. 根据参数–master-data=2 打印 SHOW MASTER STATUS 获取文件名和位置点信息。
  6. 执行UNLOCK TABLES 释放锁。
  7. 在开始做所有的事情之前创建了一个事务的还原点,然后先备份一张表,然后再回到事务的还原点,再继续备份下一张表,一直这样重复直到所有的表备份完成。最后把事务还原点释放掉。然后把这个事务 rollback 掉就可以了。

优缺点

优点: mysqldump的优点就是逻辑备份,把数据生成SQL形式保存,在单库,单表数据迁移,备份恢复等场景方便,SQL形式的备份文件通用,也方便在不同数据库之间移植。对于InnoDB表可以在线备份。

缺点: mysqldump是单线程,数据量大的时候,备份时间长,甚至有可能在备份过程中非事务表长期锁表对业务造成影响(SQL形式的备份恢复时间也比较长)。mysqldump备份时会查询所有的数据,这可能会把内存中的热点数据刷掉

命令使用

有3种方式来调用mysqldump: mysqldump [options] db_name [tables] mysqldump [options] —database DB1 [DB2 DB3…] mysqldump [options] –all–database

如果没有指定任何表或使用了—database或–all–database选项,则转储整个数据库。 如果运行mysqldump没有–quick或–opt选项,mysqldump在转储结果前将整个结果集装入内存。如果转储大数据库可能会出现问题。该选项默认启用,但可以用–skip-opt禁用。 如果使用最新版本的mysqldump程序生成一个转储重装到很旧版本的MySQL服务器中,不应使用–opt或-e选项。

myisam引擎

myisam引擎提示: myisam引擎不支持事物,就没法用–single-transaction来保证一致性,在整个dump过程中无法保证可重复读。而innodb可以记录备份开始时间的pos点,只备份pos点之前的,对之后的不关心,这样来保证一致性。

myisam引擎可以添加–lock-all-tables,这样在flush tables with read lock后,直到整个dump过程结束,断开线程后才会unlock tables释放锁(没必要主动发unlock tables指令),整个dump过程其他线程不可写,从而保证数据的一致性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
    • 备份过程
      • 优缺点
        • 命令使用
          • myisam引擎
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档