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 

更多相关文章
一周排行
  • 由于工作需要经常要在Windows平台下参阅linux源码,以前都用http://lxr.linux.no/来浏览源码(如下图所示),最近发现sooset来浏览更方便,所以介绍给大家分享.导航栏用起来很方便,不是吗? ...
  • 其实一直没有想过这个问题,前天跟技术支持中心的一位工程师在探讨AD部署的问题时候,突然谈到这个问题,令我当时恍然大误,这个问题实在是太重要了.还是没有工作经验啊,不能考虑的十分全面.case是这样的:在实际环境中,如 ...
  • [[email protected] ~]# cat xingfujie.log http://www.etiantian.org/index.htmlhttp://www.etiantian.org/1.htmlhttp:// ...
  • inotifywait 是一个可以实时监控文件变动的工具,它利用linux内核中的inotify机制实现监控功能.查看内核版本[[email protected]~]# uname -r2.6.20.el6.i686安 ...
  •    最近看了<淘宝技术这十年>这本书,感触颇深,一方面是被本书中所介绍的淘宝的一些技术勾去了魂,一方面是被淘宝最初那些技术建设者搞得热血沸腾.他们那青春的奋斗和坚持,还有那不断克服困难的精神让我久久不能 ...
  • 虚拟化--virtualmachine故障排查思想
  • 网络环境本地连接 网卡1 IP:18.18.18.18 本地环回地址 网卡3 IP:192.168.0.1虚拟机  桥接到网卡3  IP:192.168.0.100做端口映射 增加端口映射   路由管理>路由和 ...
  • 1. 数据库启动:gpstart常用可选参数: -a : 直接启动,不提示终端用户输入确认 -m:只启动master 实例,主要在故障处理时使用2. 数据库停止:gpstop:常用可选参数:-a:直接停止,不提示终端 ...
  • 3. 装饰器@ 3.1 什么是装饰器(函数)? 定义:装饰器就是一函数,用来包装函数的函数,用来修饰原函数,将其重新赋值给原来的标识符,并永久的丧失原函数的引用. 3.2 装饰器的用法 先举一个简单的装饰器的例子: ...
  • 1. 准备 创建用户 /hadoop 定义java安装程序路径 -Bit Server VM (build -alpha.-alpha/ ./hadoop 源码配置修改 配置环境变量: vim /etc/profil ...
Tags