• 还原数据库到指定时间点


    GPS平台、网站建设、软件开发、系统运维,找森大网络科技!
    https://cnsendnet.taobao.com
    来自森大科技官方博客
    http://www.cnsendblog.com/index.php/?p=1719

    警告:如果试图恢复客户的数据库到指定时间点,千万不能直接在客户服务器上进行恢复操作,以免造成严重后果。而应该把当前客户数据库做个完整备份,把.bak文件拷贝到本地,还原到本地进行操作。数据恢复后,再想办法把相应数据导入客户数据库。

    一、SQL Server可使用事务日志恢复到指定时间点。

    1.1 这个恢复需要有两个前提条件:

    1. 至少有一个误删除之前的数据库完全备份。

    2. 数据库的恢复模式(Recovery mode)是“完整(Full)”。

    针对这两个前提条件,会有三种情况:

    情况一:如果这两个前提条件都存在,通过SQL语句只需三步就能恢复,无需借助第三方工具。

    情况二:如果第1个前提条件不存在,第2个前提条件存在,需要借助第三方工具。

    情况三:如果第2个前提条件不存在,无法恢复。所以,一定要将数据库恢复模式设置为完整(Full

    1.2 查看数据库的恢复模式

    --数据库恢复模式有三种:

    --1:FULL(完整)、2:BULK_LOGGED(大容量日志)、3:SIMPLE(简单)

    --查看数据库的恢复模式

    SELECT name,recovery_model

    FROM sys.databases

    WHERE name = 'MyTestDB'

    1.3 当恢复模式为 SIMPLE 时,不允许使用 BACKUP LOG 语句

    二、首先做了一次完整备份,然后依次做了2次事务日志备份,现在需要还原数据库到第2次误删数据后的时间点。

    三、如果没有之前的(历史)事务日志备份文件,如何进行数据恢复?

    3.1 结论:如果某数据库有过2次事务日志备份,如果要恢复第2次误删的数据,但是没有第1次事务日志备份文件,那么需要一个第1次事务日志备份后的完整备份文件。

    四、错误案例

    4.1 如果是在服务器A上误删了数据,如果把误删后的数据库备份文件还原到服务器B上来,然后在服务器B上备份事务日志文件进行数据恢复,我发现这样会报错,而如果把服务器A的数据库文件(.mdf和.ldf文件)拷贝至服务器B,然后在服务器B上备份事务日志文件再做数据恢复,就不会有问题。

    4.2发现把另一台服务器上的数据库备份文件还原到本地后,在本地执行backup log POMDB to Disk='D:ResPOMDB.log' with init 得到的日志文件很小,没什么用。而应该在服务器上备份,而且,我还发现在服务器上第一次备份得到的.log文件比较大,第2次备份得到的文件就很小了,原因是第二次备份是在第一次备份的基础之上备份的

    '

    4.3 指定的还原时间大于事务日志备份时间,出现如下提示,数据库还是保持为还原状态(即数据库图标上出现【正在还原】字样)

    4.4 如果依次进行了2次事务日志备份,无法使用第2次的事务日志备份文件恢复第1次备份之前误删的数据

    4.5 也无法使用第2次的事务日志备份文件恢复第2次备份之前误删的数据

    五、关于事务日志备份文件的LSN

    5.1 打开第1次备份的事务日志备份文件

    5.2 打开第2次备份的事务日志备份文件,发现LSN是接着上一次备份来的。

    5.3 结论:如何要恢复第2次误删的数据,必须先还原第1次的事务日志备份文件,然后再还原第2次的事务日志备份文件。

    GPS平台、网站建设、软件开发、系统运维,找森大网络科技!
    https://cnsendnet.taobao.com
    来自森大科技官方博客
    http://www.cnsendblog.com/index.php/?p=1719

  • 相关阅读:
    centos7环境下安装mysql5.6-----解压安装包的方法
    Linux的常用命令
    在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法
    springboot下实现邮件发送功能
    centos7环境下开启指定端口
    阿里云开放指定端口
    Nginx的alias的用法及与root的区别
    关于Springboot打包错误的问题 | Failed to execute goal org.springframework.boot:spring-boot-maven-plugin
    怎么简单高效破解MyEclipse10、获取注册码
    git删除远程分支
  • 原文地址:https://www.cnblogs.com/cnsend/p/15182895.html
Copyright © 2020-2023  润新知