Questions tagged «restore»

从备份重新加载数据库,通常用于灾难恢复,或将数据库副本复制到另一台服务器上。

1
使用FILESTREAM文件组备份和还原SQL Server数据库
我使用SQL Server,并具有一个包含两个文件组的庞大数据库: 主数据库:包含大文件(1MB +)之外的所有数据 FILESTREAM(读/写):包含大文件 现在,备份方案为: 每个星期五获得完整备份(凌晨2点) 除周五外,每周的每一天都将获得差异备份(凌晨2点) 由于数据库很大,并且正在远程服务器上生产,因此,每当我想将数据库带到本地环境以创建测试数据库时(每周一次),我都必须同时带主数据流和文件流。 我希望能够更改备份和还原的方式,而只需要携带主要文件组,而不必考虑文件流。这样,每周我只带主要文件组,而不带所有假定文件流的信息。 我认为可能存在很多问题,并且在访问文件时所有文件流引用都可能丢失。我想知道在执行备份时是否可以修改所有文件流列的内容,或者使用测试环境中托管的其他文件流。另外,我听说过仅部分文件组进行零碎恢复的情况,但是我对如何执行它有很多疑问。 问题1:我可以遇到这种情况吗? 问题2:只有一个完整备份并将差异备份/事务日志带到测试环境是个好主意吗? 问题3:我可以有更好的方案进行备份和还原吗? 我很乐意提出建议。如果您有任何示例案例,请通过T-SQL查询向我展示。

1
在PostgreSQL 8.3上备份并在PostgreSQL 9.4中还原后,数据库大小减小了
我pg_dump在托管在PostgreSQL 8.3服务器上的JIRA数据库上进行了操作。之后的数据库大小vacuum full为217132652(大约207 MB)。 然后,我使用以下命令在PostgreSQL 9.4服务器上还原了JIRA数据库: $ psql -X -v ON_ERROR_STOP=1 -d jira2 -U jira -h localhost < jiradb2017_03_12.sql 我假设自从使用以来,还原将在发生任何错误时退出ON_ERROR_STOP=1,但是SQL脚本正确完成了(尽管有些警告与数据还原无关)。 我最终得到了一个大小为158019348(大约151 MB)的数据库。 那么,这是什么故事呢?我是否可以仅假设数据库已成功恢复并且PostgreSQL优化了其存储引擎(介于8.3和9.4版本之间),并且正在更有效地利用空间?


2
缩小SQL Server事务日志
我目前必须处理已经失控的SQL Server事务日志。免责声明:我不是dba,这也不是我的专业领域,所以请多多包涵。 目前,我有一个用于500MB数据库的115GB事务日志文件,(很显然)一段时间以来,该日志文件的管理不善,使其处于此状态。 最重要的是在用尽之前回收此文件占用的磁盘空间!有人告诉我,增加驱动器的大小不是一种选择,即使是暂时的,并且根据过去的增长,我们需要尽快采取行动。 据我了解,最好的方法是使数据库处于完全恢复模式,但要定期备份日志文件,在一段时间内对其进行监视,并调整初始大小和增量以适应需要。很好 看到我们在午夜进行常规的完整数据库备份时,对我来说暂时将数据库置于“简单恢复模式”(在其中一种备份运行之后),收缩日志文件以收回(几乎所有)空间以及然后使用上述备份策略将其放回完全恢复中? 我的想法是,如果这段时间发生了一些事情,我们可以简单地还原完整备份,而无需使用日志。 更新 一些额外的细节,以回答一些答案和评论: 我们确实希望保留执行时间点还原的功能,因此数据库应保持完全恢复模式。 t-log文件变得如此之大的原因是它从未被备份过。验证为log_reuse_wait_desc返回“ LOG_BACKUP”。

1
共享驱动器上的即时文件初始化
之前我曾问过类似的问题,但以前我曾问过有关将备份移到共享位置的问题。这次我很好奇:如果要还原共享驱动器上的数据库,是否需要在该服务器上或仅在运行SQL Server的服务器上启用IFI? 我问的原因是我正在还原一个非常大的数据库,并且在最近几个小时内一直处于100%恢复状态。等待类型sp_whoisactive为: (28472716ms) `PREEMPTIVE_OS_WRITEFILEGATHER. 我唯一看到的是未启用IFI的情况,但是我确实在SQL Server上启用了该功能,但在共享驱动器服务器上却未启用它。

1
使用复制数据库向导时发生超时过期错误
微软让我相信,SQL Server 2012复制数据库向导是将SQL Server 2000数据库复制到SQL Server 2012的最佳方法。经过几个小时的努力,我得以解决一些问题,并且能够导入到将中等大小的SQL Server 2000数据库转换为SQL Server 2012。 但是,对于30GB的数据库,该向导始终会失败,并出现以下错误: 消息:传输数据时发生错误。有关详细信息,请参见内部异常。 StackTrace:在Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer() 处的Microsoft.SqlServer.Management.Smo.Transfer.TransferData() InnerException->超时已过期。在操作完成之前超时或服务器没有响应。 CREATE DATABASE失败。列出的某些文件名无法创建。检查相关错误。 StackTrace: 位于System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔值BreakConnection), 位于System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 在System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj) 我已经仔细检查过,这不是文件路径,权限或磁盘空间问题。我认为该CREATE DATABASE步骤需要2分钟左右的时间,并且向导假定操作已超时。我手动创建了一个具有相同文件路径的空数据库,并使用SQL进行了文件大小调整,这是可行的。有趣的是,一个1GB的数据库副本由于相同的错误而失败,并在第二次尝试中成功。 请帮忙。

2
如何等待PostgreSQL可启动/可恢复?
我正在运行自定义Linux发行版的虚拟机上测试将PostgreSQL 8.2.1升级到9.2。升级过程如下: 启动pg服务 清理所有数据库(不确定是否需要这样做) 备份 pg_dumpall 停止pg服务 移出存储数据的目录(/var/pg;这是一个简单的单服务器设置) 安装PostgreSQL 9.2 initdb 启动服务器 恢复转储的数据 reindexdb 所有数据库 重新创建referential_constraints视图 清理所有数据库(此升级后需要AFAIK) 此过程在一台主机上正常运行,可以毫无问题地进行备份和还原。在另一台具有不同数据库的机器上,从1到7的点可以正常工作,但是除非添加sleep 1after initdb,否则服务器将无法启动,即使那样,由于“数据库系统正在启动”,因此无法还原转储的数据。除了这些可怕的骇客之外,有什么标准的方法可以解决此问题: sleep在进行任何一项操作之前要花一些时间, 循环播放,直到它起作用或达到足够的超时,或者 循环直到它接受一个琐碎的查询或达到超时。 编辑:“ 解决方案 ”根本没有用。如何确定数据库已准备好运行还原?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.