数据库的备份

数据库备份分为完整备份和差异备份,首先理解下什么是完整备份和差异备份:

完整备份是指对数据库的全部数据进行备份。

差异备份是指将数据库上一次完整备份以后到现在为止的修改的数据进行备份,因此差异备份不能单独使用,只能先还原上一次的完整备份,然后再还原差异备份。当我们有多个差异备份的时候,只要使用最新的差异备份文件就可以了,最新的差异备份文件会包含之前的差异备份。

sqlserver的备份可以通过脚本来执行,也可以通过图形化界面执行。

1.脚本执行的sql语句如下:

--完整备份数据库
BACKUP DATABASE Test_Bak TO DISK = 'E:\20181029\bak\Test_bak_full.bak' WITH INIT

--差异备份数据库
BACKUP DATABASE Test_Bak TO DISK = 'E:\20181029\bak\Test_bak_diff.bak' WITH INIT, DIFFERENTIAL   --加上DIFFERENTIAL代表差异备份

--事务日志备份
BACKUP LOG Test_Bak TO DISK = 'E:\20181029\bak\Test_bak_log.bak' WITH INIT   --BACKUP LOG表示备份事务日志,BACKUP DATABASE表示完整或差异备份

--备份事务日志,文件名中包含当前时间,适合定时备份
DECLARE @strbackup NVARCHAR(100)
 --改为日期加时间的
 SET @strbackup = 'E:\20181029\bak\Test_bak_log_'
     + REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120), '-', ''), ' ', ''), ':', '') + '.bak'
 BACKUP LOG Test_Bak TO DISK = @strbackup WITH INIT;
 GO

2.图形化界面操作如下:

在数据库中,选择要备份的数据库,右键》》任务》》备份

mysql差异备份脚本 sql数据库差异备份_维护计划

在弹出的窗口中,根据备份类型,选择完整备份,差异备份还是事务日志备份

mysql差异备份脚本 sql数据库差异备份_mysql差异备份如何设定_02

点击确定,即可完成备份文件的生成。

正常我们做备份,是先做一个完整备份,然后再定时做一个差异备份,还原的时候,只要先还原完整备份,然后再还原最新的差异备份即可。

因为备份是经常性的操作,随着数据库越来越大,备份时间要越来越久,每次都做完整备份不切实际,所以差异备份才是我们的选择。

这里推荐两种自动生成差异备份文件的方法:

1.通过sqlserver的维护计划来自动备份

在数据库管理-》维护计划,右键,维护计划向导

mysql差异备份脚本 sql数据库差异备份_mysql差异备份如何设定_03

在弹出的维护计划向导中,按提示一步步操作,生成一个自动备份的维护计划,根据设定的时间,sqlserver数据库会自动执行这个维护计划。

2.通过sql语句+作业的方式自动备份

在数据库SQL Server代理 -》作业,右键新建作业

mysql差异备份脚本 sql数据库差异备份_Test_04

根据提示新建作业,然后将sql语句添加到作业里面,设定每天作业执行时间,数据库就会定时执行这个作业,即可进行自动差异备份。

 

数据库的还原

1.首先还原完整备份,在需要还原的数据库上右键,任务》》还原》》数据库,如图所示。

mysql差异备份脚本 sql数据库差异备份_mysql差异备份如何设定_05

2.在“常规”选项中点击“源设备”选取磁盘上备份好的.bak文件后,勾上“还原”选项的勾。

mysql差异备份脚本 sql数据库差异备份_Test_06

3.在“选项”页面中,勾选上“覆盖现有数据库”,恢复状态,选择第一个“回滚未提交的事务。。。。”,其中在“行数据”和“日志”两个数据行中,务必查看“还原为”的路径是否指向了你需要还原的数据库名字 dbname.mdf和dbname_log.ldf,因为有些被还原的数据库名字和.bak备份文件中的名字不一样,导致还原失败。

mysql差异备份脚本 sql数据库差异备份_数据库_07

4.点击确定后还原完整备份成功。

5.还原差异备份,选择所要还原的数据库,右键,任务》》还原》》文件和文件组,如图所示。

mysql差异备份脚本 sql数据库差异备份_数据库_08

6.其他操作跟还原完整备份一样,在常规和选项选择对应的选项,最后点击确定,还原成功。