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
從紅色部分可以看出,還是會(huì)加鎖的,在這個(gè)過程中,別的session同樣不能進(jìn)行dml, 只是加鎖的時(shí)間很短。
使用single-transaction時(shí)要求:
1 只對(duì)支持事務(wù)的存儲(chǔ)引擎有效果
2 不能執(zhí)行ddl操作,因?yàn)?ddl操作會(huì)改變字典表,而字典表多數(shù)是myisam的
3 事務(wù)隔離級(jí)別為 RR
mysqldump備份時(shí),加和不加single-transaction的區(qū)別:
通過打開general_log可以看到過程:
1 加single-transaction時(shí),是通過START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */的方式來(lái)實(shí)現(xiàn)的。
里面同時(shí)有很多savepoint,
2 不加single-trsnsaction是通過在整個(gè)過程中鎖表實(shí)現(xiàn)數(shù)據(jù)一致性的。
左圖為加single-transaction,右圖未加:
創(chuàng)新互聯(lián)建站網(wǎng)絡(luò)公司擁有10多年的成都網(wǎng)站開發(fā)建設(shè)經(jīng)驗(yàn),近千家客戶的共同信賴。提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)站開發(fā)、網(wǎng)站定制、賣友情鏈接、建網(wǎng)站、網(wǎng)站搭建、自適應(yīng)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)師打造企業(yè)風(fēng)格,提供周到的售前咨詢和貼心的售后服務(wù)