当前位置:首页 » 编程语言 » sql增量备份还原
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql增量备份还原

发布时间: 2022-05-12 12:44:54

1. 怎样还备份和还原sql数据库

首先,请问你使用的是什么数据库?(Oracle,SQL,MySQL,PostgreSQL or other DB),因为不同的DB备份的方式种类及命令可能有些不同。
基本来说大体可以分为2类:在线备份和离线备份:
离线备份:
1.可以直接 datafile and related files to your disk。
2.通过数据库带的备份工具或命令进行备份。
在线备份:
1.执行备份命令。
2.通过数据库带的备份工具进行备份。
像oracle还有一套数据库管理系统,可以通过网页浏览,然后进行对db的配置以及备份和恢复。

恢复:通过日志进行恢复!

1、备份位置

在SQL Server上,有多种备份位置可以选择,如本地磁盘,网络磁盘,远程地址,磁带等。

各种备份位置均有自己的优点和缺点。

2、逻辑备份设备

在SQL Server上,可以通过创建逻辑备份设备来完成备份。使用逻辑备份设备的好处是,当变更备份地址时,不需要更改备份脚本,只需要更改逻辑备份设备的定义即可。

创建逻辑备份设备的脚本如下:
SQL code
EXEC sp_addmpdevice @devtype=’disk’,@logicalname=’MYBackup’,@physicalname=’D:\backup\mydb.bak’

删除备份设备的脚本:
SQL code
Sp_dropdevice @logicalname=’MYBackup’

上述脚本只是删除逻辑备份设备的定义,下述脚本将同时删除备份文件:
SQL code
Sp_dropdevice @logicalname=’MYBackup’,@devfile=’DELFILE’

使用逻辑备份设备的方法如下:
SQL code
Backup database mydb to MYBackup

当然,还可在逻辑备份设备上指定过期时间等备份属性,如:

SQL code
Backup database mydb to MYBackup WITH EXPIREDATE=’13/01/2010’
或:
SQL code
BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7

3、备份集与存储

每一份备份包含于一个备份集,而一个备份集包含于一个存储集。通过系统GUI进行备份时,SQL Server会自动指定备份集和存储集,目的则是为了简化管理。用T-SQL显示指定则用如下语法:
SQL code
BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7,

NAME=’FULL’,

MEDIANAME=’ALLBackups’

NAMEs是指备份集名称,MEDIANAME是指存储集名称。

4、全备份
不管恢复模式是哪一个,所有的备份都必须要有一个全备份,特别是日志备份和差异备份,如果没有全备份的话,将无法进行恢复。

简单的全备份脚本如下所示,也可以通过维护计划来指定全备份:
SQL code
BACKUP DATABASE mydb to DISK=’D:\Backup\mydb.bak’

但需要注意的是,上述命令是将数据库备份附加到当前的存在的文件上,如果不存在则创建它,并不会覆盖原有文件。要覆盖同名的备份文件,需要指定INIT参数。

SQL code
BACKUP DATABASE mydb to DISK=’D:\Backup\mydb.bak’ WITH INIT

5、日志备份

在完全恢复模式或者大容量日志恢复模式下,日志备份不仅仅是恢复的需要,同时也是手工管理事务日志文件的一种方式。如果从不进行备份的话,在完全恢复模式或者大容量恢复模式下,事务日志将会持续增长,直至消耗完所在磁盘。

日志备份的脚本如下:
SQL code
BACKUP LOG mydb_log TO DISK=’D:\backup\mydb.trn’

需要养成使用.trn为日志备份的扩展名的习惯。

每个在数据库上的动作都会被安排一个Log Sequence Number (LSN)。如果需要还原到指定的时间点,需要有持续的LSN记录。也就是说,在完全恢复模式或者大容量日志模式下,一个不被打断的事务日志备份链是恢复数据库的基本要求。

6、差异备份
使用日志备份来恢复时,无疑是一个很慢的过程,特别是上一个全备份的历史比较悠久时。使用差异备份,便能缩短恢复时间。事实上,差异备份只是BACKUP DATABASE的一个选项,如下:

SQL code
BACKUP DATABASE mydb TO DISK=’D:\backup\mydb.dif’ WITH DIFFERENTIAL,INIT

进行数据库恢复时,先恢复数据库全备份,再恢复数据库差异备份,最后才恢复日志备份。

差 异备份是与上一次全备份紧密相连的,不管期间有多少次日志备份和差异备份,差异备份还是会从上一次全备开始备份。因此,经常会遇到这样的一种情况,在生产 库上需要临时使用数据库时,便用BACKUP DATABASE … TO DISK=’..’进行了一个备份,下一次的差异备份便会以这回的全备为准,如果过后把这个临时全备删除掉后,后面的差异备份就没用了。

差异备份并不意味着磁盘空间肯定会少,这取决于实际情况。当期间大量操作发生时,差异备份还是会变得很大。
7、错误检测

在备份过程中,备份进程会同时验证数据,或者校验不完整页(torn page),或者验证校验和(checksum)。要使用该功能,需要激活该选项。

不完整页检测(Torn-page dection)仅仅检查每一个页看是否已经写完成。如果发现一个页只有部分被写入,那么就将其标记为torn。

校验和验证(checksum validation)是一种新的页验证机制。它会为每个页添加一个值来表明该页实际的大小。虽然看起来是个代价很高影响性能的操作,但事实上,它的效率非常高,与torn-page差不多。

备份进程在备份数据库时,会通过比较在数据库里的和随着备份页写入硬盘时这两个之间的值来进行验证。但是,这个验证并不是自动完成的,需要显示指定,在GUI页面上是个选项。如果通过T-SQL来备份的话,语句如下:
SQL code
BACKUP DATABASE mydb TO DISK=’D:\data\mydb.bak’ WITH CHECKSUM

如果备份过程中,发现了错误,SQL Server会错误信息写入MSDB上的SUSPECT_PAGE表里面。同时,在默认情况下,备份行为会停止的(STOP_ON_ERROR),以便管理员排查错误。

但 备份过程中的校验和验证还有另外一个选项(CONTINUE_ON_ERROR),也就是说,如果发现错误,备份过程并不会中断,而是将错误页信息记录在 MSDB..SUSPECT_PAGE上而已。需要注意的是,SUSPECT_PAGE表是有行限制的,最多只能达到1000行,如果达到了的话,备份同 样会失败。

激活校验和验证的话,很明显会影响备份的性能。但还是很有必要的。

8、安全备份

完全备份和日志备份语句还支持使用密码属性,如:

SQL code
BACKUP DATABASE mydb TO DISK=’D:\mydb.bak’ WITH PASSWORD=’mydb’

所指定的密码是很容易破解的。因此,如果确实需要对某些备份数据进行加密的话,可以将备份存放于加密的文件系统或者其它安全的存储设备上。

同时,SQL Server还提供了对真实列进行加密的功能。该加密功能是工业标准。

9、条带备份

有些情况下,单独一个硬盘无法存储一个完整的数据库备份时,可以将数据库备份分成多个部分存储在不同的磁盘上,这种备份方式成为条带备份。使用条带备份的优点很明确,就是能很好的利用空间,但如果某部分备份丢失或者损坏,那整个备份将无效。

其语句如下:
SQL code
BACKUP DATABASE mydb TO DISK=’D:\mydb.bak’,

DISK=’E:\mydb.bak’ WITH INIT,CHECKSUM,

CONTINUE_ON_ERROR

上述D盘和E盘上的备份是不可分割的。

10、镜像备份
与条带备份在多个磁盘上保留同一份备份不同的是,镜像备份是在不同磁盘上保留多份备份。其语句如下:
SQL code
BACKUP DATABASE mydb TO DISK=’D:\mydb.bak’

MIRROR TO DISK=’E:\mydb.bak’

WITH INIT,CHECKSUM,CONTINUE_ON_ERROR

在实际情况下,对日志备份采取镜像备份方式会比较合适。

11、COPY-ONLY 备份
在差异备份里曾提到过,差异备份是建立在上一个全备份的基础上的。因此如果在一个事先安排好的备份计划里,如果在全备份和差异备份之间再进行了一次全备份后,其差异备份会被打断,如果把临时全备份删除掉后,就产生了数据丢失。

在SQL SERVER 2005以后,SQL SERVER提供了一个选项-only.使用-only选项进行的全备份便不会打算原先的备份计划,语句如下:
SQL code
BACKUP DATABASE mydb TO DISK=’D:\mydb.bak’

WITH INIT,CHECKSUM,COPY_ONLY

三、文件和文件组备份

在SQL SERVER 7.0以后,SQL Server提供了filegroup的概念。文件组不仅仅提供了一个逻辑的存储地址,还允许将不同的表和索引放在不同的文件组上来提高性能和减少备份时间。

在数据存储概述上,提到了数据库有三类数据文件,一般来说,数据库至少需要两个(.mdf和.ldf)或者更多的文件。SQL Server不仅允许有多个文件存在(.ldf),还允许多个文件组存在。

一个文件组可以有多个文件,每个文件需要仔细规划好初始大小及增量。

1、默认文件组

在创建对象时,如果未明确指定文件组,那么该对象将会存放在默认的文件组上。在默认情况下,默认的文件组是primary,但由于primary文件组不仅可以包含用户数据,同时还存储着数据库结构等技术信息,因此一般建议添加额外的一个文件组,并将其指定为默认文件组。

SQL Server只能有一个默认的文件组。

修改默认文件组的语句如下:
SQL code
ALTER DATABASE mydb MODIFY FILEGROUP mydb DEFAULT;

2、为对象指定文件组
当创建表或者索引时,不管是用户还是系统都需要将表或索引放在某个文件组上。如果在创建表或索引时指定文件组,那么表或索引将会存储在指定的文件组上,而不是默认的文件组。

其指定语句如下:
SQL code
CREATE TABLE test( [id] int,[notes] text) on mydbdata

也可以通过GUI创建表的页面来指定文件组。

3、将对象迁移至指定文件组
如果需要变更对象的存储位置,最简单的方式则是通过GUI属性页面来进行修改通过该方法,可以直观的看到对象的迁移过程。

同时也可以通过T-SQL来修改,例如:
SQL code
ALTER TABLE test drop constraint PK_test WITH (MOVE TO DATA)

4、备份数据文件
备份数据文件同样可以通过BACKUP DATABASE语句来实现。如下:
SQL code
BACKUP DATABASE mydb FILE=’D:\Data\mydb.ndf’ TO DISK=’E:\Backup\mydbdata.bak’

上述语句相当于数据文件级别的全备份,与数据库级别的备份类似,文件级别上的备份也有差异备份,当然前提是要有相对应的文件全备份。

差异备份的语句如下:
SQL code
BACKUP DATABASE mydb FILE=’D:\Data\mydb.ndf’

WITH DIFFERENTIAL

TO DISK=’E:\Backup\mydbdata_dif.bak’

5、备份文件组
与单独备份文件类似,也可以对文件组进行类似的备份操作。备份文件组的方式也有两种,一种是通过GUI界面指定,一种则是通过T-SQL。

T-SQL的语句如下:
SQL code
BACKUP DATABASE mydb FILEGROUP=’PRIMARY’ TO DISK=’E:\Backup\mydbpri.bak’

6、不完全备份(partial backup)
在文件组备份上,不完全备份其实相当于完全备份,可以通过指定关键字READ_WRITE_FILEGROUPS来实现不完全备份。

语句如下:
SQL code
BACKUP DATABASE mydb READ_WRITE_FILEGROUPS TO DISK=’D:\mydb.bak’

2. SqlServer2005怎样备份,还原

常规的sqlserver2005的备份和还原教程非常多,这里不给您不详细介绍了,只要单击:开始→程序→Microsoft SQL Server 2005→“SQL Server Management Studio”;选择要备份的数据库,右击—任务—备份 接下来一步步操作就可以了。
现在给您介绍的是一个自动增量备份的工具,不需要每次都手动去操作,恢复起来也超快。下载一个多备份客户端,启动进入如下图:

1、本地备份:填写实例名、用户名和密码就可以进行连接备份了
2、备份远程mssql,这个功能把实例改写为ip就行。
为什么推荐这个工具?主要是备份完成后,你可以设置定期,按月/周/日/时的频率进行自动增量备份,不需要手工繁琐操作,要还原的时候,直接点击恢复选择备份日期进行回滚,你再也不担心数据库数据会丢失了

3. sqlserver增量备份的数据如果恢复不是上一次完全备份的版本,能恢复吗

这是因为备份的数据文件是高版本的sql server,导入当前的数据库比备份的版本还要低,容易出现数据不兼容的情况,所以为了保证数据的可靠性,系统提示无法恢复。
解决办法:升级当前sql server数据库的版本,保证跟备份数据库是同一个版本或者更高就可以了。

4. sql server 数据库怎么进行增量备份做过完整备份。

增量就是差异。。。先做个完整的备份,然后以后每隔多长时间(自己定)做一个差异备份。需要还原时,在还原过程中勾选那个完整的备份和之后所有的差异备份,就相当于最后一个差异备份的时间点的完整备份。用差异备份节约硬盘空间。

5. SQL server中备份与还原中这四个是什么意思啊谢谢

完全备份:
备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件。(在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份,换言之,清除存档属性)。完全备份也叫完整备份。
差异备份:
差异备份是针对完全备份:备份上一次的完全备份后发生变化的所有文件。(差异备份过程中,只备份有标记的那些选中的文件和文件夹。它不清除标记,即:备份后不标记为已备份文件,换言之,不清除存档属性)。
增量备份:
增量备份是针对于上一次备份(无论是哪种备份):备份上一次备份后,所有发生变化的文件。(增量备份过程中,只备份有标记的选中的文件和文件夹,它清除标记,即:备份后标记文件,换言之,清除存档属性。)
事务日志备份:

特定事务日志备份之前执行的完整数据库备份和上次差异备份(如果有)。在完整数据库备份之后执行的所有事务日志备份或在特定事务日志备份之前执行的差异备
份(如果您还原了差异备份)。如果你设置了恢复模式为【简单】,你将无法使用【事务日志】备份。SQL
Server
2000

SQL
Server
2005:
创建事务日志备份,您必须使用完整恢复或大容量日志记录恢复模型。

6. 如何让SQL数据库进行增量备份

在SQL Server 2000中,假定我们拥有一个数据库为:Test, 现在需要它每天19:00自动进行一次备份,并且以后一旦发生数据库错误,我们都可以通过备份文件将数据库恢复到任何一个备份过的时刻点。

备份步骤:
1. 在“SQL Server企业管理器”中注册数据库所在的服务器,注意要使用sa用户名和口令,否则以后执行备份调度的时候,会出现权限不足,导致不能进行备份。
2. 确保该服务器的SQL Server Agent服务是开启的,因为所有的调度都是通过该代理进行执行的。
3. 在“SQL Server企业管理器”中选中Test数据库,右键打开“备份数据库”窗口,指定一个新的文件Test-daily.bak,选择“完全”进行一次完全备份。
4. 再次打开“备份数据库”窗口,这次使用“差异备份”,“重写”选项设置为“追加到媒体”,目的文件仍然是前面步骤所指定的Test-daily.bak,并在“调度”选项中设置为每天的19:00,这样,SQL Server会在每天的19:00将数据库自上次备份以来发生的变化,以增量备份的方式追加到Test-daily.bak文件中。(测试的时候,可以设置为每天的每1分钟进行一次备份,以便可以很快的看到备份结果)

在需要进行数据库恢复的时候,可以按照如下还原步骤进行操作:
1. 新建一个数据库,比如名为Back, 右键打开“还原数据库”窗口,选择“从设备”进行还原,然后在“选择设备…”中选定备份所使用的Test-daily.bak文件,回到“还原数据库”窗口,“备份号”默认为1(对应的就是备份步骤3中的初次完全备份),不必更改。在“选项”标签页中,选中“强制还原”,最关键的一步是,在“恢复完成状态”中,选中第2或第3项,即保证“能还原其它事务日志”,这样还原之后,这个新的数据库就回到了我们进行第一次完全备份时候的状态,此时,该Back数据库将处于“正在装载”或“只读”的状态,没有关系,这是正常的,因为我们接下来还需要通过事务日志将该数据库恢复到指定的某个状态。
2. 再次打开“还原数据库”窗口,同样选择“从设备”进行还原,然后在“选择设备…”中选定备份所使用的Test-daily.bak文件,回到“还原数据库”窗口,点击“备份号”后面的“查看内容…”按钮,在新的窗口中,可以看到里面列出了每天19:00左右备份过的备份集(除了最顶上一个是我们初次的完全备份集,其它都是每天的增量备份集),选中想要恢复的某个备份集,单击“确定”回到主窗口,可以看到“还原备份集”默认选中的是“差异”,再单击确定,这样,Back数据库就恢复到了我们选定的某个备份集了。
上述还原步骤可以重复进行,直到我们找到确切需要的某个备份集。

另外,恢复后的数据库名称是Back,如果想将其改名为Test,可以执行
EXEC sp_renamedb 'Back', 'Test'
在重命名数据库之前,应该确保没有人使用该数据库,而且数据库设置为单用户模式。

补充:需要在"备份数据库"->"常规"选项卡里选中"重写现有媒体",这样在"选项"选项卡里才能设定"备份集到期时间",并且发现,这样设定好"到期时间"之后,即使将"重写现有媒体"改为"追加到媒体",所设定的"到期时间"还是有效的,这可以在调度里的"步骤"脚本中看出来,如:
BACKUP DATABASE [model] TO DISK = N'D:\test.bak' WITH NOINIT , NOUNLOAD , RETAINDAYS = 1, DIFFERENTIAL , NAME = N'model 备份', NOSKIP , STATS = 10, NOFORMAT,通过这种方式应该可以实现保留最近N天的备份,测试中....

7. sql2008每天的增量备份需要一个一个还原吗

你好的
备份也有两种方式
也就是你说的那两种,一个是要逐天恢复
另一个是用一个全备加最后一天恢复
主要看你选择的备份方式了

8. 如何通过备份文件恢复SQL Server数据库

1. 下载2014-02-10 07:16的全量备份文件并解压出要恢复的数据库备份文件。

2. 以NORECOVERY的方式还原2014-02-10 07:16的全量备份,操作SQL语句如下:

还原成功后,数据库处于Restoring状态。

3. 继续以NORECOVERY的方式还原2014-02-12
06:51的增量备份,操作SQL语句如下:

还原成功后,数据库继续处于Restoring状态。

4. 日志备份文件的下载

RDS 控制台 - 备份恢复 - 数据备份,选择需要下载的备份集,点击“下载”。

点击“复制内网地址” 或 “复制外网地址” 来获取备份的 内网 或 外网 下载地址。

日志备份的地址在 RDS 控制台 - 备份恢复 - 日志备份
获取:

5. 解压备份文件

解压备份文件前,要先下载好解压工具 rds_backup_extract

解压备份文件:
bash rds_backup_extract -f /home/mysql/backup/hins575175_xtra_20150429091224.tar.gz -C /home/mysql/data

6. 以RECOVERY(默认方式)的方式还原日志

日志还原成功后,数据库处于正常状态,这时数据库中的数据就还原到了要恢复的时间点。

9. plsqldev怎么备份和还原数据库

一、 导出/导入(Export/Import)
利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。

1、 简单导出数据(Export)和导入数据(Import):

Oracle支持三种方式类型的输出:

(1)、表方式(T方式),将指定表的数据导出。
(2)、用户方式(U方式),将指定用户的所有对象及数据导出。
(3)、全库方式(Full方式),瘵数据库中的所有对象导出。
数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。

2、 增量导出/导入:

增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。

增量导出包括三种类型:

(1)、“完全”增量导出(Complete)即备份三个数据库,比如:exp system/manager inctype=complete file=040731.dmp。
(2)、“增量型”增量导出备份上一次备份后改变的数据,比如:exp system/manager inctype=incremental file=040731.dmp。
(3)、“累积型”增量导出累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。比如:exp system/manager inctype=cumulative file=040731.dmp。
数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。

比如数据库的被封任务可以做如下安排:

星期一:完全备份(A) 星期二:增量导出(B) 星期三:增量导出(C)

星期四:增量导出(D) 星期五:累计导出(E) 星期六:增量导出(F)

星期日:增量导出(G)。

如果在星期日,数据库遭到意外破坏,数据库管理员可按一下步骤来回复数据库:

第一步:用命令CREATE DATABASE重新生成数据库结构;

第二步:创建一个足够大的附加回滚;

第三步:完全增量导入A:imp system/manager inctype=RESTORE FULL=y FILE=A

第四步:累计增量导入E:imp system/manager inctype=RESTORE FULL=Y FILE=E

第五步:最近增量导入F:imp system/manager inctype=RESTORE FULL=Y FILE=F

二、 冷备份

冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份时最快和最安全的方法。冷备份的优点是:

1、 是非常快速的备份方法(只需拷文件);

2、 容易归档(简单拷贝即可);

3、 容易恢复到某个时间点上(只需将文件再拷贝回去);

4、 能与归档方法相结合,做数据库“最佳状态”的恢复;

5、 低度维护,高度安全。

但冷备份也有如下不足:

1、 单独使用时,只能提供到“某一时间点上”的恢复;

2、 再实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,在冷备份过程中,数据库必须是关闭状态;

3、 若磁盘空间有限,只能拷贝到磁带等其他外部存储设备上,速度会很慢;

4、 不能按表或按用户恢复

10. SQL SERVER 有增量备份吗

有的.
1. 先做一个完整备份,然后再做差异备份,差异备份的文件还是使用完整备份的那个文件,这样在完整备份集中就会存在两个
备份文件。还原的时候,都选中这个差异文件,还原选项选择“覆盖现有数据库”和“回滚未提交的事务......”这两项即可.

2. 先做一个完整备份,然后再做一个差异备份,差异备份的文件不使用完整备份的那个文件,自己再新建一个差异备份文件。
这样磁盘上针对这两次备份就会存在两个备份文件。还原这两个备份文件时,先选择完整备份的文件,还原选项里选择
“覆盖现有数据库”和“不对数据库执行任何操作....” 完成还原后,会发现被还原的数据库名呈现“DBName(正在还原中...)”
针对这个数据库再进行一次还原,选择差异备份文件后,直接点确定即可。