MSSQL最佳实践:如何监控备份还原进度?

简介:
+关注继续查看

场景引入

  由于SQL Server备份还原操作是重I/O读写操作,尤其是当数据库或数据库备份文件比较大的到时候。那么,我们就有强烈的需求去监控备份还原的过程,时时刻刻把握备份还原的进度,以获取备份还原操作完成时间的心理预期以及对系统的影响。本文主要分享如何监控SQL Server备份还原进度。

监控备份还原进度

  在SQL Server数据库中,监控数据库备份还原进度方法主要有以下三种:利用SSMS的备份、还原进度百分比;利用T-SQL的stats关键字展示百分比;利用动态视图监控备份、还原完成百分比。

利用SSMS

  监控数据库备份进度

  在SSMS中,右键点击你需要备份的数据库 => Tasks => Back Up...

MSSQL最佳实践:如何监控备份还原进度?

  在Destination中选择Disk => Add... => 选择备份文件本地存储路径 => OK

MSSQL最佳实践:如何监控备份还原进度?

  在该窗口的左下角部分,会有Process的进度展示,比如截图中的进度表示数据库已经备份完成了30%。这种方法可以看到数据库备份进程进度的百分比,但是没有更多的详细信息。

  监控数据库还原进度

  监控数据库还原进度方法与上面的方法十分类似,只是入口不同。还原数据库入口:右键点击你需要还原的数据库 => Tasks => Restore => Database...

MSSQL最佳实践:如何监控备份还原进度?

  在Restore Database页面,选择Device => 点击右侧的预览按钮 => Add => 添加本地备份文件 => OK

MSSQL最佳实践:如何监控备份还原进度?

  在接下来的数据库还原页面中的最右上角部分,有数据库的还原进度条,以及还原百分比。比如,图中的数据库还原进度是50%,参见如下截图:

MSSQL最佳实践:如何监控备份还原进度?

  利用T-SQL

  以上方法介绍使用SSMS来备份或者还原数据库进度监控查看方法。当然,有的人喜欢使用T-SQL脚本的方式来备份或者还原数据库。我们同样可以实现备份还原数据库的进度监控,方法是在语句中增加stats关键字,比如stats=10,那么系统在完成每个百分之十以后,都会在Messages中打印出** percent processed的字样。

  BACKUP DATABASE [TestBackUpRestore]

  TO DISK='C:\BACKUP1\TestBackUpRestore_FULL.bak' WITH STATS=10;

  参见如下截图,在Messages窗口中,每个10%,都有** percent processed的进度提示。

MSSQL最佳实践:如何监控备份还原进度?

  注意:还原数据库的方法相同,同样也是添加stats关键字。比如:

  USE [master]

  RESTORE DATABASE [TestBackUpRestore] FROMDISK = N'C:\BACKUP1\TestBackUpRestore_FULL.bak' WITHFILE = 4,NOUNLOAD,STATS = 10

  GO

  利用DMV

  有的人可能会遇到这样的情况:我在做数据库备份还原的时候,忘记添加stats关键字了,Messages窗口什么也没有提示。这种情况下,我该如何去监控我的备份或者还原数据库进度呢?其实,这种情况也无需紧张,我们同样有办法来监控数据库备份还原的进度,方法是使用动态管理视图sys.dm_exec_requests配合一些关键信息字段来监控进度。方法如下:

MSSQL最佳实践:如何监控备份还原进度?

MSSQL最佳实践:如何监控备份还原进度?

  由于结果集宽度过宽,人为分割为两个部分来展示查询结果集:

MSSQL最佳实践:如何监控备份还原进度?

MSSQL最佳实践:如何监控备份还原进度?

  这个结果中有非常多重要的字段信息,比如:Command: 表示命令种类,此处表示备份数据库命令sql_text: 语句详细信息,此处展示了完整的T-SQL语句percent_complete: 进度完成百分比,此处已经完成了59.67%start_time:进程开始执行时间eta_completion_time:进程预计结束时间等等。这种方法除了可以监控数据库备份还原进度外,还可以获取更多的进程信息,是比较推荐的方法。提示:这种方法不仅仅是可以用来监控你的备份还原进程,任何其他的用户进程都可以使用类似的方法来监控,你只需要把WHERE语句稍作修改即可。比如:想要监控某一个进程的进度情况,你只需要把WHERE语句修改为WHERE req.session_id=xxx即可。

  获取备份历史信息

  以上章节是介绍如何监控SQL Server备份还原进程的进度,我们有时也会遇到如下场景是:我们需要如何去探索或者发现某个数据库的备份历史记录信息。参见如下代码可以获取到数据库TestBackUpRestore的历史备份记录信息。

MSSQL最佳实践:如何监控备份还原进度?

MSSQL最佳实践:如何监控备份还原进度?

  截图如下:

MSSQL最佳实践:如何监控备份还原进度?

  这里需要特别注意:如果你删除数据库时,使用了msdb.dbo.sp_delete_database_backuphistory存储过程清空数据库的备份历史,将无法再获取到该数据库的备份历史。比如:

  EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'TestBackUpRestore'

  GO

  最后总结

  继前面五篇SQL Server备份还原专题系列月报分享后,我们完成了:三种常见的数据库备份、备份策略的制定、查找备份链、数据库的三种恢复模式与备份之间的关系、利用文件组实现冷热数据隔离备份方案以及本期月报分享的如何监控备份还原进度总共六篇。


原文发布时间为:2018-05-29

本文作者:风移

本文来自云栖社区合作伙伴“IT168”,了解相关信息可以关注“IT168”。

相关文章
|
8月前
|
SQL 关系型数据库 Linux
【PostgreSQL】入门学习笔记(包括安装、环境与参数配置、故障排查以及备份还原等)
以下内容为前几天在备考PostgreSQL入门考试时候做的笔记,经过了全职的两天的奋战与实验,并最终顺利通过了PCA初级认证考试。现在把我学习的笔记分享给大家,文中有对应的思维导图图片可供查看,内容与后面正文文本一致。另外,由于SQL语句部分比较基础,基本上会一门数据库就都会,所以此处部分省略掉不做过多记录了。
185 0
【PostgreSQL】入门学习笔记(包括安装、环境与参数配置、故障排查以及备份还原等)
|
8月前
|
存储 Kubernetes Cloud Native
Longhorn+K8S+KubeSphere云端数据管理,实战 Sentry PostgreSQL 数据卷增量快照/备份与还原
云端实验环境配置 1. VKE K8S Cluster 2.Kubesphere v3.3.1 集群可视化管理 3.Longhorn 1.14
238 0
|
SQL 运维
PolarDB-X 1.0-用户指南-系统运维-高危类SQL自动保护
为避免因误操作导致数据丢失,PolarDB-X默认禁止执行高危类SQL,例如全表删除(即不带WHERE或LIMIT条件的DELETE语句)和全表更新(即不带WHERE或LIMIT条件的UPDATE语句)等语句。但您也可以通过HINT语句避开上述自动保护,强制执行全表删除或更新操作。
214 0
|
SQL 监控 关系型数据库
新功能:阿里云RDS SQL执行日志 - 实时分析监控上线
阿里云关系数据库RDS(MySQL版本)的SQL执行日志已经与日志服务打通,提供实时的SQL执行分析功能,并提供内置可深钻的报表、支持自定义审计规则、异常报警、报表订阅与生态对接能力等。
6756 0
|
监控 关系型数据库 数据库
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 28 章 监控数据库活动
第 28 章 监控数据库活动 目录 28.1. 标准 Unix 工具 28.2. 统计收集器 28.2.1. 统计收集配置 28.2.2. 查看统计信息 28.2.3. 统计函数 28.3. 查看锁 28.4. 进度报告 28.4.1. VACUUM进度报告 28.5. 动态追踪 28.5.1. 动态追踪的编译 28.5.2. 内建探针 28.5.3. 使用探针 28.5.4. 定义新探针 一个数据库管理员常常会疑惑,“系统现在正在做什么?”这一章会讨论如何搞清楚这个问题。
1131 0
|
监控 关系型数据库 数据库
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 28 章 监控数据库活动_28.5. 动态追踪
28.5. 动态追踪 28.5.1. 动态追踪的编译 28.5.2. 内建探针 28.5.3. 使用探针 28.5.4. 定义新探针 PostgreSQL提供了功能来支持数据库服务器的动态追踪。
1284 0
|
监控 关系型数据库 数据库
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 28 章 监控数据库活动_28.4. 进度报告
28.4. 进度报告 28.4.1. VACUUM进度报告 PostgreSQL能够在命令执行期间报告某些命令的进度。目前,唯一支持 进度报告的命令是VACUUM。未来可能会添加更多命令支持。
1208 0
|
关系型数据库 PostgreSQL 数据库
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 27 章 恢复配置_27.2. 恢复目标设置
27.2. 恢复目标设置 默认情况下,恢复将会一直恢复到 WAL 日志的末尾。下面的参数可以被用来指定一个更早的停止点。在recovery_target、recovery_target_lsn、recovery_target_name、recovery_target_time和recovery_target_xid中,最多只能使用一个,如果在配置文件中使用了多个,将使用最后一个。
1374 0
|
监控 关系型数据库 Shell
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 27 章 恢复配置_27.1. 归档恢复设置
27.1. 归档恢复设置 restore_command (string) 用于获取 WAL 文件系列的一个已归档段的本地 shell 命令。这个参数是归档恢复所必需的,但是对于流复制是可选的。
1277 0
|
关系型数据库 数据库 PostgreSQL
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 24 章 日常数据库维护工作_24.3. 日志文件维护
24.3. 日志文件维护 把数据库服务器的日志输出保存在一个地方是个好主意, 而不是仅仅通过/dev/null丢弃它们。 在进行问题诊断的时候,日志输出是非常宝贵的。不过,日志输出可能很庞大(特别是在比较高的调试级别上), 因此你不会希望无休止地保存它们。
1153 0
推荐文章
更多