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 

更多相关文章
一周排行
  • 多个线程访问共享数据
    如下图,多个线程访问共享数据:编码应该如何实现?举一个多线程访问共享数据的例子:设计4个线 ...
  • 创意改变生活,诺基亚成就未来
    大家是否想过,自己的想法,自己的作品可以影响亿万人的生活呢?是否想过拿出手机的时候,有无数 ...
  • 启用SMTP服务器功能创建新的SMTP虚拟服务器为SMTP虚拟服务器配置IP地址和端口设置为入站和出站连接配置身份验证设置使用邮件客户端程序测试SMTP服务 
  • 1.活用Android线程间通信的Message机制1.1.Message代码在frameworks\base\core\java\android\Os\Message.java中. Message.obtain函数 ...
  • 前面我写了关于批量创建AD账户的BLOG,http://mcmvp.blog.51cto.com/5497438/959289也写了用UI批量启用邮件的方法,http://mcmvp.blog.51cto.com/5 ...
  •          员工个人发展规划,一年做一次,在年初做,每半年(或一个季度)讨论一次,可以与绩效考核匹配,也可不匹配,个人感觉不匹配好,因为个人发展规划,是主要用于自我发展和自己监督用的,以自己的发展为出发点.但绩 ...
  • Squid透明代理内网用户上网
    一.简介    squid实现代理上网是7层代理,传统的路由器实现snat一般是4层,基于 ...
  • Phoebus是一个庞大的企业级应用系统平台,在此平台的基础上,可以方便.快捷.低成本的开发出任何企业级应用软件,包括协同办公(OA).客户关系管理软件(CRM).进销存.ERP.仓储管理软件.项目管理软件.工作流软 ...
  • 1.安装[[email protected]]# yum install tigervnc-server -y2.配置 [[email protected]]# vncserver输入两次密码.3 ...
  • Administration(Administrative Director File Clerk Executive Assistant Office Manager Executive Secretary Rec ...
Tags