• ADADADADAD

    mysqldump备份时加single-transaction会不会加锁[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 12:11:22

    作者:文/会员上传

    简介:

    mysqldump --all-databases --master-data=2 --single-transaction --quick -R --events -uroot > /tmp/full.sql 通过根踪可以看到:8 Connect root@localhost on 8 Query /*

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    mysqldump --all-databases --master-data=2 --single-transaction --quick -R --events -uroot > /tmp/full.sql
    通过根踪可以看到:
    8 Connect root@localhost on
    8 Query /*!40100 SET @@SQL_MODE='' */
    8 Query /*!40103 SET TIME_ZONE='+00:00' */
    8 Query FLUSH /*!40101 LOCAL */ TABLES
    8 Query FLUSH TABLES WITH READ LOCK
    8 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
    8 Query START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
    8 Query SHOW VARIABLES LIKE 'gtid\_mode'
    8 Query SHOW MASTER STATUS
    8 Query UNLOCK TABLES
    从红色部分可以看出,还是会加锁的,在这个过程中,别的session同样不能进行dml, 只是加锁的时间很短。
    使用single-transaction时要求:
    1 只对支持事务的存储引擎有效果
    2 不能执行ddl操作,因为 ddl操作会改变字典表,而字典表多数是myisam的
    3 事务隔离级别为 RR

    mysqldump备份时,加和不加single-transaction的区别:
    通过打开general_log可以看到过程:
    1 加single-transaction时,是通过START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */的方式来实现的。
    里面同时有很多savepoint,
    2 不加single-trsnsaction是通过在整个过程中锁表实现数据一致性的。
    左图为加single-transaction,右图未加:


    mysqldump备份时加single-transaction会不会加锁.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载