mysqldump主要参数探究

在数据库的日常维护中,对于数据量小的备份,我们常常采用的是逻辑备份,也就是使用mysqldump导出。数据量比较大的备份会使用percona的xtrabackup,关于xtrabackup工具的使用以及原理请参考我前面的文章xtrabackup详解,当然还有其他的方法。现在我们主要来深入看看mysqldump几个比较常用参数的原理。要需要了解mysqldump各种参数做了什么,我们需要打开查询日志来分析,打开查询日志很简单,在[mysqld]段落添加如下参数:

general_log=. row ) )  row . row ) )  row  Query     SHOW TABLES  Query     LOCK TABLES `tb2`  Query     show  Query     
                     Query      Query     show  Query      Query     show fields  Query      Query      Query      Query      Query     SHOW TRIGGERS  Query      Quit

可以看见不加任何参数,自动加上了LOCK TABLES READ LOCAL锁,,该锁不会阻止读,也不会阻止新的数据插入。所以不加参数的dump是非常danger。

Query SHOW TABLES Query LOCK TABLES `tb2` Query show Query Query Query show Query Query show fields Query Query Query Query Query SHOW TRIGGERS Query Quit

跟默认不加参数是一样的,了LOCK TABLES READ LOCAL锁,,该锁不会阻止读,也不会阻止新的数据插入。

Query FLUSH TABLES Query SHOW TABLES Query show Query Query Query show Query Query show fields Query Query Query Query Query SHOW TRIGGERS Query Quit

可以发现执行了flush tables(关闭所有已打开的表),它请求发起一个全局的读锁(FLUSH TABLES WITH READ LOCK)会阻止对所有表的写入操作,以此来确保数据的一致性。备份完成后,该会话断开,会自动解锁。

Query Query Query FLUSH Query FLUSH TABLES Query SHOW TABLES Query show Query Query Query show Query Query show fields Query Query Query Query Query SHOW TRIGGERS Query Quit

可以发现没什么变化,只是多执行了SHOW MASTER STATUS,我们看看备份出来的sql

 Connect   root Query      Query      Query     FLUSH  Query     FLUSH TABLES  Query     SHOW TABLES  Query     show  Query     
                    Query      Query     show  Query      Query     show fields  Query      Query      Query      Query      Query     SHOW TRIGGERS  Connect   root Query      Query      Query      Query     START  Query     SHOW TABLES  Query     show  Query     
                    Query      Query     show  Query      Query     show fields  Query      Query      Query      Query      Query     SHOW TRIGGERS  Query      Quit

InnoDB 表在备份时,通常启用选项 --single-transaction 来保证备份的一致性,可以实际上它的工作原理是设定本次会话的隔离级别为:REPEATABLE READ。然后启动了一个快照,实现一致性非锁定读。下面是官方给出的解释:

START TRANSACTION WITH CONSISTENT SNAPSHOT;

The WITH CONSISTENT SNAPSHOT option starts a consistent read for storage engines that are capable of it. This applies only to InnoDB. The effect is the same as issuing a START TRANSACTION followed by a SELECT from anyInnoDB table. See Section 14.2.7.2, “Consistent Nonlocking Reads”. The WITH CONSISTENT SNAPSHOT option does not change the current transaction isolation level, so it provides a consistent snapshot only if the current isolation level is one that permits consistent read (REPEATABLE READ or SERIALIZABLE).

Connect root Query Query Query FLUSH Query FLUSH TABLES Query Query START Query SHOW TABLES Query show Query Query Query show Query Query show fields Query Query Query Query Query SHOW TRIGGERS Query --flush-logs db table > /data/backup/table.sql

备份InnoDB表的参数推荐如下:

mysqldump  --single-transaction --master-data= --flush-log db table > /data/backup/table.sql

当然还有很多参数,比如设置字符集等,童鞋们自行help,你懂的!

参考资料:

https://dev.mysql.com/doc/refman/5.0/en/commit.html

http://dev.mysql.com/doc/refman/5.0/en/flush.html 

更多相关文章
一周排行
  • VMCloud云平台SCDPM四如何保护数据库一
    上一篇讲述了如何去安装SCDPM代理,这篇将继续介绍SCDPM的关键功能--保护(Prot ...
  • 存储学习之--StarWind虚拟存储配置和Linux客户端连接
    存储学习之--StarWind虚拟存储配置和Linux客户端连接     在Windows ...
  •    我发现cad 的图形导出到arcmap下会出现各种各样的丢失问题,特别是cad的弧段在arcmap下会弯曲(弧度指向另外一边).    那么应该怎么解决这个问题呢?后来想到FME可以高效的还原cad的图形,只要 ...
  •  四.对目录进行删除.添加entry1.删除:ldapdelete      #在删除的时候需要的是DN的信息,所以最好先导出所要删除的条目 方法一:[root@station2 ~]# ldapsearch -x ...
  • CCNA笔记之第十三节:STP生成树协议4
    1. 不同VLAN之间通信的三种方式:1) 单臂路由2) 三层交换3) Vlan2. 实验 ...
  •    今天接到毕业论文答辩的通知,一下子紧张了起来,论文都没时间弄,眼下就要答辩了,另外,就是离开两个多月的校园,马上就得回去了,而这是最后一次的校园生活,在那生活了四年,那里的一切是那么的熟悉,那里的每一个角落都留 ...
  •  需要EDM数据可以联系博主QQ:2281951699,EDM数据具体可以参考博主的QQ空间文章:http://user.qzone.qq.com/2281951699/blog/1341502513.EDM营销虽然 ...
  • 来源:http://www.cnblogs.com/amboyna/archive/2008/03/08/1096024.html一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量.例如 ...
  •    乔布斯:    创造无非就是把事物连结起来,...即若是非凡的创意通常也不过是对已有事物进行的新组合而已.    梭罗:    如果你已经建立了心中的空中楼阁,你的努力并没有白费:楼阁本来就应该在空中,你的主要 ...
  • 表单 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xh ...
Tags