前情提要
實驗環境:
- MySQL 5.7.25
- Redhat 6.10
前面我們建立了資料庫并建立相關的對象
- 資料庫
- 表
- 存儲過程
- 函數
- 觸發器
- 事件
今天的内容為備份全庫
1. 備份語句
我們來備份test資料庫中的innodb_table表和isam_table表
mysqldump -h127.0.0.1 -usystem -p123456 --set-gtid-purged=OFF --databases test --tables innodb_table isam_table > /tmp/table.sql
複制
2. 内容解析
2.1 版本資訊
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICMyYTMvw1dvwlMvwlM3VWaWV2Zh1Wa-cmbw5CM2F3YxMjbvVDavwFNyAzM2YzNtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
首先依然是mysqldump的版本資訊 主機名資訊
已經一些變量的設定
再次提醒 \/!123456\/ 不是注釋
詳情看上一節介紹
2.2 表的結構
接下來是表的資訊
首先是如果表存在則删除表(DROP TABLE IF EXISTS)
之後建立表(CREATE TABLE)
2.3 表資料的備份
接下來是表資料的備份(Dumping data for table)
首先鎖定表不讓其他程序寫(LOCK TABLE WRITE)
然後使MySQL停止更新非唯一索引(ALTER TABLE DISABLE KEYS),這樣能加快插入速度
之後将資料轉換成insert語句(INSERT INTO)
之後重建立立丢失的索引(ALTER TABLE ENABLE KEYS)
最後釋放鎖(UNLOCK TABLES)
2.4 觸發器的導出
可以看到單獨導出表的話,該表的觸發器會一并導出
3. 總結
可以看出單獨導出表有如下内容
- 删除表(如果存在)
- 建表
- 鎖表
- 禁用非唯一索引
- 插入資料
- 啟用非唯一索引(重建索引)
- 釋放鎖
- 觸發器(如果有)
不同于全庫備份沒有如下内容
- 建立資料庫(如果不存在)
- 使用資料庫
同時一條語句不能導出多個資料庫中的表
今天的内容就到這裡,歡迎檢視