天天看點

mysqldump 導出指定表_mysqldump指令詳解 Part 7- --master-data參數的使用

實驗環境:

  • MySQL 5.7.25
  • Redhat 6.10

前面我們建立了資料庫并建立相關的對象

  • 資料庫
  • 存儲過程
  • 函數
  • 觸發器
  • 事件

今天的内容為--masterr-data的使用

1. --master-data

該參數用于将主庫的bin-log資訊寫入到dump檔案中,即目前檔案名(filename)和位置(position),用于主從複制的搭建

相當于執行了一次 show master;

mysqldump 導出指定表_mysqldump指令詳解 Part 7- --master-data參數的使用

他有2個值可供選擇

--master-data=1

會将change master 語句寫入dump檔案中

在從庫導入後,配置主從無需再指定檔案名和位置

--master-data=2

會将change master 語句寫入dump檔案中,隻不過會被注釋掉

在從庫導入後,配置主從需要指定檔案名和位置

建議使用該值

其他

除非指定--single-transaction開啟,這個參數會将--lock-all-tables開啟

2. 使用--master-data=2備份資料庫

備份所有資料庫
mysqldump -h127.0.0.1 -usystem -p123456  --single-transaction --set-gtid-purged=OFF  --all-databases  --master-data=2  --triggers --events --routines> /tmp/all_master.sql
           
備份test資料庫
mysqldump -h127.0.0.1 -usystem -p123456  --single-transaction --set-gtid-purged=OFF  --databases test  --master-data=2   --triggers --events --routines> /tmp/test_all_master.sql
           

2. 内容解析

2.1 版本資訊

mysqldump 導出指定表_mysqldump指令詳解 Part 7- --master-data參數的使用

第一行是mysqldump的版本

這裡為10.13的版本

第二三行顯示主機名為127.0.0.1

資料庫版本為5.7.25

接下來為一些系統變量的設定

注意這裡 不是注釋 ( 是MySQL的多行注釋符)

它表示如果MySQL的版本大于4.1.1 則執行相應的語句

2.2 master-data資訊

mysqldump 導出指定表_mysqldump指令詳解 Part 7- --master-data參數的使用

可以看出多了change master語句

同時是被注釋掉的

2.3 資料庫和表的資訊

mysqldump 導出指定表_mysqldump指令詳解 Part 7- --master-data參數的使用

接下來是備份資料庫的語句

Current Database :test 代表目前進行的是mysql資料庫

後面跟的是建資料庫的語句(CREATE DATABASE test)

如果不存在的話(IF NOT EXISTS),如果存在也不會删除

之後使用該資料庫(use test)

接下來是表結構相關的(Table structure for table)

如果已經有該表則先删除(DROP TABLE IF EXISTS)

之後是建立mysql資料庫下表的表結構的語句(Create TABLE )

2.4 表資料的備份

mysqldump 導出指定表_mysqldump指令詳解 Part 7- --master-data參數的使用

接下來是表資料的備份(Dumping data for table)

首先鎖定表不讓其他程序寫(LOCK TABLE WRITE)

然後使MySQL停止更新非唯一索引(ALTER TABLE DISABLE KEYS),這樣能加快插入速度

之後将資料轉換成insert語句(INSERT INTO)

之後重建立立丢失的索引(ALTER TABLE ENABLE KEYS)

最後釋放鎖(UNLOCK TABLES)

直到該資料庫所有的表導出完畢後進行下一個資料庫

2.5 備份events

mysqldump 導出指定表_mysqldump指令詳解 Part 7- --master-data參數的使用

接下來是備份事件

導出事件(Dumping events for database 'test')

2.6 備份routines

MySQL中的routines 代表存儲過程和函數

mysqldump 導出指定表_mysqldump指令詳解 Part 7- --master-data參數的使用

導出routines(Dumping routines for database 'test')

之後是詳細的建立語句

2.7 結束備份

mysqldump 導出指定表_mysqldump指令詳解 Part 7- --master-data參數的使用

最後是備份的完成日期

3. 總結

可以看出在備份全庫的時候使用--master-data有如下内容

  • 導出master資訊
  • 建立資料庫(如果不存在)
  • 使用資料庫
  • 删除表(如果存在)
  • 建表
  • 鎖表
  • 禁用非唯一索引
  • 插入資料
  • 啟用非唯一索引(重建索引)
  • 釋放鎖
  • 導出視圖
  • 導出events
  • 導出routines(存儲過程和函數)

這裡就是一個完整的備份語句,包含了MySQL所有的内容

今天的内容就到這裡,歡迎檢視

7.mysqldump指令詳解 Part 7- --master-data參數的使用​www.zhaibibei.cn

mysqldump 導出指定表_mysqldump指令詳解 Part 7- --master-data參數的使用
mysqldump 導出指定表_mysqldump指令詳解 Part 7- --master-data參數的使用