MYSQL学习与数据库综合实验(十 一)—— 客户端工具备份与恢复实验(基于Ubuntu18.04中Docker安装的MySQL8实验)

发布于 2020-12-19  120 次阅读


该实验衔接上一次实验: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详细的实验资料以及指导PPT请访问笔者GitHub地址:https://github.com/LJF2402901363/database_experiment.git


繁华落尽,雪花漫天飞舞。