Bootstrap

事务、数据备份与恢复

一、事务

是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句,一个程序,通常,一个程序包含多个事务

1.事务的特性

(1)A(Atomicity)原子性(整体性)

事务必须是原子工作单元,对于其数据修改,要么全都执行,要么全都不执行。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。

(2)C(Consistency)一致性

事务在完成时,必须使所有的数据都保持一致状态,符合完整性要求。
一个表中数据修改后,另外一个有外键约束的表中相关数据必须修改。

(3)I(Isolation)隔离性

隔离性指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。
由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。

(4)D(Durability)持久性

持久性指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。
即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。

2.创建事件

创建事件可以使用CREATE EVENT语句。其基本语法格式如下:

CREATE EVENT [IF NOT EXISTS] <事件名>
ON SCHEDULE <时间调度>
[ON COMPLETION [NOT] PRESERVE]
[ENABLE |DISABLE |DISABLE ON SLAVE]
[COMMENT '注释内容']
DO <SQL语句>;

event_name:事件名(或定时器名),最大长度64个字符,若未指定,则默认为当前的MySQL用户名;
schedule:限定执行时间;
ON COMPLETION [NOT] PRESERVE:表示是否需要循环使用这个Event;
sql_statement:要执行的SQL语句(也可以使用存储过程代替传统的SQL语句);
comment:对该时间调度器的一个注释,最大长度64个字符

3.管理事件

(1) 查看事件

查看当前是否已开启事件调度器,可执行如下SQL语句:

show variables like 'event_scheduler';
(2) 开启事件

开启事件可执行如下SQL语句:

set global event_scheduler = 1;set global event_scheduler = ON;

通常,要使用定时器,GLOBAL event_scheduler必须为on或者是1,默认为off或0。

(3) 修改事件

事件在创建后可以通过ALTER EVENT语句来修改其定义和相关属性。其基本语法格式如下:

ALTER EVENT <事件名>
[ON SCHEDULE <时间调度>]
[ON COMPLETION [NOT] PRESERVE]
[RENAME TO <新事件名>]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT '注释内容']
[DO <SQL语句>];
(4) 删除事件

删除已经创建的事件可以使用DROP EVENT语句来实现。其基本语法格式如下:

DROP EVENT [IF EXISTS] <事件名>;

二、数据备份

1.备份类型:①完整数据库备份;②差异数据库备份。

(1)完整数据库备份

完整数据库备份将备份整个数据库,包括事务日志部分(以便可以恢复整个备份)。
创建完整数据库备份是单一操作,通常定期进行。如果数据库主要是只进行读操作,那么完整数据库备份能有效地防止数据丢失。
需要快速备份的小数据库可使用完整数据库备份;大型数据库可以用差异数据库备份来补充完整数据库备份。

(2)差异数据库备份

差异数据库备份只备份自上一次完整数据库备份后发生改变的内容,以及在差异数据库备份过程中所发生的所有活动。
差异数据库备份基于以前的完整数据库备份,这样的完整数据库备份称为“基准备份”。
差异备份比完整备份更小、更快,可以简化频繁的备份操作,减少数据丢失的风险。
可定期执行新的完整备份以提供新的差异基准。

2.常用备份设备:

磁盘备份设备:硬盘、u盘、光盘等
磁带备份设备:以磁带为存储介质,由磁带机及其控制器组成的存储设备。

(1)使用mysqldump命令备份数据

使用mysqldump命令备份数据库或表。
其命令格式如下:

MYSQLDUMP –u <用户名> –h <主机名> -p <数据库名>[表名 [表名…]] ><备份文件的名>.sql
(2)使用mysql的数据导出功能

常用的数据导出格式有:
第一:SQL文件格式。包括基于该数据库下的所有数据表、存储过程、函数和触发器都备份。建议采用这种格式。
第二:Excel文件格式。只包括基于该数据库下的所有数据表,不含存储过程、函数和触发器。
第三:XML文件格式。只备份基于该数据库下的所有数据表的数据,不含表结构,也不含存储过程、函数和触发器。
第四:HTML文件格式。包括基于该数据库下的所有数据表(表格形式)、存储过程、函数和触发器(程序形式)都备份。也可以采用这种格式。

(3)使用第三方软件的备份功能

三、数据恢复

(1)使用mysql命令恢复数据

命令格式如下:

MYSQL –u <用户名> –p [数据库名]<文件名.sql
(2)使用mysql的数据导入功能

常用的数据导入格式有:
第一:SQL文件格式。包括基于该数据库下的所有数据表、存储过程、函数和触发器都可以恢复。建议采用这种格式。
第二:Excel文件格式。只包括基于该数据库下的所有数据表,不含存储过程、函数和触发器。
注:
不支持恢复XML文件格式。只能备份基于该数据库下的所有数据表的数据,不含表结构,也不含存储过程、函数和触发器。但不支持恢复。
不支持恢复HTML文件格式。只能备份基于该数据库下的所有数据表(表格形式)、存储过程、函数和触发器(程序形式)。但不支持恢复。

(3)使用第三方软件的恢复功能
;