我们公司有一个非常大的 MySQL 服务器,有近 1000 个数据库,总大小为 500 GB。每个客户都有自己的数据库。而每个数据库大约有120-125张表!
过去我们使用mysqldump进行备份。服务器在创建备份时非常慢,几乎需要 5 个小时才能完成备份。数据库中有 99% 的 Innodb 表。
我知道备份大量数据需要花费大量时间。但备份的最佳解决方案是什么?问题是我们的客户全天候 (24/7) 使用我们的网络应用程序。进行备份时系统非常慢。
重新启动后,SQL Server 上意外未启用 SQL 代理,并且 3 周内没有运行任何作业,包括没有备份(完整、差异或日志)。SQL 代理现已启用。数据库的完整备份已运行。现在日志备份正在运行,并且已经运行了一个多小时(通常在完整备份运行后需要几秒钟)。
有什么潜在的问题需要考虑吗?日志文件变得非常大,大约 200 GB。
我确信我在这里遗漏了一些明显的东西,但是如果我每天都进行完整的数据库备份,为什么我还需要单独的每周和每月备份?或者是不需要单独的每周和每月一次,而只需每周一次和每月一次留出每日一次?
谢谢。
SQL Server在进行备份时,是先将数据读入内存再写入备份文件,还是直接从数据文件中读取数据,直接写入备份文件?我找不到任何有关此的信息,但我想它直接从数据文件读取并写入备份文件。从资源监视器中,我看到了这一点:
正如您所看到的,SQL Server 从 mdf 文件中读取数据并将其写入备份文件。但由于我找不到任何相关信息,所以我只想确认一下。
我一直在阅读一篇又一篇关于数据库备份和快照之间区别的文章,但它们没有任何意义,所以请帮助我理解
\n\n\n“快照是系统/卷在特定时间点的映像。”
\n“备份是执行备份时整个系统/卷的副本。”
\n
\n\n“快照仅保留自上次快照以来数据库的更改\ns”
\n
\n\n“快照制作速度快且尺寸小”
\n
编辑:来源:(来自备份与快照的所有顶级谷歌结果)
\nhttps://phoenixnap.com/kb/snapshot-vs-backup
\n\n\n快照是您的系统/卷在特定时间点的映像。\n
\n备份是执行备份时整个系统/卷的副本。\n
\n
https://www.sqlshack.com/understanding-database-snapshots-vs-database-backups-in-sql-server/
\n\n\n\n数据库快照就像数据库在某个时间点的视图。
\n快照备份的另一个用途是可以为数据库创建\n多个快照,并且可以在不同的时间点\n获取这些快照
\n可以随时创建备份。快照是数据库的\xe2\x80\x9c时间点\xe2\x80\x9d\n副本。
\n
\n\n快照很小,可以快速轻松地制作,而不会对服务器产生太大影响。
\n
有没有办法将 SQL Server 文件(.mdf 和 .ldf)从备份文件 (.bak) 提取到物理位置,而无需restore database?
我需要一个还原查询或脚本来仅从 bak 文件中还原文件,而不需要附加到服务器。请不要谈论恢复后分离查询。
我的 SQL Server 上有 10 个数据库。我们每天 00.00 进行一次自动完整备份。
问题是 10 个数据库中有两个不应该备份,因为管理目前不需要这些数据库;但我不知道如何从自动完整备份中删除这些数据库。
我找不到任何脚本或与备份相关的任何内容。我唯一能找到的是 SQL 代理上的完整备份选项。这些备份也是由 SQL Server 完成的。请帮我解决这个问题。
当我转到 SQL Server 代理> 作业> 完整备份时,我发现以下内容:
我无法弄清楚这到底是什么。这些是备份还是其他什么?这些作业生成的文件正在消耗我的驱动器空间,并且这些作业每天都在运行。
我用谷歌搜索过,但找不到任何有关它的信息。我想知道为什么 SQL Server 默认使用 .bak 扩展名。
我知道有很多不同的软件使用 .bak 扩展名,不仅仅是 SQL Server。
另一个问题,是否还有其他文件格式可用于备份文件?
我正在编写一个脚本,该脚本将创建一个新文件夹并将所有数据库备份到该文件夹中。该脚本将生成新文件夹,但不会将备份保存到该文件夹中。我不确定我错过了什么。先感谢您。
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
DECLARE @DirTree TABLE (subdirectory nvarchar(255), depth INT)
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
SET @path = '\\noc2-storage\IT_Backup\Weekly_SQL\CDADB1\' + @fileDate;
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
IF NOT EXISTS …Run Code Online (Sandbox Code Playgroud)