MYSQL學習與資料庫綜合實驗(十 一)—— 客戶端工具備份與恢復實驗(基於Ubuntu18.04中Docker安裝的MySQL8實驗)

陌意隨影發表於2020-12-19

11. 客戶端工具備份與恢復實驗

該實驗銜接上一次實驗:MYSQL學習與資料庫綜合實驗(十)——語句備份與恢復實驗(基於Ubuntu18.04中Docker安裝的MySQL8實驗)

11.1使用mysqldump命令備份DBEM資料庫中的salary表

將資料庫dbms中的salary表備份到當前所在目錄中(你所在資料夾下使用指令的地方)backup資料夾下的salary.sql檔案中。

mysqldump -h localhost -P 3307 -u root -p dbms salary > backup/salary.sql

在這裡插入圖片描述

11.2.使用mysqldump命令備份整個DBEM資料庫

mysqldump -h localhost -P 3307 -u root -p dbms --default-character-set=utf8 > backup/dbms.sql

將資料庫dbms備份到當前所在目錄中(你所在資料夾下使用指令的地方)backup資料夾下的dbms.sql檔案中。
在這裡插入圖片描述
在這裡插入圖片描述

11.3.刪除employee表,然後使用mysql命令,利用上述儲存的檔案恢復employee表

①首先刪除employee表

在這裡插入圖片描述

②從資料庫dbms的的全備份dbms.sql中查詢employee表的結構(使用sed命令)

sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `employee`/!d;q' dbms.sql

在這裡插入圖片描述
通過這個命令我們可以從dbms.sql全備份中查詢出來建立employee表的SQL語句,這樣就方便我們使用這個結果來建立employee表了。

②使用查詢出來的employee表結構語句在MySQL中建立employee表

DROP TABLE IF EXISTS `employee`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `employee` (
  `employeeID` char(6) NOT NULL,
  `name` char(10) NOT NULL,
  `education` char(4) NOT NULL,
  `birth` date NOT NULL,
  `gender` tinyint(1) NOT NULL DEFAULT '1',
  `workYear` tinyint(1) DEFAULT NULL,
  `address` varchar(100) DEFAULT NULL,
  `phone` char(12) DEFAULT NULL,
  `departmentID` char(3) DEFAULT NULL,
  PRIMARY KEY (`employeeID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

在這裡插入圖片描述
這時候我們就將employee表的結構建立出來了。

③從dbms.sql備份中查詢出employee表的資料,並儲存到employee.sql檔案中

grep 'INSERT INTO `employee`' dbms.sql >employee.sql

在這裡插入圖片描述

④從employee.sql中恢復資料到MySQL的dbms資料庫中的employee表。

mysql -h  localhost  -P 3307 -u root -p dbms --default-character-set=utf8 < employee.sql

這個命令中的localhost表示當前主機的ip,埠使用大寫的 -P 表示,我伺服器的埠是3307,如果匯入失敗,可以使用你伺服器的ip來進行連線資料庫試試。
在這裡插入圖片描述
這裡使用的是mysql的匯入命令,而不是使用 mysqldump哦!並且匯入的時候設定了預設的編碼,要和匯出時候設定的編碼一樣。這樣資料就完整地從全備份資料庫dbms.sql中提取出來最終恢復到MySQL資料庫了。

ps:在進行匯入匯出檔案是需要設定預設編碼,為了防止亂碼

11.4.刪除salary表的部分資料,然後使用mysqlimport命令及–replace功能恢復salary表,其中salary表的資料備份檔案已在11.1中備份好

①首先刪除兩條資料
在這裡插入圖片描述

②從備份的salary.csv中恢復資料:

mysqlimport -h localhost   -P 3307 -u root -p --default-character-set=utf8  --replace  dbms salary.csv;

在這裡插入圖片描述
在這裡插入圖片描述
這樣資料就完整地從全備份資料庫dbms.sql中提取出來最終恢復到MySQL資料庫了。

PS:在進行匯入匯出檔案是需要設定預設編碼,為了防止亂碼

11.5整理筆記不易,如果有幫助到你,請一鍵三連哦!

11.6本次博文已經同步到個人部落格,如有需要請移步:

http://moyisuiying.com/index.php/experiment/mysqlexperiment/435.html

相關文章