有3种备份方式:1、冷备份,也称离线备份,是指在关闭数据库并且数据库不能更新的状况下进行的数据库完整备份,并可对数据进行指定恢复。2、热备份,也称联机备份,是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。3、逻辑备份,是指使用软件技术从数据库中导出数据并写入一个输出文件,该文件的格式一般与原数据库的文件格式不同,只是原数据库中数据内容的一个映像。
本教程操作环境:windows7系统、Dell G3电脑。
按数据备份时数据库状态的不同有3种备份方式:冷备份(离线备份)、热备份(联机备份)、逻辑备份。
数据库的冷备份
冷备份(cold backup),也被称为离线备份,是指在关闭数据库并且数据库不能更新的状况下进行的数据库完整备份,并可对数据进行指定恢复。
这样做的好处是可以保证数据库的完整性,备份过程简单且恢复速度相对快一些,但是关闭数据库会影响现有业务的进行。服务器停止运行期间,用户不能再继续访问网站。例如,一些电商网站店庆促销时,如果为了备份要停库,那么带来的代价损失将不可估量。所以冷备一般用于不是很重要、非核心的业务上面。
冷备份是最快和最安全的方法。冷备份的优点是:
1、 是非常快速的备份方法(只需拷文件)
2、 轻易归档(简单拷贝即可)
3、 轻易恢复到某个时间点上(只需将文件再拷贝回去)
4、 能与归档方法相结合,做数据库“最佳状态”的恢复。
5、 低度维护,高度安全。
但冷备份也有如下不足:
1、 单独使用时,只能提供到“某一时间点上”的恢复。
2、 再实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,在冷备份过程中,数据库必须是关闭状态。
3、 若磁盘空间有限,只能拷贝到磁带等其他外部存储设备上,速度会很慢。
4、 不能按表或按用户恢复。
假如可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。
冷备份中必须拷贝的文件包括:
1、 所有数据文件
2、 所有控制文件
3、所有联机REDO LOG文件
4、 Init.ora文件(可选)
值得注重的使冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的。
数据库的热备份
热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。即热备份是系统处于正常运转状态下的备份。所以,如果你有一个冷备份而且又有热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog( ) 方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。
热备份的命令文件由三部分组成:
1. 数据文件一个表空间一个表空间的备份。
(1) 设置表空间为备份状态
(2) 备份表空间的数据文件
(3) 回复表空间为正常状态
2. 备份归档log文件
(1) 临时停止归档进程
(2) log下那些在archive rede log目标目录中的文件
(3) 重新启动archive进程
(4) 备份归档的redo log文件
3. 用alter database bachup controlfile命令来备份控制文件热备份的优点是:
可在表空间或数据库文件级备份,备份的时间短。
备份时数据库仍可使用。
可达到秒级恢复(恢复到某一时间点上)。
可对几乎所有数据库实体做恢复
恢复是快速的,在大多数情况下爱数据库仍工作时恢复。
热备份的不足是:
1. 不能出错,否则后果严重
2. 若热备份不成功,所得结果不可用于时间点的恢复
3. 因难于维护,所以要非凡仔细小心,不答应“以失败告终”。
数据库的逻辑备份
逻辑备份是指使用软件技术从数据库中导出数据并写入一个输出文件,该文件的格式一般与原数据库的文件格式不同,只是原数据库中数据内容的一个映像。因此,逻辑备份文件只能用来对数据库进行逻辑恢复,即数据导入,而不能按数据库原来的存储特征进行物理恢复。逻辑备份一般用于增量备份,即备份那些在上次备份以后改变的数据。
逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库,效率相对较低。
**本质:**导出的是SQL语句文件
**优点:**不论是什么存储引擎,都可以用mysqldump备成SQL语句
**缺点:**速度较慢,导入时可能会出现格式不兼容的突发情况,无法做增量备份和累计增量备份。
提供三种级别的备份,表级,库级和全库级
注意:
数据一致,服务可用:如何保证数据一致,在备份的时候进行锁表会自动锁表。锁住之后在备份。
本身为客户端工具: 远程备份语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql 本地备份语法: # mysqldump -u用户名 -p密码 数据库名 > 备份文件.sql
常用备份选项
-A, --all-databases
备份所有库
例:mysqldump -uroot -p'QianFeng@123' -A > /opt/a.sql
解析:-A后面不需要指定东西,直接备份整个库
-B, –databases bbs test mysql
备份多个数据库
例:mysqldump -uroot -p'QianFeng@123' -B db1 db2 db3 > /opt/a.sql
解析:-B 后面可以跟多个数据库,使用空格隔开
导出指定表
例:mysqldump -uroot -p'QianFeng@123' db1 table1 table2 > /opt/a.sql
解析:如果不加-B,后面默认是 库名 表名 表名 ,后面的表必须是前面的库里面的,库名是唯一的,但是表名不是。
–no-data,-d
不导出任何数据,只导出数据库表结构。
例:mysqldump -uroot -p'QianFeng@123' db1 -d > /opt/a.sql
解析:-d 前面需要指定好我们要备份什么数据,-d指的是只导出表的结构。
更多相关知识,请访问常见问题栏目!
以上是按数据备份时数据库状态的不同有几种备份方式的详细内容。更多信息请关注PHP中文网其他相关文章!