mysqldump命令的备份用法分析—锁表不锁表

mysqldump默认的字符集是utf8

/etc/my.cnf添加如下两行文件,重启mysql服务,以输出日志方便分析general_log=on
general_log_file=/var/log/mysql/general_log

1.直接运行备份命令不加参数

如果有增删改或事物语句进行到一半还没提交,则该备份命令会被卡着。

例如:
mysqldump -u root -p wjy > wjy.sql查看general_log,会发现锁表语句
LOCK TABLES `t1` READ
直到最后出现解锁语句
UNLOCK TABLES
(多个表同时最后解锁,
如果备份时间有半个小时,
那么这半个小时就不能增删改)

2.加参数--master-data(排它锁,需要先开binlog)

如果有增删改或事物语句进行到一半还没提交,加了--master-data则可以顺利备份。

例如:
mysqldump -u root -p  --master-data  wjy > wjy.sql查看general_log,会发现锁表语句
FLUSH TABLES WITH READ LOCK  (跟上面的不同)也是在备份完成后才解锁,
备份过程新的增删改操作也会被卡,
可能很耗时不适合生产环境。

3.加参数--master-data和--single-transaction实现毫秒级阻塞

说明start transaction和start transaction with sonsistent snapshot的区别

start transaction
不是跟执行start transaction命令的时候保存的数据一致,而是跟执行start transaction命令后第一次查询的时候数据保持一致,如果执行start transaction后增加了数据再读,也可以读到增加的数据。但是读一次后再增加数据就看不到了。

start transaction with sonsistent snapshot
是跟执行完这条命令的状态保持一致,后续的增删改都看不到。

加了--single-transaction的时候,只会阻塞毫秒级,对对应的表照了个快照从快照里面备份数据,不影响表的增删改。采用的是start transaction with sonsistent snapshot方式。

例如:
mysqldump -u root -p  --master-data  --single-transaction wjy > wjy.sql查看general_log,会发现锁表语句后很快就解锁了。
Query   SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
Query   START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
Query   SHOW VARIABLES LIKE 'gtid\_mode'
Query   SHOW MASTER STATUS
Query   UNLOCK TABLES

生成的备份文件是sql语句,可以直接执行恢复数据,或者恢复部分的sql语句。

生产备份请加参数--master-data和--single-transaction以对业务影响最小

mysqldump备份数据不锁表的加参数方法及原理分析相关推荐

  1. Mysql mysqldump备份数据

    mysqldump客户端实用程序执行逻辑备份,生成一组 SQL 语句,可以执行这些语句来重现原始数据库对象定义和表数据 .它转储一个或多个 MySQL 数据库以进行备份或传输到另一台 SQL 服务器. ...

  2. mysql锁表_MYSQL锁表问题的解决方法

    本文实例讲述了MYSQL锁表问题的解决方法.分享给大家供大家参考,具体如下: 很多时候!一不小心就锁表!这里讲解决锁表终极方法! 案例一 mysql>show processlist; 参看sq ...

  3. mysql锁表问题的解决方法_MYSQL锁表问题的解决方法

    本文实例讲述了MYSQL锁表问题的解决方法.分享给大家供大家参考,具体如下: 很多时候!一不小心就锁表!这里讲解决锁表终极方法! 案例一 mysql>show processlist; 参看sq ...

  4. php 实现自动加载更多,$.ajax+php实战教程之下拉时自动加载更多文章原理分析二...

    摘要: 继上一篇<$.ajax+php实战教程之下拉时自动加载更多文章原理分析>文章进行进一步讲解,完善之前的代码及引入ajax和php相关内容...... 上次留下的问题不知道看官们有没 ...

  5. mysqldump重叠备份带来的锁表问题

    最近业务高峰期间经常会有开发跳起来说应用连接数据库超时了! 我们来看下mysql的运行状态 Waiting for release of readlock:等待释放全局锁 The thread is ...

  6. mysql 不锁表备份_Mysql不锁表备份之Xtrabackup的备份与恢复

    一.Xtrabackup介绍 MySQL冷备.热备.mysqldump都无法实现对数据库进行增量备份.如果数据量较大我们每天进行完整备份不仅耗时且影响性能.而Percona-Xtrabackup就是为 ...

  7. mysql导出数据不锁表_mysqldump锁表出错及解决方法

    引言 研发需要某个 MySQL 表,需要运维这边导出来提供给他们. 问题 一般使用 mysqldump 命令即可,但从生产环境直接导出表有报错,如下: mysqldump: Got error: 10 ...

  8. mysql dump 数据时间_使用mysqldump备份数据及做时间点还原测试步骤

    1.备份dbtest数据库数据 # mysqldump --databases dbtest --master-data=2 --single-transaction >s2.sql 记录当前的 ...

  9. MySQL 锁表后快速解决方法 及 锁表原因

    前几天同事在晚上上线的时候执行sql语句造成锁表,想总结一下以避免后续发生. (1) 遇到锁表快速解决办法 依次执行1-6步,运行第6步生成的语句即可. 如果特别着急,运行 1 2 6 步 以及第6步 ...

最新文章

  1. json_decode到数组
  2. Leaflet中使用leaflet-sidebar插件实现侧边栏效果
  3. spring boot整合WebSocket示例
  4. Ansible的简单使用
  5. 信号量、使用信号量来完成读写模型(消费者生产者模型)线程池、读写锁面试题
  6. 50. 模型层 --- dao 层(2)
  7. pycharm安装scrapy失败_大数据开发神器——Scrapy 框架(读懂Spider流程图)
  8. 简单测试Content-Length和Chunked两种不同的数据传输方式
  9. 银行笔试题 java笔试题
  10. 从头开始vue创建项目_从头开始创建Windows 7主题包
  11. 博科光纤交换机IP+端口策略应用
  12. 解决edge可以访问github,谷歌却无法访问的问题
  13. python文件打包为deb_DEB包详解
  14. 彻底搞懂vertical-align 底线、基线、中线的含义
  15. Can not set java.util.Date field *** to java.time.LocalDateTime解决办法
  16. GPS脚环计步、AI“鸡”脸识别,如何确保自己吃到了一只幸福健康的鸡
  17. 云服务器如何重新装系统,云服务器可以重新安装系统
  18. Python——turtle库之画笔形状
  19. 推荐这款,SpringBoot 开源商城系统,挣钱太轻松了
  20. 全球与中国医疗计费软件市场深度研究分析报告

热门文章

  1. AOSP6.0.1 launcher3入门篇-解析DeviceProject.java及相关文件
  2. Github简单使用
  3. python logger 服务器_python——logger模块
  4. 使用hive完成统计分析功能
  5. webserver之定时器
  6. 十六进制表示_教资信息技术之:十进制(正数)转二进制、八进制、十六进制...
  7. vue项目引入CNZZ数据专家(方法汇总篇)
  8. 响应式优化透明版表白网html单页源码
  9. 基站数据库 mysql_基站位置数据库V2说明文档
  10. 高精度矢量汉字的一种填充方法_惯导解算数学基础4(等效旋转矢量解,圆锥补偿解)...