前面說了MySQL Linux平臺和Windows平臺的安裝

下面開始是MySQL的一些學習筆記

前面我們說瞭如果構造數據

這節開始說MySQL 的備份

環境為MySQL 5.7.25

在解釋命令之前我們先弄清楚資料庫中有哪些對象

上一節我們建立了資料庫並建立相關的對象

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

這節講一些mysqldump的命令

mysqldump導出是MySQL邏輯備份的一種廣泛採用的方式

今天的內容為備份全庫

1. 備份語句

1.1 備份所有資料庫

我們使用如下語句來備份所有資料庫

mysqldump -h127.0.0.1 -usystem -p123456 --all-databases >/tmp/all.sql

或者如下命令

mysqldump -h127.0.0.1 -usystem -p123456 -A >/tmp/all.sql

命令後警告信息後面章節介紹

1.2 備份獨立資料庫

下面語句備份單獨test資料庫 ,多個資料庫用空格隔開即可

mysqldump -h127.0.0.1 -usystem -p123456 --databases test >/tmp/test.sql

2. 備份內容解釋

下面對備份出來的語句進行解釋

2.1 版本信息

第一行是mysqldump的版本

這裡為10.13的版本

第二三行顯示主機名為127.0.0.1

資料庫版本為5.7.25

接下來為一些系統變數的設置

注意這裡/* !12345 */ 不是注釋 (/* */ 是MySQL的多行注釋符)

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

2.2 GTID信息

-- 是MySQL的注釋符號

接下來是清除掉的GTID的設置

如果在備份時未使用 --set-gtid-purged=off 參數 則會出現這行

這裡建議加入該參數,否則在還原到其他伺服器時會出錯

GTID是全局事務唯一標識符,在一個MySQL環境中保持唯一,主要用於複製

GTID_PURGED的數字代表該GTID的事務及以前的事務不包含在所有的BINLOG中,這意味著無法重現該事務

關於GTID後續解釋

2.3 資料庫和表的信息

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

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

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

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

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

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

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

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

2.4 表數據的備份

接下來是表數據的備份(Dumping data for table)

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

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

之後將數據轉換成insert語句(INSERT INTO)

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

最後釋放鎖(UNLOCK TABLES)

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

2.5 結束備份

最後是備份的完成日期

3.總結

所以全庫備份出來的語句主要包含如下內容

  • 建立資料庫(如果不存在)
  • 使用資料庫
  • 刪除表(如果存在)
  • 建表
  • 鎖表
  • 禁用非唯一索引
  • 插入數據
  • 啟用非唯一索引(重建索引)
  • 釋放鎖
  • 視圖導出

另外:可能注意到了上面的語句中只有資料庫和表的信息

沒有存儲過程 函數 觸發器等的信息

所以默認這些是不導出的

經測試視圖也會一併導出

今天的內容就到這裡,歡迎查看

3. mysqldump命令詳解 Part 3- 備份全庫?

www.zhaibibei.cn
圖標


推薦閱讀:
相關文章