AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[database-backup](server)

Martin Hope
J.D.
Asked: 2021-09-07 18:20:01 +0800 CST

如何调试我的数据库备份维护计划突然运行极其缓慢的原因?

  • 2

(最初发布在 DBA.StackExchange.com 但已关闭,希望在这里更相关。)

亚历山大和可怕的,可怕的,不好的,非常糟糕的......备份。

设置:

我有一个在VMWare的虚拟机上运行的本地SQL Server 2016 标准版实例。

@@版本:

Microsoft SQL Server 2016 (SP2-CU17) (KB5001092) - 13.0.5888.11 (X64) 2021 年 3 月 19 日 19:41:38 版权所有 (c) Windows Server 2016 Datacenter 10.0(内部版本 14393)上的 Microsoft Corporation 标准版(64 位): )(管理程序)

服务器本身目前分配有8 个虚拟处理器,具有32 GB 内存,所有磁盘都是 NVMes ,其I/O 速度约为1 GB/秒。数据库本身位于 G: 驱动器上,备份单独存储在 P: 驱动器上。所有数据库的总大小约为 500 GB(在压缩到备份文件本身之前)。

维护计划每晚运行一次(大约晚上 10:30),以对服务器上的每个数据库进行完整备份。服务器上没有运行其他任何异常,特别是在那个时候也没有运行其他任何东西。关闭服务器的电源计划设置为“平衡”(并且“之后关闭硬盘”设置为 0 分钟,即永不关闭)。

发生了什么:

在过去一年左右的时间里,维护计划作业的总运行时间总共需要大约 15分钟才能完成。自上周以来,它已飙升至大约 40 倍的时间,大约需要 15小时才能完成。

在维护计划放缓的同一天,我唯一知道的更改是在维护计划运行之前在计算机上安装了以下 Windows 更新:

Windows 更新

  1. KB890830
  2. KB5004752
  3. KB5005043
  4. VMWare - SCSIAdapter - 1.3.17.0
  5. VMWare - 显示 - 8.17.2.14

我们还在另一个 VM 上拥有另一个类似配置的 SQL Server 实例,该实例经历了相同的 Windows 更新,随后也经历了较慢的备份。考虑到 Windows 更新是直接原因,我们将它们完全回滚,并且备份维护计划仍然运行得非常缓慢。奇怪的是,为给定数据库恢复备份的速度非常快,并且几乎使用了 NVMes 上 1 GB/秒的全部 I/O。

我尝试过的事情:

在使用 Adam Mechanic 的 sp_whoisactive 时,我发现备份过程的最后等待类型始终表明存在磁盘性能问题。我总是看到BACKUPBUFFER并BACKUPIO等待类型,除了ASYNC_IO_COMPLETION:

sp_whoisactive

查看服务器本身的资源监视器时,在备份期间,磁盘 I/O 部分显示正在使用的总 I/O 仅为大约 14 MB/秒(自此问题发生以来我见过的最多的是30 MB/秒):

资源监视器

在偶然发现这篇关于使用 DiskSpd 的有用Brent Ozar 文章后,我尝试在类似的参数下自己运行它(仅将线程数降低到 8,因为我在服务器上有 8 个虚拟处理器并将写入设置为 50%)。这是确切的命令diskspd.exe -b2M -d60 -o32 -h -L -t8 -W -w50 "C:\Users\...\Desktop\Microsoft DiskSpd\Test\LargeFile.txt"。我使用了一个手动生成的文本文件,它不到 1 GB 大。我相信它测量的 I/O 看起来还不错,但是磁盘延迟显示了一些可笑的数字:

DiskSpd 结果 1

DiskSpd 结果 2

DiskSpd 结果看起来简直令人难以置信。在进一步阅读之后,我偶然发现了 Paul Randall 的一个查询,该查询返回每个数据库的磁盘延迟指标。结果如下:

Paul Randal - 磁盘延迟指标

最差的写入延迟为 63 毫秒,最差的读取延迟为 6 毫秒,因此这似乎与 DiskSpd 有很大差异,而且似乎还不足以成为我问题的根本原因。进一步交叉检查,根据这篇 Microsoft 文章,我在服务器本身上运行了几个 PerfMon 计数器,结果如下:

性能测试结果

这里没什么特别的,我测量的所有计数器的最大值是 0.007(我相信是毫秒?)。最后,我让我的基础架构团队检查了 VMWare 在备份作业期间记录的磁盘延迟指标,结果如下:

VMWare 磁盘延迟和 I/O 日志

似乎在最坏的情况下,午夜时分出现大约 200 毫秒的延迟峰值,最高 I/O 为 600 KB/秒(我不太明白,因为资源监视器显示备份至少正在使用大约 14 MB/秒的 I/O)。

我尝试过的其他事情:

我刚刚尝试恢复一个较大的数据库(大约 250 GB),总共只需要大约 8 分钟即可恢复。然后我尝试DBCC CHECKDB在它上面运行,总共运行了 16 分钟(不确定这是否正常),但资源监视器显示了类似的 I/O 问题(它使用的最多 I/O 是 100 MB/s),没有其他运行:

DBCC CHECKDB 的资源监视器

这是我第一次运行时的 sp_whoisactive 结果DBCC CHECKDB,然后在完成 5% 后,请注意,即使已经完成 5%,估计剩余时间也增加了大约 5 分钟。

开始: sp_whoisactive DBCC CHECKDB 启动

5% 完成: sp_whoisactive DBCC CHECKDB 5% 完成

我猜这是正常的,它只是一个估计值,对于 250 GB 的数据库来说,16 分钟似乎并不算太​​糟糕(虽然我不确定这是否正常),但 I/O 再次达到最大值大约 10% 的驱动器功能,在服务器或 SQL 实例上没有运行其他任何东西。

这些是 的结果,DBCC CHECKDB没有报告错误。

我也遇到了奇怪的SHRINK命令缓慢问题。我刚刚尝试SHRINK了释放 5% 空间(大约 14 GB)的数据库。它只用了大约 1 分钟就完成了 90% 的SHRINK:

快速收缩至 90%

大约 5 分钟后,它仍然停留在相同的完成百分比,我的事务日志备份(通常在 1-2 秒内完成)已经争用了大约 30 秒:

收缩卡在 90%

15 分钟后SHRINK刚刚完成,而事务日志备份现在仍在争用大约 6 分钟,仅完成 50%。我相信他们在完成后立即SHRINK完成。资源监视器一直显示 I/O 仍然很糟糕:

收缩完成

收缩的资源监视器

SHRINK然后,当它完成时,我收到了命令错误:

收缩错误

我SHRINK再次重试,结果与上述完全相同。

然后我尝试手动将 T-SQL 备份脚本编写到 P: 驱动器上的文件中,并且运行速度很慢,就像维护计划备份作业一样:

T-SQL 手动备份

大约 3 分钟后我最终取消了它,它立即回滚。

概括:

巧合的是,在安装 Windows 更新后,备份维护计划作业每晚都会慢 40 倍(从 15 分钟到 15 小时)。回滚这些 Windows 更新并不能解决问题。SQL Server 等待类型、资源监视器和 Microsoft DiskSpd 表明存在磁盘问题(特别是 I/O),但来自 Paul Randall 查询、PerfMon 和 VMWare 日志的所有其他测量结果均未报告磁盘的任何问题。恢复特定数据库的备份很快,并且几乎使用了完整的 1 GB/秒 I/O。我在挠头……

sql-server performance database-performance sql-server-2016 database-backup
  • 1 个回答
  • 460 Views
Martin Hope
Xin
Asked: 2021-02-18 20:58:15 +0800 CST

我可以使用“Windows Server Backup 功能”或“wbadmin”来备份 MariaDB 吗?

  • 0

我正在为 Windows Server 上的 MariaDB 制定备份策略。

为了让我的生活更轻松,我想知道是否可以使用“Windows Server Backup 功能”或“wbadmin”作为 MariaDB 的备份工具。

mariadb database-backup windows-server-backup
  • 1 个回答
  • 68 Views
Martin Hope
Billie
Asked: 2020-06-06 00:35:33 +0800 CST

在 Windows 环境中备份 OpenLDAP

  • 0

我需要找到一个如何在 Windows 环境中备份 OpenLDAP 数据(数据目录)的概念。我用谷歌搜索了一下,发现:https ://github.com/elmar/ldap-git-backup 。但这个框架适用于 Debian 环境。

有人知道 Windows 环境的框架吗?有人知道替代概念吗?

windows openldap database-backup
  • 1 个回答
  • 169 Views
Martin Hope
eddiewould
Asked: 2017-07-20 15:13:40 +0800 CST

备份 RavenDB - 在没有 VSS 的情况下备份数据目录是否安全?

  • 0

RavenDB 的文档基本上表明有几种备份 RavenDB 数据库的方法:

  • 使用提供的 Raven.Backup.exe 工具
  • 从“工作室”Web 界面启动导出
  • 使用客户端 API
  • 使用 VSS(Volume-Shadow-copy-Services)复制 RavenDB 数据目录
  • 使用“走私者”工具或通过工作室 Web 界面启动导出(不是真正的备份)。

我相信我的组织的备份是“天真的”完成的(即直接复制 RavenDB 数据目录,不涉及 VSS)。

问题:

  • 直接复制 RavenDB 数据目录(不使用 VSS)是否存在风险?本能地,这对我来说似乎是一个坏主意(TM)。
  • 如果我们确实想开始使用 VSS,我们应该怎么做呢?

谢谢!

database-backup
  • 1 个回答
  • 200 Views
Martin Hope
HonoredMule
Asked: 2016-12-20 07:54:47 +0800 CST

是否有(大部分)安全的方法来使用 zfs 快照备份实时 MySQL 数据库

  • 4

基本上我正在寻找的是一种告诉mysql(percona-flavored)采取以下步骤的方法:

  • 将所有提交的事务刷新到文件系统
  • 开始缓冲所有事务(使文件系统保持一致状态)
  • 等我做点什么(拍摄 zfs 快照)
  • 取消缓冲写入并恢复正常操作

允许 DDL 语句中断备份的解决方案是可以接受的(因为这种备份解决方案将被频繁应用,而 DDL 语句将非常罕见 - 最坏的情况是不得不比预期多回滚一个小时的数据库)。

备份操作对性能的破坏应该是最小的,但这不是一个负载很重的系统。在每个数据库或系统范围内执行此过程的解决方案都很好,尽管后者在某种程度上是首选。

zfs database-backup percona
  • 1 个回答
  • 720 Views
Martin Hope
user2629636
Asked: 2016-11-08 10:37:49 +0800 CST

SQL 2012 事务日志备份不会截断日志

  • 1

我是数据库管理的初学者,所以请耐心等待。我有一个 500MB 的小型 DB 和一个非常大的事务日志 (19GB)。我想把它保持在“完全恢复”模式,所以请不要建议“简单”恢复模式。

我一直在研究如何减少事务日志的大小,我正在尝试实施这些建议,但日志大小没有改变。

首先,我的工作是:我有一个每日备份任务,在维护计划中备份所有数据库。这是一种“完整”备份类型,并且似乎运行良好。我看到每天备份一个文件,类似于数据库本身的大小。

现在我有了完整备份,我继续进行手动“事务日志”类型的备份,其中包含“截断事务日志”选项。

备份在几秒钟内完成,创建一个大小为几兆字节的文件,但事务日志的大小保持不变。

我究竟做错了什么?

sql-server database-backup sql-server-2012
  • 2 个回答
  • 11817 Views
Martin Hope
Orphans
Asked: 2016-10-28 04:54:24 +0800 CST

在automysql中添加mysqldump参数

  • 0

请原谅任何格式或语法错误。

我目前正在使用 automysqlbackup 对我的 mySQL 数据库进行本地备份。我最近开始遇到与 automysqlbackup(或者实际上是 mysqldump)相关的问题,它在转储之前确实锁定了表。

我无法访问任何 mySQL 用户或 root 用户,只有 /etc/mysql/debian.cnf。

我需要添加参数“--lock-tables=false”,以便 automysqlbackup 不会锁定表。我知道随之而来的风险。

mysql mysqldump database-backup
  • 2 个回答
  • 520 Views
Martin Hope
P. Bender
Asked: 2016-10-25 07:59:12 +0800 CST

Cassandra 快照恢复:随机丢失数据

  • 5

我很难在 Apache Cassandra(版本 3.0.9)上恢复快照。据我所知,我正在遵循 datastax 博客上描述的程序以及其他几个程序(例如:http ://datascale.io/cloning-cassandra-clusters-fast-way/ )。然而我可能会丢失一些东西,每次我进行恢复时,数据都会丢失。

设置: 6 个节点集群(1 个 DC,3 个机架,每个机架 2 个节点),复制因子设置为 3。机器托管在 AWS 上。

备份程序(在每个节点上):

  1. nodetool snapshot mykeyspace
  2. cqlsh -e 'DESCRIBE KEYSPACE mykeyspace' > /tmp/mykeyspace.cql
  3. nodetool ring | grep "$(ifconfig | awk '/inet /{print $2}' | head -1)" | awk '{print $NF ","}' | xargs > /tmp/tokens

我得到了 nodetool 快照命令生成的文件,并在 S3 上将它们与令牌和 cql 一起备份。

恢复过程(对于每个节点,除非指定):

(创建新虚拟机后)

  1. 下载快照、令牌和密钥空间
  2. 停止服务卡桑德拉
  3. 删除/var/lib/cassandra/commitlog/*和/var/lib/cassandra/system/
  4. 将令牌插入cassandra.yaml
  5. 启动服务卡桑德拉
  6. mykeyspace.cql仅从一个节点上恢复 mykeyspace
  7. 等待复制并停止服务 cassandra
  8. 删除.db文件夹中的文件/var/lib/cassandra/data/mykeyspace/
  9. 对于每个表,将快照文件 ( .db, .crc32, .txt) 复制到/var/lib/cassandra/data/mykeyspace/$table/
  10. 重启服务cassandra
  11. 运行nodetool repair mykeyspace -full,一次一个节点

结果 :

总是有缺失的行,每个表的数量大致相同,但绝不是相同的。我试图“混淆”一些过程,比如在令牌之前恢复密钥空间,nodetool refresh在修复之前运行,但我每次都遇到同样的问题。

由于我距离“良好”恢复不远,我认为我遗漏了一些非常明显的东西。分析日志并没有真正帮助,因为它们没有显示任何错误/失败消息。

欢迎任何帮助:) 如果需要,我当然可以提供更多信息。

编辑:没有人?我用 cassandra 版本(3.0.9)更新了这个问题,我一开始就忘记了。我再次尝试恢复,但没有运气。我真的没有更多的想法:(

backup restore data-loss database-backup cassandra
  • 2 个回答
  • 2976 Views
Martin Hope
Alexander
Asked: 2016-10-11 13:32:47 +0800 CST

备份 PostgreSQL - 提示输入密码

  • 1

操作系统:Ubuntu Xenial 16.04 LTS

PostgreSQL 版本:9.5.4

我正在尝试在我的服务器上设置自动数据库备份,每次运行时pg_dump,它都会告诉我没有提供密码。这是我用来测试的命令:

pg_dump --host $DB_HOST --port 5432 --username $DB_USER --no-password  --format custom --blobs --verbose --file ~/backups/postgresql/test.backup $DB_NAME

我所有的环境变量都工作得很好。为了向 PostgreSQL 提供密码,我.pgpass在~/.pgpass. 这是它的样子:

# 主机名:端口:数据库:用户名:密码 $DB_HOST:5432:$DB_NAME:$DB_USER:$DB_PASS

该文件具有指南0600中指定的权限。然而,由于某种原因,它没有在我运行时使用密码。我在网上查看了其他答案和多个指南,但仍然无法弄清楚问题所在。pg_dump

任何帮助将不胜感激。

ubuntu postgresql database-backup
  • 1 个回答
  • 943 Views
Martin Hope
Neal
Asked: 2012-07-05 05:40:03 +0800 CST

如何备份包含数千个文件的数据库

  • 2

我正在使用运行定制软件包的 Fedora 服务器。服务器软件很旧,它的数据库由 1,723 个文件组成。数据库文件不断变化——它们不断增长,变化不一定附加到最后。所以现在,我们目前每 24 小时在午夜备份一次,此时所有用户都离开系统并且数据库处于内部一致状态。

问题是我们有可能失去一整天的工作价值,这是无法恢复的。所以我想知道是否有办法对这些数据库文件进行某种即时快照,我们可以每 30 分钟左右备份一次。

我已经阅读了有关 Linux LVM 快照的信息,并且我认为我可以通过拍摄快照、将文件同步到备份服务器然后删除快照来实现目标。但我以前从未这样做过,所以我不知道这是否是“正确”的解决方法。

对此有什么想法吗?有更好的解决方案吗?

谢谢!

linux database-backup
  • 2 个回答
  • 116 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve