mysqldump备份数据不锁表的加参数方法及原理分析
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备份数据不锁表的加参数方法及原理分析相关推荐
- Mysql mysqldump备份数据
mysqldump客户端实用程序执行逻辑备份,生成一组 SQL 语句,可以执行这些语句来重现原始数据库对象定义和表数据 .它转储一个或多个 MySQL 数据库以进行备份或传输到另一台 SQL 服务器. ...
- mysql锁表_MYSQL锁表问题的解决方法
本文实例讲述了MYSQL锁表问题的解决方法.分享给大家供大家参考,具体如下: 很多时候!一不小心就锁表!这里讲解决锁表终极方法! 案例一 mysql>show processlist; 参看sq ...
- mysql锁表问题的解决方法_MYSQL锁表问题的解决方法
本文实例讲述了MYSQL锁表问题的解决方法.分享给大家供大家参考,具体如下: 很多时候!一不小心就锁表!这里讲解决锁表终极方法! 案例一 mysql>show processlist; 参看sq ...
- php 实现自动加载更多,$.ajax+php实战教程之下拉时自动加载更多文章原理分析二...
摘要: 继上一篇<$.ajax+php实战教程之下拉时自动加载更多文章原理分析>文章进行进一步讲解,完善之前的代码及引入ajax和php相关内容...... 上次留下的问题不知道看官们有没 ...
- mysqldump重叠备份带来的锁表问题
最近业务高峰期间经常会有开发跳起来说应用连接数据库超时了! 我们来看下mysql的运行状态 Waiting for release of readlock:等待释放全局锁 The thread is ...
- mysql 不锁表备份_Mysql不锁表备份之Xtrabackup的备份与恢复
一.Xtrabackup介绍 MySQL冷备.热备.mysqldump都无法实现对数据库进行增量备份.如果数据量较大我们每天进行完整备份不仅耗时且影响性能.而Percona-Xtrabackup就是为 ...
- mysql导出数据不锁表_mysqldump锁表出错及解决方法
引言 研发需要某个 MySQL 表,需要运维这边导出来提供给他们. 问题 一般使用 mysqldump 命令即可,但从生产环境直接导出表有报错,如下: mysqldump: Got error: 10 ...
- mysql dump 数据时间_使用mysqldump备份数据及做时间点还原测试步骤
1.备份dbtest数据库数据 # mysqldump --databases dbtest --master-data=2 --single-transaction >s2.sql 记录当前的 ...
- MySQL 锁表后快速解决方法 及 锁表原因
前几天同事在晚上上线的时候执行sql语句造成锁表,想总结一下以避免后续发生. (1) 遇到锁表快速解决办法 依次执行1-6步,运行第6步生成的语句即可. 如果特别着急,运行 1 2 6 步 以及第6步 ...
最新文章
- json_decode到数组
- Leaflet中使用leaflet-sidebar插件实现侧边栏效果
- spring boot整合WebSocket示例
- Ansible的简单使用
- 信号量、使用信号量来完成读写模型(消费者生产者模型)线程池、读写锁面试题
- 50. 模型层 --- dao 层(2)
- pycharm安装scrapy失败_大数据开发神器——Scrapy 框架(读懂Spider流程图)
- 简单测试Content-Length和Chunked两种不同的数据传输方式
- 银行笔试题 java笔试题
- 从头开始vue创建项目_从头开始创建Windows 7主题包
- 博科光纤交换机IP+端口策略应用
- 解决edge可以访问github,谷歌却无法访问的问题
- python文件打包为deb_DEB包详解
- 彻底搞懂vertical-align 底线、基线、中线的含义
- Can not set java.util.Date field *** to java.time.LocalDateTime解决办法
- GPS脚环计步、AI“鸡”脸识别,如何确保自己吃到了一只幸福健康的鸡
- 云服务器如何重新装系统,云服务器可以重新安装系统
- Python——turtle库之画笔形状
- 推荐这款,SpringBoot 开源商城系统,挣钱太轻松了
- 全球与中国医疗计费软件市场深度研究分析报告
热门文章
- AOSP6.0.1 launcher3入门篇-解析DeviceProject.java及相关文件
- Github简单使用
- python logger 服务器_python——logger模块
- 使用hive完成统计分析功能
- webserver之定时器
- 十六进制表示_教资信息技术之:十进制(正数)转二进制、八进制、十六进制...
- vue项目引入CNZZ数据专家(方法汇总篇)
- 响应式优化透明版表白网html单页源码
- 基站数据库 mysql_基站位置数据库V2说明文档
- 高精度矢量汉字的一种填充方法_惯导解算数学基础4(等效旋转矢量解,圆锥补偿解)...