《数据库运维》 郭文明 实验4 数据库备份与恢复实验核心操作与思路解析

1. 实验目的

练习数据库备份与恢复的操作方法。说明:实验过程中可以使用MySQL官网提供实例employees数据库,下载地址为https://launchpad.net/test-db/employees-db-1/1.0.6,也可以自己创建数据库进行备份恢复实验。

2. 实验内容

【实验4-1】使用select...into...outfile语句对数据库employees的表departments进行数据导出。

【实验4-2】使用select...into...outfile语句对数据库employees的表salaries进行数据导出,并使用fields字句指定字段值之间的符号分隔符为",",字段的包裹符号为"""。

【实验4-3】使用mysqldump命令备份数据库中的某个表,对数据库employees的表deparments导出SQL语句。

【实验4-4】使用mysqldump命令备份单个数据库,对数据库employees的导出SQL语句,并忽略数据表departments。

【实验4-5】使用mysqldump命令备份多个数据库,对数据库employees、test两个数据库导出SQL语句。

【实验4-6】使用mysqldump命令导出界定格式文件数据,对数据库employees进行CSV文件数据的导出。

【实验4-7】使用图形化工具MySQL Workbench导出数据库employees的表departments的CSV格式数据。

【实验4-8】使用图形化工具MySQL Workbench导出数据库employees的表departments的SQL文件。

【实验4-9】使用DELETE语句删除employees数据库的表departments的表格数据,使用LOAD DATA INFILE语句,通过【实验5-1】导出的文件,对删除的数据进行恢复,并使用SELECT语句对恢复的数据进行检查。

【实验4-10】使用DELETE语句删除employees数据的表salaries的表格数据,使用LOAD DATA INFILE语句以及FIELDS子句,通过【实验5-2】导出的文件,对删除的数据进行恢复,即字段值之间的符号分隔符为",",字段的包裹符号为"""。

【实验4-11】使用DELETE语句删除employees数据的表salaries的表格数据,使用mysqlimport命令,通过【实验5-2】导出的文件,对删除的数据进行恢复,即字段值之间的符号分隔符为",",字段的包裹符号为"""。

【实验4-12】使用DROP命令删除employees数据库下的除departments的所有数据表及其数据,使用mysql命令行工具,通过【实验5-4】导出的SQL文件恢复删除的数据。

【实验4-13】使用DROP命令删除数据库employees和数据库test,使用SOURCE语句,通过【实验5-5】导出的SQL文件恢复删除的数据。

【实验4-14】删除数据库employees的表departments中的数据,使用图形化工具MySQL Workbench,通过【实验5-7】恢复删除的数据。

【实验4-15】删除数据库employees的表departments及其数据,使用图形化工具MySQL Workbench,通过【实验5-8】恢复删除的数据。

【实验4-16】在时间点A使用mysqldump命令对数据库employees导出SQL文件,进行逻辑备份,备份完成,创建一个表test,并插入数据,在时间点B删除创建的表test,在时间点C再次创建一个表test2,并插入一条数据。在这个操作过程中在时间点B删除表test是误操作。使用mysqlbinlog进行基于时间点的恢复操作,即经过恢复之后employees数据库中会同时存在数据表test2和数据表test。

3. 实验要求

(1)所有操作均在命令行或者MySQL Workbench中完成。

(2)将操作过程以屏幕抓图的方式复制,形成实验文档,并对照本章内容写出分析报告。

4. 分析报告

通过本次试验的学习,掌握了:

1、数据的导出和导入有利于我们快速把数据输入到数据库中和获得数据库中的数据。

2、数据的导入和导出时要注意数据源和目的的选择。

3、导入数据的时候要数据的格式和分隔符,还要注意表的约束条件和参照完整性。

4、数据库的及备份也注意目标文件的选择以便在还原时找到目标文件。

5、掌握了mysql的数据备份和恢复方法。

为以后的数据库学习,打下了良好的基础。

sql 复制代码
【实验4-1】使用select...into...outfile语句对数据库employees的表departments进行数据导出。
select * from departments into outfile "departments.txt";
【实验4-2】使用select...into...outfile语句对数据库employees的表salaries进行数据导出,并使用fields字句指定字段值之间的符号分隔符为",",字段的包裹符号为"""。
select * from salaries into outfile "salaries.txe" fields terminated by ',' enclosed by "'";
【实验4-3】使用mysqldump命令备份数据库中的某个表,对数据库employees的表deparments导出SQL语句。
mysqldump -uroot -p employees departments>d:backup\departments_20240511.sql
【实验4-4】使用mysqldump命令备份单个数据库,对数据库employees的导出SQL语句,并忽略数据表departments。
mysqldump -uroot -p employees --ignore-table departments.departments > d:\backup\employees_without_departments.sql
【实验4-5】使用mysqldump命令备份多个数据库,对数据库employees、test两个数据库导出SQL语句。
mysqldump -uroot -p --databases employees test > d:\backup\employees_and_test.sql
【实验4-6】使用mysqldump命令导出界定格式文件数据,对数据库employees进行CSV文件数据的导出。
mysqldump -uroot -p --tab=d:\backup\data employees --fields-terminated-by ','
【实验4-9】使用DELETE语句删除employees数据库的表departments的表格数据,使用LOAD DATA INFILE语句,通过【实验4-1】导出的文件,对删除的数据进行恢复,并使用SELECT语句对恢复的数据进行检查。
delete from departments;
load data infile 'departments.txt' into table departments;
select - from departments;
【实验4-10】使用DELETE语句删除employees数据的表salaries的表格数据,使用LOAD DATA INFILE语句以及FIELDS子句,通过【实验4-2】导出的文件,对删除的数据进行恢复,即字段值之间的符号分隔符为",",字段的包裹符号为"""。
delete from salaries;
load data infile 'salaries.txt' into table salaries fields terminated by ',' enclosed by "'";
select * from salaries;
【实验4-11】使用DELETE语句删除employees数据的表salaries的表格数据,使用mysqlimport命令,通过【实验4-2】导出的文件,对删除的数据进行恢复,即字段值之间的符号分隔符为",",字段的包裹符号为"""。
delete from salaries;
mysqlimport -uroot -p employees salaries.txt --fields-terminated-by "," --fields-enclosed-by ","
【实验4-12】使用DROP命令删除employees数据库下的除departments的所有数据表及其数据,使用mysql命令行工具,通过【实验4-4】导出的SQL文件恢复删除的数据。
drop table dept_emp,dept_manager,employees,salaries,titles;
mysql -uroot -p employees<"d:\backup\employees_without_departments.sql"
【实验4-13】使用DROP命令删除数据库employees和数据库test,使用SOURCE语句,通过【实验4-5】导出的SQL文件恢复删除的数据。
drop database employees;
drop database test;
source d:\backup\employees_and_test.sql;
【实验4-14】删除数据库employees的表departments中的数据,使用图形化工具MySQL Workbench,通过【实验4-7】恢复删除的数据。
delete from departments;
【实验4-15】删除数据库employees的表departments及其数据,使用图形化工具MySQL Workbench,通过【实验4-8】恢复删除的数据。
drop table departments;
【实验4-16】在时间点A使用mysqldump命令对数据库employees导出SQL文件,进行逻辑备份,备份完成,创建一个表test,并插入数据,在时间点B删除创建的表test,在时间点C再次创建一个表test2,并插入一条数据。在这个操作过程中在时间点B删除表test是误操作。使用mysqlbinlog进行基于时间点的恢复操作,即经过恢复之后employees数据库中会同时存在数据表test2和数据表test。
mysqldump -uroot -p employees>d:\backup\employees.sql
create table test(name varchar(10),age int);
insert into test values("LinMing",20);
drop table test;
create table test2(name varchar(10));
insert into test2 values("李明");
mysqlbinlog d:\mysql-8.0.27-winx64\data\mysql.000001
mysqlbinlog --stop-datetime="24-05-12 9:30:17" d:\mysql-8.0.27-winx64\data\mysql.000001
use employees;
source d:\backup\employees.sql;
select * from test;
select * from test2;

本文为个人学习笔记与经验总结,仅供学习交流参考

相关推荐
聆风吟º12 小时前
CANN开源项目深度实践:基于amct-toolkit实现自动化模型量化与精度保障策略
运维·开源·自动化·cann
剩下了什么15 小时前
MySQL JSON_SET() 函数
数据库·mysql·json
山峰哥15 小时前
数据库工程与SQL调优——从索引策略到查询优化的深度实践
数据库·sql·性能优化·编辑器
较劲男子汉15 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
java搬砖工-苤-初心不变15 小时前
MySQL 主从复制配置完全指南:从原理到实践
数据库·mysql
风流倜傥唐伯虎16 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
Doro再努力16 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
senijusene16 小时前
Linux软件编程:IO编程,标准IO(1)
linux·运维·服务器
忧郁的橙子.16 小时前
02-本地部署Ollama、Python
linux·运维·服务器
醇氧16 小时前
【linux】查看发行版信息
linux·运维·服务器