我有一个包含近 1TBFILESTREAM数据的数据库,我不需要备份(如果数据被删除,它会在几个小时内自动重新创建,所以它并不重要)。大多数数据每隔几天就会更改一次,因此差异备份并不能真正帮助减小大小。
通过将恢复模式设置为Full,创建一个单独FILEGROUP的FILESTREAM,然后只备份“主要”,我让备份按照我需要的方式工作FILEGROUP。这导致的问题是日志文件(也被备份)现在不必要地大,因为它包含FILESTREAM数据。
SIMPLE恢复模式剥夺了我对特定FILEGROUPs进行备份的能力,所以我认为这也不是一种选择。
我的想法是将FILESTREAM数据移动到一个单独的数据库,但现在我正在失去参照完整性,并且肯定还会继承许多其他问题。
有没有办法在Simple恢复模式下创建部分备份(不将FILESTREAM表设置为只读)?如果没有,我的问题还有其他合理的解决方案吗?
sql-server backup transaction-log filestream sql-server-2014
我在 SQL Server 2012 Express 上运行一个简单的数据库。
就在今天,当我备份数据库时,.bak文件大小是几分钟前上一次备份的两倍。我今天做了几次备份(通过 SQL Server Management Studio -> 备份类型:完整),每一次备份,.bak文件都会加倍。
在 SQL Server Mgmt Studio 中,当我右键单击我的数据库 -> 'Reports' -> 'Backup and Restore events' -> 展开 'Successful Backup Operations':
这里的报告显示最新的备份大小记录为 55MB,但当我转到实际.bak文件时,它是 260MB。今天的每个其他备份也被记录为 55MB 大小,而它们对应的.bak文件大数倍(并且随着每次备份操作而增长)。
可能出什么问题了?自从这开始发生以来,我没有对数据库进行任何更改。
PostgreSQL 内置的备份机制并不总是很合适。有时,您希望将应用程序置于静止状态,因为它具有您要在备份 PG 数据的同时进行备份的外部数据。但是将应用程序置于静止状态的唯一方法是“锁定”数据库。PG 缺乏数据库范围或集群范围的锁定机制。将 PG 置于只读状态将是以下解决方案中的一部分:
我不得不将几个 SQL Server 2008 数据库移动到我们的新 db 服务器,所以我将它们全部备份(到 .bak 文件),将这些文件复制到新盒子并恢复它们(全部使用 SQL Management Studio 完成)。
一切顺利,但现在我发现我无法使用继续在旧 RDBMS 上工作的 SQL Server 帐户登录任何数据库。顺便说一句,我的 Windows 身份验证登录仍然可以正常工作。
我有这个想法,用户和权限都将无缝复制到新的数据库服务器上,但似乎某处出了问题。我将不胜感激评论/建议/提供帮助;-)
是的,我将在他们两个上运行 strace ......但是,我想知道......
我刚刚备份了一个 SQL Server 数据库。MDF 和 LDF 文件总共大约 29 GB,但 .bak 文件只有 23 GB,小了大约 20%。
当一组数据的一个版本小于包含相同数据的另一个版本时,我的第一个猜测是数据压缩,但压缩通常会产生比 20% 更好的压缩率,特别是对于高度有序的数据(例如数据库表。 ) 此外,压缩数据不容易进一步压缩,但我知道 .bak 文件可以压缩。
因此,如果数据没有被压缩,并且没有任何东西被丢弃,(因为进行备份的重点是能够在之后将其恢复到相同的状态),那么下落不明的 20% 是多少?
我目前有一个计划任务,它在每晚凌晨 2 点触发,调用 SQLCMD.exe 并将其传递给 .sql 脚本以运行备份(如下所示)。我们是一家非常小的公司,由于业务方面的重大增长,需求不断增长。此时丢失 1 天的数据将花费数万美元,而去年此时则为几百美元。在我可以将这个数据库平台迁移到一个不同的解决方案,其中数据镜像发生在 SQL Azure 等主要冗余的情况下,我能做的最好的事情是获得更频繁的备份吗?下面的这个脚本是否强制数据库脱机?我可以在用户与数据库交互的情况下运行此脚本吗?
USE CompanyCRM;
GO
BACKUP DATABASE CompanyCRM
TO DISK = 'D:\CRMBackups\CompanyCRMCRM.Bak'
WITH FORMAT,
MEDIANAME = 'CompanyCRM_Backup',
NAME = 'Full Backup of CompanyCRM';
GO
Run Code Online (Sandbox Code Playgroud)
哇,显然这里有一个比 SO 更专注的 DBA 社区。感谢您到目前为止的反馈。唯一缺少的是“如何”。我已经展示了上面我用来做每日备份的 SQL 命令,但增量日志备份示例是 MIA。这不是一个大型数据库,它目前在 SQLExpress 上运行。当我说 HA 或 SQL Azure 时,我特别指的是我们作为小型企业没有的现有架构。此实例目前正在我们唯一的服务器上运行。如果该服务器崩溃,我们的恢复时间将成为一个症结所在。这就是 SQL Azure 变得有吸引力的原因。
所以我有那个复杂的 MySQL 转储作为备份。不幸的是,备份很复杂,我们使用了邪恶的触发器。
我们的一些邪恶触发器有一个以 # 字符开头的注释行。
当我备份数据库时,生成的转储会保存 # 行。问题是当我进行恢复时。以# 开头的行被替换为空行。
所以我正在寻找一种方法来恢复以英镑开头的行的转储。
我正在尝试运行 mysqldump 来创建数据库快照,我发现它会在中途随机停止,而不会报告任何错误。我的数据库相对较小(大约 100MB)并且使用的是 InnoDB。
我正在运行它:
mysqldump --force --single-transaction --quick --user myuser --password=mypass -h mydatabasehost mydb > /tmp/snapshot.sql
Run Code Online (Sandbox Code Playgroud)
检查退出代码报告 0。
我的版本是:mysqldump Ver 10.13 Distrib 5.1.52, for redhat-linux-gnu (i386)
我看过一些类似的帖子,甚至是官方的错误报告,但两种解决方案似乎都不适用。
如何让 mysqldump 获取完整的数据库快照?
编辑:我的数据库目前驻留在亚马逊的 RDS 上。
我一直在想办法完全备份我的 PostgreSQL 数据库。我还没有看到任何解释如何进行完整备份的资源。
我知道 pg_dump 和 pg_dumpall 实用程序。语法很简单,但细节不是很清楚。
看来 pg_dump 只支持特定数据库的“一些”表,而不支持任何类型的配置信息。我猜测诸如权限之类的东西和许多其他东西都没有备份。因此,在完全重新安装 PostgreSQL 数据库的情况下,如果没有大量的手动配置和设置,转储备份将无法工作。
pg_dumpall 备份的内容比 pg_dump 多,但 Postgres 文档中没有提供明确的信息,说明备份转储中还有哪些内容被遗漏了,需要备份。
我需要备份所有 PostgreSQL 配置信息、表、索引、权限、方案等。 如果发生完全灾难,只要我重新安装相同版本的 PostgreSQL,我就不必重新配置任何东西。
例如,我不在乎索引是否是从头开始重新构建的,或者备份是否已经存储了索引......像这样的东西对我来说并不重要......我只希望数据库完全相同还原后的状态与备份时的状态相同。
如果有人可以列出需要备份的内容以实现完整备份,我将不胜感激。当然,如果您能推荐一些工具以及针对列表中各种内容的一些程序,我将不胜感激。请解释您推荐的工具和程序涵盖的总清单上的哪些项目。
backup ×10
sql-server ×5
mysql ×3
mysqldump ×2
postgresql ×2
filestream ×1
innodb ×1
maintenance ×1
percona ×1
permissions ×1
restore ×1