zoukankan      html  css  js  c++  java
  • 【转】mysqldump的锁表的问题

    今天凌晨,公司的一台MySQL生产库备份时间从2:30一直备份到8:30,正常情况下这个备份应该只会备份20分钟,3:00之前就会备份完毕,
    但是这次备份时间太长了,也影响了公司业务的使用。
    先写一下公司的备份语句
    mysqldump -uroot -p123456 --opt --master-data=2 -R dbname | gzip >/data/dbname.sql.gz
    分析一下上面这个语句
    --opt 会lock 本次需要备份的所有表,因为本次备份的是 dbname数据库,所以会锁住dbname的所有表。
    --master-data=2,--master-data=1 默认的话会--lock-all-tables,会锁住整个mysql数据库中的所有表。
    但是如果加上--single-transaction会加上事务,不会锁表。
    所以我在原有参数的基础上加上--single-transaction
    mysqldump -uroot -p123456 --opt --single-transaction --master-data=2 -R dbname | gzip >/data/dbname.sql.gz
    如果加上--single-transaction,备份的时候就不会锁表了。
    以前一直以为locks级别大于single transaction,经过这次实践证明,single-transaction级别更高。
    选择备份多个数据库的简单语法:
    mysqldump -uroot -p123 -h192.131.1.9 --single-transaction --master-data=2 -R --no-data --databases vgos_mcenter vgos_statnum>11.dmp
    顺便说一下,mysqldump默认是lock-tables的。
    当执行mysqldump -uroot -p123 -h192.131.1.9 -R  vgos_statnum>11.dmp 的时候,lock整个vgos_statnum库
    当执行mysqldump -uroot -p123 -h192.131.1.9 -R  vgos_statnum t1>11.dmp 的时候,没有lock整个vgos_statnum库,lock的是t1表。

    【转自】:http://blog.csdn.net/weiliu1463/article/details/25305371

  • 相关阅读:
    读后感
    周总结(五)【2019.7.292019.8.4】
    周总结(六)【2019.8.52019.8.11】
    “教室派”APP使用体验
    ios的内存管理差异和iso6与以前内存管理的兼容
    UITextView 和UILable 设置行间距
    IOS 各种问题收藏贴
    __bridge,__bridge_transfer和__bridge_retained
    键盘事件的处理
    JSONKit 使用示例
  • 原文地址:https://www.cnblogs.com/zhzhang/p/7912849.html
Copyright © 2011-2022 走看看