日记备份和反差备份还原中的多如牛毛难点示例

RESTORE LOG beifen FROM DISK = N’beifen_20180913′ WITH STOPAT =
N’2018-09-13 13:50′ , RECOVERY

GO

–下边是用以日志备份和异样备份还原中易犯的一无是处

在其余文件组上创立表
CREATE TABLE db.dbo.ta(id int) ON [PRIMARY]
CREATE TABLE db.dbo.tc(id int) ON db_fg2
INSERT db.dbo.tb SELECT id FROM sysobjects
–备份各类文件组,并且备份工作日志
BACKUP DATABASE db FILEGROUP=’PRIMARY’ TO DISK=’c:\db_primary.bak’
WITH FORMAT
BACKUP DATABASE db FILEGROUP=’db_fg1′ TO DISK=’c:\db_fg1_澳门新萄京,new.bak’
WITH FORMAT
BACKUP DATABASE db FILEGROUP=’db_fg2′ TO DISK=’c:\db_fg2.bak’ WITH
FORMAT
BACKUP LOG db TO DISK=’c:\db_log.bak’ WITH FORMAT
GO

2018-09-13 13:50:需求复苏的时间节点。

 

–8.
还原完全备份时,未使用NORECOVEENCOREY,导致不可能正确还原日志备份也许差距备份
IF DB_ID(‘db’) IS NOT NULL IF DB_ID(‘db’) IS NOT NULL DROP DATABASE
db
RESTORE DATABASE db FROM DISK=’c:\1.bak’
RESTORE LOG db FROM DISK=’c:\2.bak’
/*–收到错误新闻
服务器: 消息 4306,级别 16,状态 1,行 4
先前的出山小草操作未钦命 WITH NORECOVEEnclaveY 或 WITH
STANDBY。请在除最终步骤之外的有所别的步骤中钦命 WITH NORECOVE凯雷德Y 或 WITH
STANDBY 后,重新开动该还原体系。
–*/
GO

–在文件组db_fg1上创立表,并独自成立该公文组的备份
CREATE TABLE db.dbo.tb(id int) ON db_fg1
BACKUP DATABASE db FILEGROUP=’db_fg1′ TO DISK=’c:\db_fg1.bak’ WITH
FORMAT
GO

第二步:

若果“live”事务日志能够在数据库失利以往到达,那大概是出于硬件故障形成的,那么理论上应当能够透过以下步骤来回复和死灰复然您的数据库。

–1. 恢复生机时利用不当的日志顺序
IF DB_ID(‘db’) IS NOT NULL DROP DATABASE db
RESTORE DATABASE db FROM DISK=’c:\1.bak’ WITH NORECOVERY
RESTORE LOG db FROM DISK=’c:\3.bak’
/*–收到消息
服务器: 消息 4305,级别 16,状态 1,行 5
此备份凑集的日志起初于 LSN 6000000002800001,该 LSN
太晚,不可能利用到数据库。包蕴 LSN 6000000002500001
的较早的日记备份可以过来。
–*/
GO

–以下代码轻巧地示范了什么开展文件组的备份及回复(在还原时,模拟了错过第3回文件组备份文件的意况)。
–创设测量试验数据库
CREATE DATABASE db
ON PRIMARY(
    NAME=’db_data’,
    FILENAME= ‘c:\db_data.mdf’),
FILEGROUP db_fg1(
    NAME = ‘db_fg1_data’,
    FILENAME = ‘c:\db_fg1_data.ndf’),
FILEGROUP db_fg2(
    NAME = ‘db_fg2_data’,
    FILENAME = ‘c:\db_fg2_data.ndf’)
LOG ON(
    NAME=’db_log’,
    FILENAME =’c:\db.ldf’)
GO

1,修正数据库备份格局为:大体积日志

日志备份的频率

–6. 将间隔备份用于错误的通通备份中
IF DB_ID(‘db’) IS NOT NULL IF DB_ID(‘db’) IS NOT NULL DROP DATABASE
db
RESTORE DATABASE db FROM DISK=’c:\1.bak’ WITH NORECOVERY
RESTORE DATABASE db FROM DISK=’c:\5.bak’
/*–收到错误音讯
服务器: 消息 3136,级别 16,状态 1,行 3
束手就殪将器具 ‘c:\5.bak’ 上的备份应用于数据库 ‘db’。
–*/
GO

–删除测量试验数据库
DROP DATABASE db

找到误删的数据库早先备份文件。

FROM DISK = ‘C:\Backups\TestDB.bak’

–寻常备份
BACKUP DATABASE db TO DISK=’c:\1.bak’ WITH FORMAT
BACKUP LOG db TO DISK=’c:\2.bak’ WITH FORMAT
BACKUP LOG db TO DISK=’c:\3.bak’ WITH FORMAT
BACKUP DATABASE db TO DISK=’c:\4.bak’ WITH FORMAT
BACKUP DATABASE db TO DISK=’c:\5.bak’ WITH FORMAT,DIFFERENTIAL
BACKUP LOG db TO DISK=’c:\6.bak’ WITH FORMAT
GO

–从文件组备份中平复数据
RESTORE DATABASE db FILEGROUP=’PRIMARY’ FROM DISK=’c:\db_primary.bak’
WITH NORECOVERY,REPLACE
RESTORE DATABASE db FILEGROUP=’db_fg1′ FROM DISK=’c:\db_fg1.bak’ WITH
NORECOVERY
RESTORE DATABASE db FILEGROUP=’db_fg2′ FROM DISK=’c:\db_fg2.bak’ WITH
NORECOVERY
RESTORE LOG db FROM DISK=’c:\db_log.bak’ WITH RECOVERY
SELECT COUNT(*) FROM db.dbo.tb
GO

use master;

 

–4. 将差异备份用于RESTORE LOG
IF DB_ID(‘db’) IS NOT NULL IF DB_ID(‘db’) IS NOT NULL DROP DATABASE
db
RESTORE DATABASE db FROM DISK=’c:\4.bak’ WITH NORECOVERY
RESTORE LOG db FROM DISK=’c:\5.bak’
/*–收到错误音讯
服务器: 消息 3135,级别 16,状态 2,行 3
文件 ‘c:\5.bak’ 中的备份集是由 BACKUP DATABASE WITH DIFFERENTIAL
创制的,不也许用于此还原操作。
–*/
GO

–删除数据库
DROP DATABASE db
GO

–复苏日志时间节点

日记备份的频率也或许由数据库所受的业务数量调控。对于那多少个忙绿的数据库,为了调全日志的高低,或然需求频繁地开展备份。

–3. 将日志备份用于RESTORE DATABASE
IF DB_ID(‘db’) IS NOT NULL DROP DATABASE db
RESTORE DATABASE db FROM DISK=’c:\2.bak’ WITH NORECOVERY
/*–收到错误音信
服务器: 消息 3135,级别 16,状态 2,行 4
文件 ‘c:\2.bak’ 中的备份集是由 BACKUP LOG
创制的,不可能用于此还原操作。
–*/
GO

RESTORE DATABASE beifen FROM DISK = N’D:\beifen1.bak’ WITH NORECOVERY,
REPLACE

 

–删除测量检验
IF DB_ID(‘db’) IS NOT NULL DROP DATABASE db

BACKUP LOG beifen TO disk= N’beifen_20180913′ WITH NORECOVERY

清单5.11:在备用情势下苏醒到ANewTestDB数据库的日志备份

–5. 将间隔备份用于RESTORE LOG
IF DB_ID(‘db’) IS NOT NULL IF DB_ID(‘db’) IS NOT NULL DROP DATABASE
db
RESTORE DATABASE db FROM DISK=’c:\4.bak’ WITH NORECOVERY
RESTORE LOG db FROM DISK=’c:\5.bak’
/*–收到错误消息
服务器: 消息 3135,级别 16,状态 2,行 3
文件 ‘c:\5.bak’ 中的备份集是由 BACKUP DATABASE WITH DIFFERENTIAL
创制的,不可能用于此还原操作。
–*/
GO

beifen :须要复苏的数据库名称

为啥要备份职业日志?

–创设测量试验
CREATE DATABASE db
GO

 

翻译:刘琼滨、谢雪妮、许雅莉、赖慧芳

–2. 恢复生机时,将日志备份应用于错误的一心备份
IF DB_ID(‘db’) IS NOT NULL DROP DATABASE db
RESTORE DATABASE db FROM DISK=’c:\4.bak’ WITH NORECOVERY
RESTORE LOG db FROM DISK=’c:\2.bak’
/*–收到错误消息
服务器: 消息 4326,级别 16,状态 1,行 5
此备份聚焦的日志终止于 LSN 6000000002800001,该 LSN
太早,十分的小概利用到数据库。包罗 LSN 6000000003000001
的较新的日志备份能够回复。
–*/
GO

澳门新萄京 1

GO

–7. 直接动用日志备份可能差别备份还原
IF DB_ID(‘db’) IS NOT NULL IF DB_ID(‘db’) IS NOT NULL DROP DATABASE
db
RESTORE DATABASE db FROM DISK=’c:\5.bak’
RESTORE LOG db FROM DISK=’c:\2.bak’
/*–收到错误音讯
服务器: 消息 913,级别 16,状态 8,行 3
绝对不能够找到 ID 为 65535
的数据库。只怕该数据库还未激活,也可以有可能正在改变进程中。
–*/
GO

实践sql一条一条实践。

WITH RECOVERY;

 奉行成功

 

误删数据,操作步骤:

图5.1:备用数据库 在ANewTestDB数据库中对LogTest表的查询将展现10行。但是,大家盼望将表重新再次来到以前的动静,因为它在错误地被错误地撤消在此以前。由此,下一步是对备用数据库试行苏醒日志备份。

 

— the current set

第三步:

正文是阶梯种类的生机勃勃有的:SQL
Server中的事务日志管理的台阶

第一步:

   MOVE ‘TestDB_dat’ TO ‘C:\Standby\ANewTestDB.mdf’,

beifen_20180913:备份的日记

在此个品级上,我们曾经介绍了备份和还原以完全复苏格局运维的数据库日志文件的幼功知识,这将是超多临盆数据库的正经。
对于好多dba来讲,实行三个时光点复苏的须要是三个罕见的事件,可是这是里面二个职分,借使有要求,它是那二个关键的,它能够做得很好;DBA的名望决意于它。

–还原以前数据库

 

2,改进访谈约束为:SINGLE_USE福睿斯(单顾客格局)

 

‘D:\beifen1.bak’:数据库备份文件

RESTORE DATABASE TestDB

澳门新萄京 2

BACKUP Log TestDB

–备份日志

 

 

GO

2、反过来,恢复生机在完全(或差距State of Qatar备份之后举行的各类业务日志备份,并在故障产生此前造成备份。

TO DISK =’C:\Backups\TestDB.bak’

 

RESTORE DATABASE ANewTestDB

备份数据库到磁盘=’FileLocation\DatabaseName.bak‘;

从磁盘=’FileLocation文件名恢复数据库日志数据库。Beck’WITH
NORECOVEWranglerY;

BACKUP LOG TestDB

GO

备份数据库到磁盘=’FileLocation\DatabaseName.bak‘WITH
INIT;

— The RESTORE HEADERONLY command is optional.

让我们来看三个得以达成上述手续1和步骤2的演示。首先,让大家从头起初,运营CreateAndPopulateTestDB。用于重新成立TestDB数据库的sql脚本,并将10行测量检验数据插入到叁个新的日志测量试验表中。在项目清单5.6中,大家只做一个全体的数据库备份(覆盖此前的备份文件卡塔尔(قطر‎。若是你还尚未那样做,那么你须求创设“备份”目录,大概适度地调动路径。

— LOG BACKUP 2 at 2.30 AM

之所以,当在完全恢复格局下办事时,除了一心备份和可选的区别备份之外,实践例行专业日志备份是足够关键的。相当多生手或全职dba在他们的数据库上实施总体的备份,不过她们不实践专门的职业日志备份。因此,事务日志不会被截断,它会穷追猛打增高,直到磁盘空间耗尽,引致SQL服务器甘休专门的职业。

— Back up the tail of the log to prepare for restore

 

WITH NORECOVERY;

1、复苏数据库的备份,在备用方式下,与实时数据库一同2、在产出谬误的职业在此之前,将日志滚到该点,数据错失了

 

INSERT INTO [TestDB].[dbo].[LogTest]

在别的数据库失败的图景下,也许要求还原数据库备份,再增加工作日志,以便在错误的数量纠正以前及时将数据库重临到有些特定的点上,那样就能删除或截断表。

 

在线图书中窥见的过多例证都申明了“备份集”的回复和东山复起,换句话说,就是二个“设备”,全数备份都存款和储蓄在里头。在实操中,那意味当备份到磁盘时,备份设备是单生龙活虎的。那么些文件坐落于磁盘的有个别地方。

 

 

TO DISK = ‘C:\Backups\TestDB.bak’

唯独,固然数据文件荒诞不经,不时仍旧能够动用实时事务日志,非常是只要事情日志包涵在叁个单独的专项使用驱动器上。要是是这种情况,您应该备份live事务日志,即实践自上次日记备份以来生成的日志记录的尾声备份。那将捕获实时日志文件中剩下的日志记录,直至故障点。那被称作尾日志备份,是在初步苏醒和还原操作在此以前应该实践的终极二个操作。

 

— It simply confirms the files that comprise

 

GO

译文:

   MOVE ‘TestDB_log’ TO ‘C:\Standby\ANewTestDB.ldf’

 

— Perform a full backup of the Test database

而是,在数据库备份到磁带时,使用备份集就像是是四个遗留难题。当备份到磁盘时,使用那些安插是三个坏主意,因为备份文件会赶快变得比十分的大。

WITH INIT ;

BACKUP Log TestDB

USE TestDB

摘要

2、将错失的多寡复制到实时数据库并剔除已一改故辙的别本

WITH FILE=1, NORECOVERY;

TO DISK = ‘C:\Backups\TestDB.bak’

在“不好的贸易”之后复苏

— Perform a transaction log backup of the Test database

假定那是要实践的率先个备份,则是DatabaseName。将要钦赐的目录中开创bak文件。如若已经存在此么的文书,那么默许的一颦一笑是将延续的备份附加到该公文。为了掩瞒那个作为,并分明任何现成的文件都应该被掩没,我们得以应用INIT选项,如下:

 

正如所建议的,假如不首先进行三回完整的备份,就极小概实践专门的学业日志备份。为了还原一个数据库的时间点,要么停止的四个特定的日记备份或时刻点在叁个一定的日记备份,一定期存款在一个完整的日志记录,从第多少个日志备份后,八个完全

1、备份日志的尾巴 2、苏醒以来的全备份(如果得以的话,还足以选择微分卡塔尔(قطر‎

GO

WITH NORECOVERY;

WITH INIT ;

— Restore the full backup

USE master ;

USE master;

 

何以备份工作日志

FROM     dbo.backupset

 

— full backup of the database

GO

WITH INIT;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图