在操作数据库时,难免会发生一些意外情况造成数据丢失。为了确保数据的安全,需要对数据库中的数据进行备份,这样当遇到数据库中数据丢失或出错的情况时,就可以将数据还原,从而最大限度地降低损失。
MySQL的备份方法可以根据不同的方式进行划分:
- 根据备份的方法可以划分为物理备份和逻辑备份
数据库从存储上看主要是由数据库的物理数据文件 、日志文件及配置文件等组成。数据库的物理备份是指直接复制这些数据库的文件。数据库逻辑备份是指备份软件按照最初设计的逻辑关系,以数据库的逻辑结构对象为单位,将数据库中的数据按照预定义的逻辑关联格式生成相关的文本文件,以达到备份的目的。简单来说就是使用备份工具从数据库导出数据,生成一个或多个备份文件。 - 根据备份的数据集范围可以划分为全量备份、增量备份和差异备份
全量备份是指将整个数据库内容做完整的备份,即对整个数据库进行备份。全量备份包含备份数据库结构和文件结构等,它保存的是备份完成时刻的数据库快照。全量备份操作简单,但数据存在大量的重复;占用大量的空间、备份与恢复时间长。增量备份是指仅备份自上一次全量备份或增量备份之后所增加的数据内容,而差异备份是指仅备份自上一个全量备份之后所增加的内容。 - 根据备份时数据服务是否在线可以划分为热备份和冷备份
热备份是在数据库运行的情况下执行的数据库备份。热备份最大的优点是备份时数据库仍可以使用,并且恢复是快速的,大多数情况下在数据库工作时恢复。冷备份是指在数据库已经正常关闭的情况下进行的备份。由于此时数据库已经关闭,冷备份可以将数据库的关键性文件复制到另外的存储位置。因为只是复制文件,所以冷备份速度非常快。在执行恢复时,只需要将文件再复制回去就可以很容易恢复到某个时间点上。冷备份最大的缺点是在冷备份过程中,数据库必须是关闭状态,不能提供外部的访问。
一、数据备份
MySQL提供了一个mysqldump命令,它可以将数据库导出成SQL脚本,以实现数据库的备份。
mysqldump命令可以备份单个数据库、多个数据库和所有数据库。
1. 备份单个数据库
mysqldump -uUSERNAME -pPASSWORD db_name [table_name1 [table_name2 ... ]] > filename.sql
- USERNAME:MySQL用户名
- PASSWORD:用户对应的密码。注意,参数p与密码之间不能有空格。出于安全考虑,也可以不在命令中输入密码,而是在执行不带密码的上述命令时输入密码。
- db_name:需要备份的数据库名称
- table_name:数据库中的表名,可以指定一个表或多个表,多个表用空格分隔;如果不指定表名,则备份整个数据库。
- filename.sql:备份文件的名称,文件名前可以加上绝对路径
mysqldump是mysql的bin目录中的工具,使用它备份数据库时,不需要登录MySQL数据库,直接在命令行或终端窗口执行命令即可。
2. 备份多个数据库
mysqldump -uUSERNAME -pPASSWORD --database dbname1 [dbname2 ...] > filename.sql
- --database:该参数指定需要备份的数据库名称,至少指定一个,如果有多个数据库,用空格隔开。
3. 备份所有数据库
mysqldump -uUSERNAME -pPASSWORD --all-databases > filename.sql
如果使用–all-databases参数备份了所有数据库,那么在还原数据库时,不需要创建数据库并指定要操作的数据库。
二、数据还原
1. mysql命令
mysql命令还原数据的语法格式:
mysql -uUSERNAME -pPASSWORD [dbname] < filename.sql
- dbname:要还原的数据库名称。如果备份的filename.sql文件中包含创建数据库的语句,则不需要指定数据库;否则应该指定数据库名称。
2. source命令
source命令还原数据的语法格式:
mysql> source filename.sql
使用mysql命令还原数据时不需要登录数据库,使用source命令还原数据时,需要先登录数据库。