数据库的备份和还原(slqserver)

news2024/11/25 16:24:05

数据库的备份

1.语法:

     BACKUP DATABASE { database_name | @database_name_var }
TO <backup_device> [,...n]
[ WITH
   {
   COPY_ONLY
   | NAME = {backup_set_name | @backup_set_name_var }
   | { NOINIT | INIT }
   | DESCRIPTION = { 'test' | @text_variable }
   | PASSWORD = { password | @password_variable }
   | { EXPIREDATE = { 'date' | @date_var }
   | RETAINDAYS = { days | @days_var } } [,...n]
   }
]
[;]

语法解释:

DATABASE:指定一个完整数据库备份。

**{ database_name | @ database_name_var }**:备份事务日志、部分数据库或者完整的数据库时所用的数据源。如果作为变量(@ database_name_var)提供,则可以将该名称指定为字符串常量(@ database_name_var=database name)或指定为字符串数据类型(ntext 或 text 数据类型除外)的变量。

**<backup_device>**:指定用于备份操作的逻辑备份设备或物理备份设备。

COPY_ONLY:指定备份为仅复制备份,该备份不影响正常的备份顺序。仅复制备份是独立于定期计划的常规备份而创建的。仅复制备份不会影响数据库的总体备份和还原过程。

**NAME = {backup_set_name | @ backup_set_name_var }**:指定备份集的名称。如果未指定 NAME 它将为空。

**{ NOINIT | INIT }**:控制备份操作是追加还是覆盖备份媒体中的现有备份。默认为追加到媒体中最新的备份集(NOINIT)。

**DESCRIPTION = { 'test' | @ text_variable }**:指定说明备份集的自由格式文本。

**PASSWORD = { password | @ password_variable }**:为备份集设置密码,PASSWORD 是一个字符串。

**{ EXPIREDATE = { 'date' | @ date_var }**:指定允许覆盖该设备的备份集的日期。

**RETAINDAYS = { days | @ days_var }**:指定必须经过多少天才可以覆盖备份媒体集。

2.例子:
在本地磁盘中创建一个文件夹(例如D:\databackup),用来存储你的备份文件。然后我们来创建 Test 数据库的完整备份,语句如下图:

BACKUP DATABASE 数据库 TO disk='备份路径' WITH INIT NAME = '备份名字' DESRIPTION='描述'

在!这里插备份入图片描述

差异备份的使用

1.概念:
差异备份是指,备份自上一次完整备份之后有变化的数据。差异备份过程中,只备份那些有标记的选中的文件和文件夹。但是它不清除标记,也就是在备份文件后,不会将文件标记为已备份文件。换言之,它不清除存档属性。所谓存档属性,是用来标记文件改动的,一旦文件有所改动,备份程序就会以此来确定哪些文件需要备份

总计而言之就是,更加细节化,比如具体到某一天的postion备份

2.使用:
差异备份也是使用 BACKUP 命令,主要是参数需要指定 Differential
在这里插入图片描述

事务日志备份

1.概念:
事务日志备份就是备份所有数据库的修改记录,用来在还原操作期间,提交完成的事务以及回滚未完成的事务,事务日志备份记录备份操作开始时的事务日志状态。(相当于某一个时间节点的备份)

对比于前两种备份节省了时间和空间,可以指定恢复到某一个时间,其语法如下:

BACKUP LOG { database_name | @database_name_var }
TO <backup_device> [,...n]
[ WITH
    NAME = { database_set_name | @backup_set_name_var }
    | DESCRIPTION = { 'test' | @test_variable }
]
{ { NORECOVERY | STANDBY = undo_file_name } } [,...n]

实战检测

在右侧编辑器中的Begin-End之间补充代码,使用完整备份模式完成对 studb 数据库的备份,具体要求如下

  • 1.备份文件路径为/usr/local/databackup/studb.bak(注意路径不要输错了,平台会在此路径下查询备份集);

  • 2.备份集名称 NAME 为“full backup”;

  • 3.备份集说明 DESCRIPTION 文字为“this is full backup file”。

BACKUP DATABASE mydb TO disk='/usr/local/databackup/studb.bak'  
WITH INIT,
NAME = 'full backup',
DESCRIPTION='this is full backup file'
GO

数据库的还原

语法

主要利用的是 RESTORE 语句

RESTORE DATABASE{ database_name | @database_name_var}
FROM <backup_device> [,...n]
[ WITH
{
[  { CHECKSUM | NO_CHECKSUM }
| [ RECOVERY | NORECOVER | STANDBY = {standby_file_name | @standby_file_name_var}]
| FILE = { backup_set_file_number | @back_set_file_number }
| PASSWORD = { password | @password_variable }
| MEDIANAME = { media_name | @media_name_variable}
| MEDIAPASSWORD = { mediapassword | @mediapassword_variable }
| MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [,...n]
| REPLACE
| STOPAT = {'datatime' | @datatime_var}
}
]
[;]
<backup_device> :: =
{
{ logical_backup_device_name | @logical_backup_device_name_var }
| { DISK | TAPE } = { 'pysical_backup_device_name' | @pysical_bakcup_device_name_var }
}

各个字段的解释

**{ CHECKSUM | NO_CHECKSUM }**:默认行为是在存在校验和时验证校验和,不存在校验和时不进行验证并继续执行操作。

RECOVERY:指示还原操作回滚任何未提交的事务。在恢复进行后即可随时使用数据库。如果既没有指定 NORECOVERY 和 RECOVERY,则默认为 RECOVERY。

NORECOVRY:指示还原操作不回滚任何未提交的事务。

**FILE = { backup_set_file_number | @ back_set_file_number }**:标识要还原的备份集。例如,backup_set_file_number 为 1,指示备份媒体中的第一个备份集;backup_set_file_number 为 2,指示第二个备份集。可以通过使用 RESTORE HEADERONLY 语句来获取备份集的 backup_set_file_number。未指定时,默认值为1**MEDIANAME = { media_name | @ media_name_variable}**:指定媒体名称。

**MEDIAPASSWORD = { mediapassword | @ mediapassword_variable }**:指定媒体集的密码,密码为一个字符串。

**MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [...n]**:对于由 logical_file_name_in_backup 指定的数据或日志文件,应当通过将其还原到 operating_system_file_name 所指定的位置来对其进行移动。默认情况下,logical_file_name_in_backup 文件将还原到它的原始位置。

REPLACE:指定即使存在另一个具有相同名称的数据库,SQL Server 也创建指定的数据库及其相关文件。在这种情况下将删除现有的数据库。如果不指定则会执行安全检查。这样可以防止以外覆盖其他数据库。REPLACE 还会覆盖在恢复数据库之前备份尾日志的要求。

**STOPAT = {'datatime' | @ datatime_var}**:指定将数据库还原到它在 datatime 或 @ datatime_var 参数指定的日期和时间状态。

**{ logical_backup_device_name | @ logical_backup_device_name_var }**:是由存储过程创建的备份设备(数据库将从该备份设备还原)的逻辑名称。

**{ DISK | TAPE } = { 'pysical_backup_device_name' | @ pysical_bakcup_device_name_var }**:允许从命名磁盘或磁带设备还原备份。

差异备份还原

1.介绍:
完整备份还原之后,可以执行差异备份还原。例如在周末晚上执行一次完整数据库备份,以后每隔一天创建一个差异备份集,如果在周三数据库发生了故障,则首先用最近上个周末的完整备份做一个完整备份还原,然后还原周二做的差异备份。

差异备份还原与完整备份还原的语法基本一样,只是在还原差异备份时,必须先还原完整备份,再还原差异备份,具体请看如下案例:

2.案例

--创建数据库
CREATE DATABASE student
GO
--打开创建的数据库
USE student
GO
--创建测试表
create  table  tb_test(num  int);
--插入一条数据
INSERT INTO tb_test values(1);
--做完整备份
backup  database  student  to  disk='d:\test.bak';
--再插入一条数据
INSERT INTO tb_test values(2);
--做差异备份
backup  database  student  to  disk='d:\test.bak'  with  differential;
--删除数据库
drop  database  student;
GO

事务日志备份的还原

事务日志备份还原比较频繁,因此事务日志备份的还原步骤比较多。例如周末对数据库进行完整备份,每天晚上 8 点对数据库进行差异备份,每隔 3 小时做一次事务日志备份。如果周三早上 9 点钟数据库发生故障,那么还原数据库的步骤如下:首先恢复周末的完整备份,然后恢复周二下午做的差异备份,最后依次还原差异备份到损坏为止的每一个事物日志备份,即周二晚上 11 点、周三早上 5 点和周三早上 8 点所做的事务日志备份。

与差异备份还原类似,事务日志备份还原时只要知道它在备份集中的位置即可。还原事务日志备份之前,必须先还原在其之前的完整备份,除了最后一个还原操作,其他所有操作都必须加上 NORECOVERY 或 STANDBY 参数。

类似于先确定大体上的哪一周,再确定哪一天,最后确定时间节点

举个例子

--创建数据库
CREATE DATABASE student
GO
--做一个完整备份
backup  database  student  to  disk='d:\test.bak'
--打开创建的数据库
USE student
GO
--创建测试表
create  table  tb_test(num  int);
--插入一条数据
INSERT INTO tb_test values(1)
--做一个日志备份
backup  log  student  to  disk='d:\test.bak'
--再插入一条数据
INSERT INTO tb_test values(2)
--做尾日志备份
use master;
GO
backup  log  student  to  disk='d:\test.bak' with norecovery
--删除数据库
drop  database  student
GO

实战检测

在右侧编辑器中的Begin-End之间补充代码,完成 school 数据库的还原,具体要求如下:

  • 1.studb 数据库做了三个备份,依次是完整备份、差异备份和事务日志备份(数据库中创建了一张表,一共三条数据,每向表里插入一条数据依次进行备份);

  • 2.备份文件路径为/usr/local/databackup/studb.bak;

  • 3.使用 master 数据库还原,还原的数据库名称为 studb(平台会在你还原的这个数据库中查询表中数据,以此来判断是否完成还原操作)。

--********** Begin **********--

use master;
GO
RESTORE DATABASE studb from  disk='/usr/local/databackup/studb.bak' 
with  file=1,norecovery
RESTORE DATABASE studb from  disk='/usr/local/databackup/studb.bak'
with  file=2,norecovery
RESTORE LOG studb from  disk='/usr/local/databackup/studb.bak'
with  file=3,recovery   
GO

--********** End **********--

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双端队列(双端bfs)解决边权只包含0和1的最短路问题

电路维修 达达是来自异世界的魔女&#xff0c;她在漫无目的地四处漂流的时候&#xff0c;遇到了善良的少女翰翰&#xff0c;从而被收留在地球上。 翰翰的家里有一辆飞行车。有一天飞行车的电路板突然出现了故障&#xff0c;导致无法启动。电路板的整体结构是一个 R行 C 列的网…

关于 re.sub 部分替换的解决办法

关于 re.sub 部分替换的解决办法写作背景问题重现解决办法代码详解结尾写作背景 最近本菜鸡遇到一个问题&#xff0c;我想将字符串中某一部分替换成指定内容&#xff0c;而且为了定位到要替换的内容&#xff0c;所以使用正则的时候还需要前后一些字符作为锚点&#xff0c;这可…

linux下基本命令

linux下基本命令一、linux相关快捷键二、linux下内部命令和外部命令2.1 内建命令2.2 外部命令2.3 内建命令和外部命令对比2.4 命令类型查看方法2.4 内建命令和外部命令帮助三、man手册四、相对路径和绝对路径五、pwd和cd命令六、mkdir创建目录七、rmdir删除目录八、linux文件类…

JMeter如何自定义HTTP组件

JMeter是一个优秀的开源项目&#xff0c;我们可以在jmeter的官网了解到如何使用和如何二次开发&#xff1a;Apache JMeter - Apache JMeter™ 因工作需要&#xff0c;最近做了一个JMeter自定义的http组件&#xff08;其实就是在http的基础上加了点东西而已&#xff09;。现就该…

TCO-PEG5-amine,NH2-PEG5-TCO,反式环辛烯-五聚乙二醇-氨基广泛应用于生物学研究

TCO-PEG5-NH2中英文名&#xff1a; CAS号&#xff1a;N/A | 英文名&#xff1a;TCO-PEG5-amine&#xff0c;TCO-PEG5-NH2 |中文名&#xff1a;反式环辛烯-五聚乙二醇-氨基TCO-PEG5-NH2物理参数&#xff1a; CASNumber&#xff1a;N/A Molecular formula&#xff1a;C21H40N2O7…

没有实施APS软件的工厂,常常面临的问题

对于制造工厂车间的运行而言&#xff0c;计划是核心的业务。制造工厂面对这么多订单并行生产执行、受制于有限的制造资源&#xff0c;如何安排次序、如何权衡轻重缓解&#xff0c;其实都是计划的范畴&#xff0c;计划执行过程总是受到各种形式的干扰或冲击&#xff0c;如何综合…

虹科分享 | 网络性能监控 | 网络中的应用性能意味着什么?

TCP协议的可靠性 数据包丢失是对网络的破坏&#xff0c;因为它导致延迟。TCP协议建立了可靠的数据传输&#xff0c;但掩盖了丢包的影响。TCP确保数据的传输是基于一个叫做 "滑动窗口 "的概念。这种机制控制着传输的字节序列和收到的确认。 在排序的帮助下&#xff…

项目管理之信息文档管理与配置管理(第一篇)

目录 前言 一、软件文档的分类 1.开发文档 2.产品文档 3.管理文档 二、文档质量的四个等级 1.1级文档 2.内部文档&#xff08;2级&#xff09; 3.工作文档&#xff08;3级文档&#xff09; 4.正式文档&#xff08;4级文档&#xff09; 三、配置管理 1.配置管理的定义…

XCTF-web1文件包含绕过file include

场景一&#xff1a; fileclude 题目描述 好多file呀&#xff01; 进入场景 给出PHP源码 包含flag.php文件 GET获取两个参数file1和file2 当参数不为空时&#xff0c;使用file_get_contents()函数将文件内容读入字符串&#xff0c;判断是否为"hello ctf" 利用ph…

vue项目前端优化处理方案整理

vue项目前端优化处理 目录 vue项目前端优化处理 路由懒加载 按需引入模块 外部资源引入&#xff0c;cdn加载 移除项目中所有的console.log()控制台信息数据打印 是否在构建生产包时生成sourcdeMap 上传图片文件压缩 开启gizp压缩 前端页面代码优化 路由懒加载 路由懒…

【深度学习】特征图的上采样(nn.Upsample)和转置卷积(nn.ConvTranspose2d) | pytorch

文章目录前言一、nn.Upsample 上采样二、nn.ConvTranspose2d 转置卷积前言 这次就不废话了&#xff0c;我想赶在10点前回去洗头&#xff08;现在9.17&#xff0c;还差一篇文章&#xff09; 一、nn.Upsample 上采样 该函数有四个参数&#xff1a; 参数的介绍如下&#xff1a…

工厂模式(Factory Pattern) 与抽象工厂模式(Abstract Factory Pattern)

工厂模式&#xff08;Factory Pattern) 与抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09; 工厂模式属于构造型模式&#xff0c;是项目中最常用到的一种设计模式。它的主要作用是提供一种简单的创建对象的方式&#xff0c;使用者无需知道创建实例的细节以及需要…

重启虚拟机启动Docker常见问题

文章目录重启虚拟机启动Docker常见问题一、Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?二、admin is not in the sudoers file. This incident will be reported.&#xff08;没有这个问题请自觉跳过&#xff09;三、…

华清远见11.17

1.在用户空间中有个字符数组&#xff0c;要求在内核空间打印&#xff0c;用dmesg查看。&#xff08;ioctl实现&#xff09; zy.h&#xff0c;封装一个发送用的命令码 #ifndef __LED_H__ #define __LED_H__ #define UACCESS_BUF _IOW(a,1,char [128]) #endif zy.c 申请并自动创…

2022 开源之夏|EMQ 三大开源项目开发圆满收官

今年暑假&#xff0c;EMQ 携手开源之夏&#xff0c;与高校学生开展了一场精彩纷呈的开源之旅。开源之夏&#xff08;OSPP&#xff09;是由中科院软件所「开源软件供应链点亮计划」发起的、面向高校学生的暑期开源活动&#xff0c;旨在鼓励在校学生积极参与开源软件的开发维护&a…

CE-Net: Context Encoder Network for 2D MedicalImage Segmentation

Title:用于二维医学图像分割的上下文编码器网络 摘要&#xff1a;在医学图像分割领域中&#xff0c;基于UNet已经成为主流的应用框架。但是在UNet结构中连续的池化和跨步卷积操作会导致一些空间信息的丢失。在本文中提出了一个上下文编码器网络&#xff08;简称为CE-Net&#…

数据分析师的Windows装机必备软件

文章目录1. Python安装包列表2. Office 3653. Visual Studio Code4. Git5. 向日葵6. 聊天软件7. OneDrive8. iCloud9. 网易邮箱大师10. 搜狗输入法11. 阿里云盘对于数据分析师,装机是再经常不过的一件事情,但是每次装机都要想装什么好,找来找去,故列出来供大家参考. 当然, 系统…

CentOS7自有服务和软件包

文章目录什么是服务管理服务的命令&#xff1a;systemctl列出服务服务启停开机自动启动服务服务状态软件包RPM查询安装了什么软件卸载某个软件安装某个软件查询文件所属的包名查询软件安装后&#xff0c;生成了哪些文件YUM命令epel-release什么是服务 什么是程序&#xff08;C…

最优化——凸优化概述

引言 这是中科大最优化理论的笔记&#xff0c;中科大凌青老师的凸优化课程&#xff0c;详尽易懂&#xff0c;基础扎实。不论是初学者还是从业多年的人&#xff0c;都值得系统地好好学一遍。 本文主要介绍什么是凸优化&#xff0c;通过几个例子来阐述什么是凸优化问题。让大家…

3年测试经验,面试27k自动化测试岗被diss,想给进阶自动化的人提个醒...

毕业后一直从事功能测试的工作&#xff0c;时间久了就没有一点想法&#xff0c;天天都是点点点&#xff0c;也没有一点提升&#xff0c;看着身边一个个的人都忙得不可开交&#xff0c;打听之后知道他们都是在技术上忙&#xff0c;而不像我&#xff0c;在杂事上忙&#xff0c;特…