我有一个相当大的 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 的情况下保持其一致性?
我已通过密码证书加密,我想将其用于备份加密。问题是我无法使用证书(在 T-SQL 语句或维护计划中),因为我无法打开它 - 似乎没有OPEN CERTIFICATE命令。
我希望通过密码加密证书,因为我们的目标是只有一个用户负责在 SQL Server 实例中创建/插入证书。没有其他人能够导出证书并恢复加密的备份。
是否有可能,或者为了加密备份,我必须始终使用数据库主密钥加密证书?
sql-server backup encryption sql-server-2016 sql-server-2017
我一直在挠头解决以下错误,但没有取得太大进展:
$ barman switch-wal --force --archive --archive-timeout 180 pg
The WAL file 0000000100000059000000FF has been closed on server 'pg'
Waiting for the WAL file 0000000100000059000000FF from server 'pg' (max: 180 seconds)
ERROR: The WAL file 0000000100000059000000FF has not been received in 180 seconds
Run Code Online (Sandbox Code Playgroud)
我之前在一次性 VPS 上配置了酒保,一切正常。但是当我尝试在我们最终的 EC2 实例上复制它时,我遇到了上面提到的问题。我确保了以下内容(即使我不记得在 VPS 上这样做过):
这里可能是什么问题?
编辑:添加输出barman check pg
Server pg:
2017-12-08 05:56:31,841 [14559] barman.server ERROR: Check 'WAL archive' failed …Run Code Online (Sandbox Code Playgroud) 我最近看到未知 Netowrk 错误 59,它将完整备份保存到某些服务器上的文件共享。备份发生在不同的时间。
目前使用的是Ola Halengren脚本,使用的sql server版本为2012、2014企业版。
我看到有人建议在 HKLM\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters 中创建名称为“Sesstimeout”且值为 360 的 DWORD。
我的问题是我们应该在目标服务器(文件共享)还是 sql server 所在的服务器上创建它
背景故事:我正在尝试将多个 SQL 2012 数据库的副本还原到不同的环境,但应用程序需要它们(大致)及时“同步”。
(当然,理想的方法是使用完整和日志备份使用完整恢复模式,然后使用相同的时间戳进行时间点恢复。但在我的情况下,我不需要它们完全同步,只需在大约 10 分钟左右,我宁愿只处理完整备份和还原。我确实可以控制完整备份的运行时间,但问题是数据库的大小非常不同,因此完整备份运行的时间很长时间长短不一样。)
所以我的问题是:我应该同步完整备份的开始时间吗?还是结束时间?
换句话说,当我恢复完整备份时,我最终会看到备份开始时或完成时的样子吗?
我已经使用 Ola Hallengren 的脚本几年了,最近升级到 MSSQL2017 允许我开始测试加密备份。在有人问之前:是的,主密钥和加密证书已备份并存储在我们的密码管理器中。
我遇到了以下参数组合的问题:
EXECUTE [OlaHallengren].[DatabaseBackup]
@Databases = 'SYSTEM_DATABASES'
,@Directory = N'\\<SHARE>\SQLBackup\Daily'
,@BackupType = 'FULL'
,@Verify = 'Y'
,@CheckSum = 'Y'
,@Encrypt = 'Y'
,@EncryptionAlgorithm = 'AES_256'
,@ServerCertificate = 'DBBackupEncryptCert<SERVERNAME>'
,@LogToTable = 'Y'
Run Code Online (Sandbox Code Playgroud)
备份运行良好,但验证没有:
Command: RESTORE VERIFYONLY FROM DISK = N'\\<SHARE>\SQLBackup\Daily\<SERVER>\master\FULL\...
Process Exit Code 1.
The step failed.
Run Code Online (Sandbox Code Playgroud)
Ola Hallengren 的脚本无法打开主密钥似乎是一个问题,因为这不起作用:
RESTORE VERIFYONLY FROM DISK = N'\\<SHARE>\SQLBackup\Daily\<SERVER>\master\FULL\<SERVER>_master_FULL_<DATE>_<TIME>.bak'
Run Code Online (Sandbox Code Playgroud)
但这确实:
use master;
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<PASSWORD>';
RESTORE VERIFYONLY FROM DISK = N'\\<SHARE>\SQLBackup\Daily\<SERVER>\master\FULL\<SERVER>_master_FULL_<DATE>_<TIME>.bak'
CLOSE MASTER KEY …Run Code Online (Sandbox Code Playgroud) backup ×10
sql-server ×8
encryption ×2
restore ×2
barman ×1
consistency ×1
dynamic-sql ×1
innodb ×1
mysql ×1
network ×1
postgresql ×1
snapshot ×1
t-sql ×1