zoukankan      html  css  js  c++  java
  • [轉]SQL文件组备份和还原

    FROM : http://blog.sina.com.cn/s/blog_59e866610100dmrq.html

    如果一个数据库比较大的时候,一般会包含多个文件组,由于备份还原是个很耗资源和时间的事情,所以文件组的备份和还原成了另外一种选择。

    在创建带有多个文件组的时候,建议将用户数据放在辅助文件组中,就是将其中一个文件组设置为默认,而不是用primary作为默认的文件组:

    create database test

    on primary

    (name=test_mdf,

    filename='d:\sql_data\test.mdf'

    size=4MB,

    maxsize=unlimited,

    filegrowth=10%),

    filegroup FG1 default

    (name=test_ndf,

    filename='d:\sec_data\test.ndf',

    size=4MB,

    maxsize=unlimited,

    filegrowth=10%)

    log on
    (name=test_log,
    filename='d:\log\test.ldf',
    size=4MB,
    maxsize=unlimited,
    filegrowth=10%)

    上面的例子,主文件组primary将只包含系统表和对象,不包含用户数据库文件,这样更有利于文件组的备份和还原。

    另外,还可以将创建的表指定放在哪个文件组里(有时文件组很多)

    create table <table_name> (...) on <文件组名>

    这在数据库设计的时候或许会用到。

    1、备份数据库文件组

    (1)创建文件组完整备份

    use master
    go
    backup database test
    filegroup='FG1'
    to myback1,myback2
    with name='test_fullbackup_20090524'

    (2)创建文件组差异备份

    use master
    go
    backup database test
    filegroup='FG1'
    to myback1,myback2
    with differential,name='test_diffbackup_20090524'

    (3)创建日志备份

    use master

    go

    backup log test

    to myback1,myback2

    with name='test_logbackup_20090524'

    2、还原数据库文件组

    需要非常注意的一个地方是:在还原文件或者文件组备份前必须进行尾日志备份,因为需要将该文件或文件组恢复到同数据库中其他文件或文件组一致的状态。如果不能获得尾日志备份的话,那么就不能单独还原单个文件或者文件组,而必须还原整个数据库。

    (1)备份尾日志

    这跟备份日志是一样的。

    use master

    go

    backup log test

    to myback1,myback2

    with name='test_taillogbackup_20090524'

    (2)还原文件组

    先查看一下备份信息

    SQL文件组备份和还原

    use master
    go
    restore database test
    filegroup='FG1'
    from myback1,myback2
    with file=1,norecovery
    go
    restore database test
    filegroup='FG1'
    from myback1,myback2
    with file=4,norecovery
    go
    restore log test
    from myback1,myback2
    with file=5,recovery
    go

    注意:差异备份之前的事务日志备份就不用还原了。

    如果是备份或者还原文件,将filegroup改成file就行了。

    3、常用的文件或文件组备份和还原策略

    假设只有两个文件组primary和FG1

    (1)星期六晚上对primary进行完整文件组备份(作为基备份)

    (2)星期日晚上对FG1进行完整文件组备份(作为基备份)

    (3)星期二晚上对primary进行差异文件组备份

    (4)星期三晚上对FG1进行差异文件组备份

    (5)星期四晚上对primary进行差异文件组备份

    (6)星期五晚上对FG1进行差异文件组备份

    (7)每隔30分钟进行一次事务日志备份

    当故障发生时还原的时候

    (1)还原两个文件组的基备份

    (2)还原primary的最近差异备份

    (3)还原primary的最近差异备份后的日志备份

    (4)还原FG1的最近差异备份

    (5)还原FG1的最近差异备份后的日志备份

  • 相关阅读:
    s3c2440裸机-内存控制器(三-3、norflash编程之uboot中操作norflash)
    s3c2440裸机-内存控制器(三-2、norflash编程之适配访问时序)
    s3c2440裸机-异常中断(五. irq之定时器中断)
    s3c2440裸机-异常中断(四. irq之外部中断)
    s3c2440裸机-异常中断(三. swi软中断)
    s3c2440裸机-异常中断(二. und未定义指令异常)
    s3c2440裸机-异常中断(一. 异常、中断的原理与流程)
    s3c2440裸机-代码重定位、清bss的优化和位置无关码
    buildroot教程
    软件项目的目录结构
  • 原文地址:https://www.cnblogs.com/Athrun/p/2131767.html
Copyright © 2011-2022 走看看