mysqldump -p -S /data/mysqldata1/sock/mysql.sock --single-transaction  --master-data=2  --database db1 db2 db3 > db.sql
1、single-transaction
官方解释如下:
--single-transaction:
Creates a consistent snapshot by dumping all tables in a single transaction. Works ONLY for tables stored in storage engines which support multiversioning (currently only InnoDB does); the dump is NOT guaranteed to be consistent for other storage engines. While a --single-transaction dump is in process, to ensure avalid dump file (correct table contents and binary log position), no other connection should use the following statements:ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE, as consistent snapshot is not isolated from them. Option automatically turns off --lock-tables. 由上面加粗的黑体字可以看到几个关键信息:
(1)可以在一个事务里对全部表获取一个一致性快照这里保证了可以在此时获得此一时刻的一致性数据;
(2)只对有版本控制的存储引擎,目前为止是只有innodb有这个功能同样大众的myisam引擎使用不了;
(3)在这个过程中,alter、drop、rename和truncate是无法隔离的,即不能使用额表操作
(4)自动关闭 --lock-tables 选项 我们打开mysql的general-log,来查看 mysqldump --single-transaction -B test >t.log到底发生了什么,查看general-log,如下:
(1) SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
(2)START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
(3)UNLOCK TABLES
第一行是使当前session的事务级别为可重复读;
第二行是开始一个事务并且获得一个一致性快照,其实这个时候就是对当前所有表的数据进行了一个保存,其实这里应该使用了MVCC多版本控制,这就是为什么只有innodb才有的功能;
第三行是释放锁,这也解释了为什么说使用mysqldump不会锁表(因为第二行已经取得了快照,不需要锁表了)。 为什么需要RR隔离? 这样一个session 看到的都是一个时间点的数据

mysqldump 利用rr隔离实现一致性备份的更多相关文章

  1. MySQL RR隔离 读一致性

    MySQL RR 模式下 事务隔离问题: Session 1: mysql> select * from test; +------+------+ | id | name | +------+ ...

  2. #万答10:mysqldump 是如何实现一致性备份的

    万答10:mysqldump 是如何实现一致性备份的 实验场景 MySQL 8.0.25 InnoDB 实验步骤: 先开启 general_log 观察导出执行过程的变化 set global gen ...

  3. InnoDB MVCC RR隔离级别下的数据可见性总结

    一.背景 熟悉数据库隔离级别的人都知道,在RR(可重复读)隔离级别下,无论何时多次执行相同的SELECT快照读语句,得到的结果集都是完全一样的,即便两次SELECT语句执行期间,其他事务已经改变了该查 ...

  4. mysqldump常用于MySQL数据库逻辑备份

    mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...

  5. Mysql RR隔离更新列没有索引 会锁全表

    <pre name="code" class="html">mysql> show variables like '%tx_isolation ...

  6. Innodb 中 RR 隔离级别能否防止幻读?

    问题引出 我之前的一篇博客 数据库并发不一致分析 有提到过事务隔离级别以及相应加锁方式.能够解决的并发问题. 标准情况下,在 RR(Repeatable Read) 隔离级别下能解决不可重复读(当行修 ...

  7. 【Docker】利用数据卷容器来备份、恢复、迁移数据卷

    利用数据卷容器来备份.恢复.迁移数据卷 可以利用数据卷对其中的数据进行进行备份.恢复和迁移. 备份 首先使用 --volumes-from 标记来创建一个加载 dbdata 容器卷的容器,并从主机挂载 ...

  8. RMAN冷备份、一致性备份脚本

    RMAN冷备份.一致性备份脚本 run{ shutdown immediate; startup mount; allocate channel c1 type disk; allocate chan ...

  9. 利用xtrabackup8完全,增量备份及还原MySQL8

    利用xtrabackup8完全,增量备份及还原MySQL8 1.环境准备 服务器 作用 数据库版本 xtrabackup版本 10.0.0.8 数据备份 mysql8.0.26 8.0.28 10.0 ...

随机推荐

  1. 事件绑定之.bind()

    .bind(eventType[,eventData],handler(eventObject)) 描述:为一个元素绑定一个事件处理程序,bind()绑定方法的时候元素必须已经存在. -eventTy ...

  2. JS倒计时器一只,顺便复习javascript时间相关函数

    window.onload = function(){ var uS = 604800; //后台提供 : 秒 var day=hour=minute=second=0, timer; var dem ...

  3. android process bar 几种style

    process bar 圆形style记录 1. style="?android:attr/progressBarStyleSmall" //根据主题变颜色 2. holo 主题下 ...

  4. 用OO方式写键盘字母小游戏

    <html>  <head>   <title>0.0</title>   <script>    window.onload=functi ...

  5. 关于ajax中async参数的感悟

    async,这个参数默认为true. 就是异步去处理信息. 当把它设置为false的时候,就是同步去处理数据了. var current_lead_id = '<?php echo $curre ...

  6. Mysql 语句汇总(性能篇)

    查询mysql 哪些表正在被锁状态: show open TABLES where In_use > 0; show open table from XXX(数据库名);//查看数据库哪些表正在 ...

  7. DRP总结

    DRP终于结束了,战线有点长了.记得刚开始听说DRP的时候,感觉这个名词很专业,再加上视频一共有300集,顿时感觉这是一个大项目,很正规.很专业的项目.虽然后来知道DRP知识ERP的一个分支,项目规模 ...

  8. C++一维数组和指针的关系总结

    对于数组int a[10]; a表示数组的第一个元素的地址,即&a[0]; 如果使指针p,指向数组的首元素,可以进行操作: int * p=a; 或者 int *p=&a[0]; 那么 ...

  9. 遍历文件夹及其子文件夹下的.pdf文件,并解压文件夹下所有的压缩包

    List<PDFPATH> pdfpath = new List<PDFPATH>(); List<string> ziplist = new List<st ...

  10. 单例模式 GetInstance()

    如何设计一个含GetInstance()函数的类 直接上代码: 头文件(MyClass.h): class CMyClass { public: CMyClass(void); ~CMyClass(v ...