标签: backup

如何查找 MS SQL Server 中发生的频繁和/或大型事务?

每天都会经历当天所有事务日志备份的总和约为 1GB,而在那周结束时,完整数据库备份约为 180MB。对于用于向供应商/客户购买/销售商品的商业数据库,与实际数据库的大小相比,一天的事务日志备份的总大小至少比我预期的大 10 倍。

如何找到哪些 sql 插入/更新/删除/等操作导致如此多/如此大的事务?我设想某个地方有一些错误的代码,它们会重写整个表只是为了更新/插入 1 行,或者一遍又一遍地更新相同的行。在检查所有数据库应用程序代码之前,我想知道什么是错误事务。

大多数问题,包括为什么事务日志不断增长或空间不足?和其他文章涉及的人的事务日志文件不断增长,通常是因为他们从不备份它。我的问题并非如此。我的事务日志文件的大小不再增加,我的问题是如何查找哪些事务导致每个备份的大小定期变大,而不是日志文件的大小。

我们有一个 MS SQL Server 2012 数据库

  • 使用完全恢复模型
  • 每周完整备份,周五晚上。(.bak)
  • 每晚差异备份 (.dif)
  • 每天 3 次事务日志备份 (.trn)(编辑:有人指出,为了更好的 RPO,应该更频繁地备份)
  • 所有备份都使用压缩。
  • DB仅在正常办公时间使用
  • DB 有一个应用程序可以执行各种任务,包括一些计划任务

我意识到下面列出的实际大小在计划中并不大,因为该数据库只有几个月的历史,但如果随着数据库的增长这种趋势继续下去,我预计会在多个方面出现麻烦。以下是过去 2 周的备份文件大小。

14/11/2014 11:05 PM 200,873,984 Production_backup_2014_11_14_230500_8220928.trn
14/11/2014 11:18 PM 173,499,904 Production_backup_2014_11_14_231753_3214232.bak
15/11/2014 06:00 AM 321,033,728 Production_backup_2014_11_15_060001_9915061.trn
15/11/2014 10:00 AM 47,616 Production_backup_2014_11_15_100001_1784634.trn
15/11/2014 02:00 PM 59,392 Production_backup_2014_11_15_140001_0461018.trn
15/11/2014 06:00 PM 62,976 Production_backup_2014_11_15_180001_5854303.trn
15/11/2014 11:05 PM 71,506,432 Production_backup_2014_11_15_230501_3937283.dif
16/11/2014 06:00 AM 12,906,496 Production_backup_2014_11_16_060009_1822596.trn
2014 年 11 月 …

sql-server backup transaction-log system-tables

5
推荐指数
1
解决办法
1627
查看次数

在 PostgreSQL 9.3 下*具有*权限导出角色

PostgreSQL 下的备份新手。我一直在使用常规命令备份数据库,效果很好。除非不存储任何用户或权限。我知道我需要单独做这件事。

我一直在使用以下命令来转储集群上的用户:

pg_dumpall -U backups -r > /tmp/globals.only.dump
Run Code Online (Sandbox Code Playgroud)

-r 或 -g 返回相同的结果。我最终在文件中得到的只是:

CREATE ROLE backups;
ALTER ROLE backups WITH SUPERUSER NOINHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION PASSWORD '0000000000000000000000000000000000';
Run Code Online (Sandbox Code Playgroud)

似乎所有权限都丢失了,但我通过 NaviCat 设置了其中 15 个权限。

手动重新创建所有权限显然对于生产来说是不可行的。如何强制随角色导出权限?随后,我如何将它们导入到另一个 PostgreSQL 服务器中?

postgresql backup postgresql-9.3

5
推荐指数
1
解决办法
8798
查看次数

如何运行 pg_dump 以便它不会减慢其他连接的速度?

我每天在 PostgreSQL 9.3.14 数据库上运行一次 pg_dump。50 GB 大小:

pg_dump -Fc dbname > file
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,虽然pg_dump运行需要几个小时,但所有其他数据库连接都非常慢。

有什么方法可以减少pg_dump消耗的资源,或者有没有更合适的方法来创建不会大大降低数据库服务器速度的定期备份?

例如,从不同的服务器运行 pg_dump 是否有助于其工作服务器上的数据库 I/O?

postgresql backup postgresql-9.3 pg-dump

5
推荐指数
1
解决办法
1612
查看次数

为什么mysqldump会停止整个备份的从属SQL线程?

我最近意识到,--master-data当我真正想要的是时,我正在使用从复制从属转储备份--dump-slave。切换到 后--dump-slave,我发现这mysqldump将在备份期间停止从属 SQL 线程(这从文档中可以清楚地看出 - 这并不奇怪)。

我想知道是否有人可以解释为什么整个备份需要停止从属服务器的 SQL 线程?我正在使用--single-transaction,并且希望在备份开始时获得一致的快照。即使事务由 SQL 线程处理,这也应该是可能的。即使从属 SQL 线程由于已mysqldump获取某些锁而完全被阻塞,也应允许从属在备份期间继续(尝试)执行 SQL DML 语句。

我也可以理解希望至少暂停从属 SQL 线程,以便 get-slave-status 然后启动事务操作可以一致地发生,但是一旦转储操作开始,从属 SQL 线程就可以重新启动,对吧?

--master-data与复制主机一起使用时,全局锁被获取一次然后释放,从而允许常规应用程序负载在转储操作期间继续。为什么不能以同样的方式在从属设备上完成此操作?任何人可以提供的任何信息都会非常有帮助。

mysql mysqldump backup master-slave-replication

5
推荐指数
1
解决办法
953
查看次数

“sp_configure 允许更新”有什么作用?

今天我收到一个错误 (DTSER_FAILURE),但我可以通过编辑维护计划来修复它(这个错误是由于维护计划搜索已删除的数据库,而我在设置中使用了“选定的数据库”)。

但是在互联网上,我读了一些帖子说我应该SP_CONFIGURE 'ALLOW UPDATES',0

这个选项有什么影响?

我在 Microsoft 页面上读到此选项无效并且已弃用。

sql-server backup maintenance-plans sql-server-2014 sp-configure

5
推荐指数
1
解决办法
4248
查看次数

快速备份和恢复 MySQL 数据库以恢复最近的更改

我有一个相当大的 MySQL DB (InnoDB),大小约为 400 MB。因此,使用 mysqldump转储整个数据库并将其恢复需要永远(超过 15 分钟,这是不可接受的)。

出于调试目的,我需要针对数据库的某个“版本”运行我的代码,然后恢复所有更改(如果有)并重试(可能多次)。为了重现错误,我需要始终从相同版本的 DB 开始。

有没有办法手动指示数据库创建时间点快照,然后按需将其恢复?理想情况下,这应该只需要几秒钟(我想会使用一些写时复制方法)。

我正在寻找独立于最终应用程序的解决方案。想象一个您需要在其上运行机器人测试的 Web 应用程序(其中包括多个请求/响应周期)。此外,如果我们将应用程序视为可能有缺陷的应用程序,我们也不能相信它能够可靠地管理事务回滚。

我只是尝试/var/lib/mysql使用rsync. 恢复后甚至无法启动 MySQL,可能有一些文件留在某处破坏了完整性。无论如何,我一直在寻找更高级别的解决方案,将 FS 级别的备份作为最后的希望。

mysql innodb backup snapshot restore

5
推荐指数
1
解决办法
2131
查看次数

将数据库邮件配置保存到临时表中

我目前正在处理一堆服务器,它们有不同的数据库邮件配置。

我可以看到每个服务器的数据库邮件配置

我使用以下脚本:

--==========================================================
-- getting the Database Mail Configuration
-- Marcelo Miorelli
-- 1-April-2014
--==========================================================

select @@servername
--SQLSALON1\STOCKALLOCATION



-- http://dba.stackexchange.com/questions/47058/how-can-i-see-the-current-database-mail-configuration

EXEC msdb.dbo.sysmail_help_configure_sp;
EXEC msdb.dbo.sysmail_help_account_sp;
EXEC msdb.dbo.sysmail_help_profile_sp;
EXEC msdb.dbo.sysmail_help_profileaccount_sp;
EXEC msdb.dbo.sysmail_help_principalprofile_sp;

EXEC msdb.dbo.sysmail_help_account_sp
Run Code Online (Sandbox Code Playgroud)

实际上,msdb.dbo.sysmail_help_account_sp在这方面,程序是我最喜欢的。

现在我想通过电子邮件发送前一天的备份历史记录(仅完整备份和差异备份),我需要找出每个服务器的配置文件名称。

我想通过将上述过程的内容保存到临时表或表变量中来完成此操作,并在我拥有所需的所有数据并且即将通过电子邮件发送给他们时从中查询信息。

对于那些程序,特别是 sysmail_help_account_sp,我该如何做到这一点?

我特别需要找出profile name. 我已经用于DBA下面的脚本。

这是我用来生成电子邮件内容的脚本:

--=====================================================================================================================
-- sql server backups report in HTML format to be emailed   
--http://dba.stackexchange.com/questions/81432/how-do-i-use-powershell-to-get-a-sql-server-backup-status

--marcelo miorelli
--19-nov-2014
--=====================================================================================================================

   DECLARE @Body VARCHAR(MAX),
        @TableHead VARCHAR(MAX),
        @TableTail VARCHAR(MAX)
    SET NoCount ON ; …
Run Code Online (Sandbox Code Playgroud)

sql-server backup dynamic-sql database-mail sql-server-2016

5
推荐指数
1
解决办法
857
查看次数

如何连接到微软azure?

我们一直在保存其中一台生产服务器的备份(实际上是一个 Always On 可用性组

这就是我备份和保存到 azure 的方式

    sqlcmd -E -S $(ESCAPE_SQUOTE(SRVR)) -d master 
-Q "EXECUTE dbo.DatabaseBackup 
@AvailabilityGroups = 'SQLAG',
@URL = 'https://MYCOMPANYbackups.blob.core.windows.net/SQLMAINSERVER-datafiles-full',
@Credential = 'SQLAzureCredential',
@BackupType = 'FULL',
@Compress = 'Y',
@Verify = 'Y',
@LogToTable = 'Y'" -b
Run Code Online (Sandbox Code Playgroud)

这是我在尝试连接到 Azure 时看到的:我的存储帐户是什么? 在此处输入图片说明

我有一份工作,我计划向我发送一封关于服务器上所有备份的电子邮件。收集有关备份的信息并发送电子邮件脚本在这里

电子邮件告诉我备份在哪里。例如:

这是一张用于说明目的的图片: 在此处输入图片说明

我如何才能访问备份文件?

这些azure 权限在哪里管理

编辑:

大卫布朗的回答让我明白了,谢谢大卫。

我只是在这里添加了一组将我带到备份的步骤(在成功连接到 azure 之后)。

01 - 点击 Blob

在此处输入图片说明

02 - 选择其中一个容器

在此处输入图片说明

03 - 文件将在那里 - 准备下载

在此处输入图片说明

这篇文章也很有趣:

第一眼:在资源管理器部署中备份文件和文件夹

sql-server backup availability-groups sql-server-2016 azure-blob-storage

5
推荐指数
1
解决办法
527
查看次数

需要关于备份策略的建议

我们的客户已同意一天数据丢失的 RPO。所以我将改变备份策略以消除空间限制。

数据库处于完全恢复模式。

现有的备份计划:-

  1. 我们每天对数据库进行一次完整备份。

想改变如下: -

  1. 每周,在周日或周六,我们都会对数据库进行完整备份。
  2. 并计划每天对​​数据库进行一次事务备份或差异备份。

这将避免我的空间限制。

如果我们备份事务日志,那么 RTO 会不会更大,因为我们每天只备份一个事务?

无论如何,我们需要执行事务日志备份以在日志文件中腾出空间。

那么你能建议哪种备份类型会更好,差异或事务日志?

如果我走错了方向,请根据我的 RPO 建议一个备份策略。

谢谢。

sql-server backup t-sql restore sql-server-2012

5
推荐指数
2
解决办法
944
查看次数

SQL Server 备份与使用 VSS 的基于第三方快照的备份

假设使用 SQL Server 备份命令(内部创建.bak文件)将SQL Server 实例或数据库级备份到 NAS 共享或磁带是事务一致的备份是否安全?

在备份到共享驱动器的过程中,您的数据库可以在线。这种类型的备份如何保证应用程序的一致性?

我将这种备份与 VSS 感知硬件级快照以及使用第三方工具的备份选项进行比较,该工具声称 100% 应用程序一致备份。VSS 执行诸如冻结 IO 直到快照完成等操作。

SQL Server 本机备份如何在没有 VSS 的情况下保持其一致性?

sql-server backup consistency

5
推荐指数
1
解决办法
294
查看次数