MySQL实验九创建事件、数据库备份和恢复

本文档详细介绍了如何在MySQL中创建事件,包括立即执行、定时执行和按季度执行的事件,并展示了如何使用mysqldump工具备份和还原数据库。此外,还涵盖了数据表的导出及使用事件定期导出数据的方法。实验内容涵盖数据库管理的基础操作,旨在提升对MySQL事件管理和数据备份恢复的理解与实践能力。
摘要由CSDN通过智能技术生成

MySQL实验九创建事件、数据库备份和恢复

一实验目的

  1. 掌握 MySQL 中事件的概念;

  2. 熟悉事件的管理;

  3. 掌握事件的创建和修改;

  4. 掌握使用 mysqldump 工具备份数据库、数据表的方法;

  5. 掌握使用 mysql 还原数据库的方法;

  6. 掌握常用的数据导出方法;

  7. 使用事件定期导出表中的数据;

二实验平台

2.1 操作系统:

Windows XP,Windows Server 2003,Windows 7 或者 Windows 10;

2.2 数据库

MySQL Server 8.0,MySQL Workbench、phpMyAdmin、Navicat for mySQL、

MySQL 等客户端工具;

三实验内容和要求

任务中涉及的数据表是在员工医疗保险系统(实验 03)中给出的表。

3.1 创建事件

(1) 检查MySQL数据库服务器是否开启了事件,如果没有开启,先开启事件;

show variables like 'event_scheduler';
select @@event_scheduler;
show processlist;
-- 若没用开启事件
set global event_scheduler =ON;

image-20210612210959793image-20210612210920521image-20210612210940042

(2) 在员工医疗保险系统(实验 03)数据库中,新建表 EventLog,该表至少

包含如下三个列:编号列,自动增长列,主键;事件名称列,记录被激活的事件

的名称;激活时间列,记录事件被激活的时间值。列名和列的数据类型自行设计;

-- (2)
create table EventLog (
	id int auto_increment primary key comment '编号',
    eventName varchar(20) comment '事件名称',
    createTime datetime default current_timestamp comment '激活时间'
);

(3) 在员工医疗保险系统(实验 03)数据库中创建事件 uevent1,该事件于被

创建时间延后 4 分钟激活,事件中要执行的代码是将事件名称和激活时间等内容

插入到 EventLog 表中,写出创建该事件的代码;

-- (3)
create event if not exists uevent1
on schedule 
at current_timestamp()+interval 4 minute
do insert into Eventlog (eventName) values ('uevent1激活');

image-20210612214213322

(4) 在员工医疗保险系统(实验 03)数据库中创建事件 uevent2,该事件每隔

1 分钟执行一次,从当天的下午 4:20 开始,到 4:30 结束,事件中要执行的代码是

将事件名称和激活时间等内容插入到 EventLog 表中,写出创建该事件的代码;

-- (4)
create event if not exists uevent2
on schedule 
every 1 minute
starts '2021-6-12 21:40:00'
ends '2021-6-12 21:50:00'
do insert into Eventlog (eventName) values ('uevent2激活');

image-20210612215310479

(5) 在员工医疗保险系统(实验 03)数据库中创建事件 uevent3,该事件每隔

1 个季度执行一次,在每个季度的第一天的凌晨 1:00 点开始,事件中要执行的代

码是将事件名称和激活时间等内容插入到EventLog表中,写出创建该事件的代码;

创建完成上述三个事件后,查询 EventLog 表,看看相关的事件有没有被激活过。

-- (5)
create event if not exists uevent3
on schedule 
every 1 quarter
starts '2021-1-1 1:00:00'
do insert into Eventlog (eventName) values ('uevent3激活');

3.2 备份数据库

(1) 使用 mysqldump 工具备份员工医疗保险系统(实验 03 创建的 7 个表)数

据库中的 business 表;备份的文件名为 backbusiness.sql;

遇到问题:

电脑装多个mysql服务出来error2003连接不上mysql服务的原因

所以加上了主机名端口来筛选出是哪个mysql服务

接着测试失败因为数据库名为中文的 db_test_学号

mysqldump -h127.0.0.1 -P3333 -uroot -p sakila actor >\backvysubess.sql

又因为数据库名字不能重命名只能备份后重新载入

故暂时采用另外创建一个数据库T把表复制过去并重新mysqldump备份下来

create database T character set utf8 collate  utf8_general_ci;
select table_name from information_schema.tables where table_schema ='db_test_学号';
rename table db_test_学号.bussiness to T.bussiness;

mysqldump -h127.0.0.1 -P3333 -uroot -p T bussiness >\backbusiness.sql

注意:cmd命令提示符要用管理员身份打开

image-20210612232602554

image-20210612234453841

发现是一开始创建数据库名字db_test_学号搞错了 故

image-20210616084301182

(2) 使用 mysqldump 工具备份员工医疗保险系统(实验 03 创建的 7 个表)数

据库,备份的文件名为 backdb03.sql;

-- 同上

(3) 使用 mysqldump 工具备份当前 MySQL 数据库服务器上的所有数据库,备

份的文件名为 backdall.sql;

-- 语句
mysqldump -u username -p --all-databases > BackupName.sql
-- 实例
mysqldump -h127.0.0.1 -P3333 -uroot -p --all-databases >\all.sql

完成上面的备份操作以后,检查备份生成的文件的内容。

3.3 使用 mysql 命令还原数据库

(1) 使用 mysql 命令把上面 3.2 备份的 business 表,还原到其他数据库中;

mysql -h127.0.0.1 -P3333 -uroot -p test1 <C:\Users\86134\Documents\dumps\Dump20210616

(2) 使用 mysql 命令还原上面 3.2 备份的员工医疗保险系统数据库;

(3) 使用 mysql 命令还原上面 3.2 备份的所有数据库;

每次执行还原后,检查还原后的结果。

image-20210616085345352

3.4 表数据的导出

(1) 使用 Select…… Into outfile 导出员工医疗保险系统(实验 03 创建的 7 个

表)数据库中的 card 表中的全部数据,导出的文件名为 card.txt;

select * from card into outfile 'C:\Users\86134\Desktop\card.txt';

image-20210616091153264

(2) 使用 mysqldump 命令导出员工医疗保险系统(实验 03 创建的 7 个表)数

据库中的 staff 表中的全部数据,导出的文件名为 staff.txt;

(3) 使用 mysql 命令导出员工医疗保险系统(实验 03 创建的 7 个表)数据库

中的 see 表中的全部数据,导出的文件名为 see.txt;

每次完成数据导出以后,查看导出的文件内容是否正确。

3.5 定期导出表数据

在每个月的第一天的凌晨 1 点钟,导出员工医疗保险系统(实验 03 创建的 7

个表)数据库中的 consume 表中的全部数据,导出的文件名为 consume_X.txt,其中

X 的值由导出的时间决定,例如导出时间是:‘2017-05-01 15:22:50’,则导出的文

件名为 consume_2017_05_01_15_22_50.txt;文件中字段之间用“,”隔开,字符型

数据用单引号括起来,每条记录占一行。(提示:先创建一个立即执行的事件,测

试该事件中的代码能否按要求导出表中的数据,再把该事件定义为根据上面要求

调度的事件。)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值