每天都会经历当天所有事务日志备份的总和约为 1GB,而在那周结束时,完整数据库备份约为 180MB。对于用于向供应商/客户购买/销售商品的商业数据库,与实际数据库的大小相比,一天的事务日志备份的总大小至少比我预期的大 10 倍。
如何找到哪些 sql 插入/更新/删除/等操作导致如此多/如此大的事务?我设想某个地方有一些错误的代码,它们会重写整个表只是为了更新/插入 1 行,或者一遍又一遍地更新相同的行。在检查所有数据库应用程序代码之前,我想知道什么是错误事务。
大多数问题,包括为什么事务日志不断增长或空间不足?和其他文章涉及的人的事务日志文件不断增长,通常是因为他们从不备份它。我的问题并非如此。我的事务日志文件的大小不再增加,我的问题是如何查找哪些事务导致每个备份的大小定期变大,而不是日志文件的大小。
我们有一个 MS SQL Server 2012 数据库
我意识到下面列出的实际大小在计划中并不大,因为该数据库只有几个月的历史,但如果随着数据库的增长这种趋势继续下去,我预计会在多个方面出现麻烦。以下是过去 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 月 …
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 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?
我最近意识到,--master-data当我真正想要的是时,我正在使用从复制从属转储备份--dump-slave。切换到 后--dump-slave,我发现这mysqldump将在备份期间停止从属 SQL 线程(这从文档中可以清楚地看出 - 这并不奇怪)。
我想知道是否有人可以解释为什么整个备份需要停止从属服务器的 SQL 线程?我正在使用--single-transaction,并且希望在备份开始时获得一致的快照。即使事务由 SQL 线程处理,这也应该是可能的。即使从属 SQL 线程由于已mysqldump获取某些锁而完全被阻塞,也应允许从属在备份期间继续(尝试)执行 SQL DML 语句。
我也可以理解希望至少暂停从属 SQL 线程,以便 get-slave-status 然后启动事务操作可以一致地发生,但是一旦转储操作开始,从属 SQL 线程就可以重新启动,对吧?
当--master-data与复制主机一起使用时,全局锁被获取一次然后释放,从而允许常规应用程序负载在转储操作期间继续。为什么不能以同样的方式在从属设备上完成此操作?任何人可以提供的任何信息都会非常有帮助。
今天我收到一个错误 (DTSER_FAILURE),但我可以通过编辑维护计划来修复它(这个错误是由于维护计划搜索已删除的数据库,而我在设置中使用了“选定的数据库”)。
但是在互联网上,我读了一些帖子说我应该SP_CONFIGURE 'ALLOW UPDATES',0。
这个选项有什么影响?
我在 Microsoft 页面上读到此选项无效并且已弃用。
sql-server backup maintenance-plans sql-server-2014 sp-configure
我有一个相当大的 MySQL DB (InnoDB),大小约为 400 MB。因此,使用 mysqldump转储整个数据库并将其恢复需要永远(超过 15 分钟,这是不可接受的)。
出于调试目的,我需要针对数据库的某个“版本”运行我的代码,然后恢复所有更改(如果有)并重试(可能多次)。为了重现错误,我需要始终从相同版本的 DB 开始。
有没有办法手动指示数据库创建时间点快照,然后按需将其恢复?理想情况下,这应该只需要几秒钟(我想会使用一些写时复制方法)。
我正在寻找独立于最终应用程序的解决方案。想象一个您需要在其上运行机器人测试的 Web 应用程序(其中包括多个请求/响应周期)。此外,如果我们将应用程序视为可能有缺陷的应用程序,我们也不能相信它能够可靠地管理事务回滚。
我只是尝试/var/lib/mysql使用rsync. 恢复后甚至无法启动 MySQL,可能有一些文件留在某处破坏了完整性。无论如何,我一直在寻找更高级别的解决方案,将 FS 级别的备份作为最后的希望。
我目前正在处理一堆服务器,它们有不同的数据库邮件配置。
我可以看到每个服务器的数据库邮件配置。
我使用以下脚本:
--==========================================================
-- 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) 我们一直在保存其中一台生产服务器的备份(实际上是一个 Always On 可用性组)
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 之后)。
01 - 点击 Blob
02 - 选择其中一个容器
03 - 文件将在那里 - 准备下载
这篇文章也很有趣:
sql-server backup availability-groups sql-server-2016 azure-blob-storage
我们的客户已同意一天数据丢失的 RPO。所以我将改变备份策略以消除空间限制。
数据库处于完全恢复模式。
现有的备份计划:-
想改变如下: -
这将避免我的空间限制。
如果我们备份事务日志,那么 RTO 会不会更大,因为我们每天只备份一个事务?
无论如何,我们需要执行事务日志备份以在日志文件中腾出空间。
那么你能建议哪种备份类型会更好,差异或事务日志?
如果我走错了方向,请根据我的 RPO 建议一个备份策略。
谢谢。
假设使用 SQL Server 备份命令(内部创建.bak文件)将SQL Server 实例或数据库级备份到 NAS 共享或磁带是事务一致的备份是否安全?
在备份到共享驱动器的过程中,您的数据库可以在线。这种类型的备份如何保证应用程序的一致性?
我将这种备份与 VSS 感知硬件级快照以及使用第三方工具的备份选项进行比较,该工具声称 100% 应用程序一致备份。VSS 执行诸如冻结 IO 直到快照完成等操作。
SQL Server 本机备份如何在没有 VSS 的情况下保持其一致性?
backup ×10
sql-server ×6
mysql ×2
postgresql ×2
restore ×2
consistency ×1
dynamic-sql ×1
innodb ×1
mysqldump ×1
pg-dump ×1
snapshot ×1
sp-configure ×1
t-sql ×1