Questions tagged «recovery»

重建数据库。


1
数据库的简单或完整恢复模型?
什么时候应该使用完整恢复模型,什么时候应该对数据库使用简单恢复模型? 我一直使用完整恢复模式,因为它是默认模式,但今天我遇到了此错误: SQL Server的Microsoft OLE DB提供程序(0x80040E14)数据库'数据库名称'的事务日志已满。要找出为什么无法重用日志中的空间的原因,请参阅sys.databases中的log_reuse_wait_desc列 特定的数据库实际上是服务器上最小,最不活动的数据库之一,因此我不知道该数据库上的日志如何充满,而不是其他数据库。 为了缩小日志并使数据库可再次访问,我使用以下命令将恢复模型从FULL更改为SIMPLE并缩小了逻辑文件日志 alter database myDbName SET recovery simple go dbcc shrinkfile('LOG FILE LOGICAL NAME', 100) go 它帮助,但现在我需要了解为什么它的帮助下,如何这种情况开始,如何防止这种情况在未来? 编辑: 每天晚上1点,我们都会对服务器上的每个数据库进行脚本化备份。这是由31行脚本完成的,其中最重要的部分是 set @Filename = 'D:\backup\' + convert(varchar, getDate(), 112) + ' - ' + @DBName + '.bak' set @Description = 'Full backup of database ' + …

1
PostgreSQL DELETE FROM失败,并显示“错误:尝试删除不可见的元组”
此问题是从“服务器故障” 迁移而来的,因为可以在数据库管理员堆栈交换中回答。 迁移 3年前。 错误 尝试删除包含无效时间戳记的元组 DELETE FROM comments WHERE date > '1 Jan 9999' OR date < '1 Jan 2000' OR date_found > '1 Jan 9999' OR date_found < '1 Jan 2000'; 结束于 ERROR: attempted to delete invisible tuple 有从2009年的邮件列表讨论完全相同的错误信息,其中OP有它固定的,但我没有发现他是如何做到的或可能是什么导致了这种错误的解释。 由于缺乏对Google的欢迎以及对PostgreSQL的了解有限,我感到无助。 导致腐败的原因 当OS内核崩溃时,我有一个在Debian 8上运行的PostgreSQL 9.5.5服务器(〜4TB数据,所有默认设置,除了增加的内存限制)–大概是在重建交换所在的/ dev / md1时。在此之前,PostgreSQL用400GB的日志文件吞噬了几乎所有磁盘空间。操作系统再也不会启动,磁盘检查还可以,所以我已经从LiveCD启动,并将每个块设备备份到了映像,以防万一。我已经成功地从/ dev …

3
SQL Server在恢复中显示数据库
此问题是从Stack Overflow 迁移而来的,因为可以在Database Administrators Stack Exchange上回答。 迁移 7年前。 如今,电源故障后,一个数据库(恢复:完整)在SSMS中显示“正在恢复”。所以: myDatabase(恢复中)(数据库状态:恢复,关闭) 完成后,“恢复过程”数据库将显示名称myDatabase,而不显示“(恢复中)”。我以为问题已解决,但事实并非如此。 当我启动使用该数据库的应用程序时,额外的文本“(正在恢复)”再次出现在数据库名称旁边。 我一直等到“恢复过程”完成,然后将数据库脱机并恢复在线。 我重新启动服务器,重新启动计算机,当我的应用程序运行时,多余的文本再次出现。在SQL Server日志中,消息“正在启动数据库'myDatabase'”出现几次。该数据库似乎正在运行,因为我可以插入数据,但是状态表明发生了某些事情。 服务器日志未显示任何有趣的内容。唯一的异常是我有30条“正在启动数据库'myDatabase'”。 我知道服务器启动时,每个数据库在准备使用之前都要经过恢复。但是在我的情况下,数据库联机然后显示“ myDatabase(正在恢复)”。如果我关闭该应用程序,数据库将进入状态:正常。这真让我抓狂。 我什至安装了SQL Server的新实例,并将旧数据库“ myDatabase”放在上面。问题仍然存在。 当我运行此查询时: SELECT databasepropertyex('nyDatabase', 'STATUS') 它显示了正在恢复,在线,可疑以及返回到在线然后恢复等。

2
重建事务日志
我们有一个非常大的数据库(〜6TB),该数据库的事务日志文件已删除(在SQL Server关闭的同时,我们已经尝试过: 分离并重新附加数据库;和 删除事务日志文件 ...但是到目前为止没有任何效果。 我们目前正在运行: ALTER DATABASE <dbname> REBUILD LOG ON (NAME=<dbname>,FILENAME='<logfilepath>') ...但是鉴于数据库的大小,这可能需要几天才能完成。 问题 上面的命令与下面的命令有区别吗? DBCC CHECKDB ('<dbname>', REPAIR_ALLOW_DATA_LOSS) 我们应该REPAIR_ALLOW_DATA_LOSS代替执行吗? 值得注意的是,数据是从其他来源派生的,因此可以重建数据库,但是我们怀疑,与重新插入所有数据相比,修复数据库要快得多。 更新资料 对于那些得分较高的用户:该ALTER DATABASE/REBUILD LOG命令在36小时后完成并报告: 警告:数据库“ dbname”的日志已重建。事务一致性已丢失。RESTORE链已损坏,并且服务器不再在先前的日志文件上具有上下文,因此您将需要知道它们是什么。 您应该运行DBCC CHECKDB来验证物理一致性。数据库已置于仅dbo模式。当准备好使数据库可用时,您将需要重置数据库选项并删除所有额外的日志文件。 然后,我们运行了一个DBCC CHECKDB(花了大约13个小时),这是成功的。可以说,我们都已经了解了数据库备份的重要性(并授予项目经理对服务器的访问权限...)。

1
从ibd文件中没有ibdata1的数据文件夹中恢复MySQL数据库
我的WAMP目录意外地被另一个用户删除。MySQL中仅数据文件夹可用。并且,因为只有数据库文件夹(带有数据库名称的“ \ bin \ mysql \ mysql5.6.12 \ data \”中的文件夹)可用。“ \ bin \ mysql \ mysql5.6.12 \ data \”的根目录中包括“ ibdata1 ”的所有文件也将被删除。 数据库文件夹仅包含具有以下扩展名的文件。 * .frm,*。ibd 和“ db.opt”文件。 如何恢复数据库? 我已经尝试恢复bdata1。但是,无法取回它。并且,某些数据库也包含MYISAM。


2
在线页面恢复达到1000个限制
我的任务是尝试恢复遭受损坏的数据库(由于I / O故障,此问题已修复)。我不熟悉数据库或其包含的内容。 我得到了旧的(约3周)完整备份和一系列事务日志...但是缺少事务日志,因此我只能恢复到某个日期。大约有2.5周的数据丢失(并且不断有大量数据添加到该数据库中)。 我还收到了损坏的数据库的副本(可以访问,但是有很多页面损坏/丢失)。 我已经尝试了典型的DBCC CHECKDB命令(仍然没有repair_allow_data_loss,如果没有其他方法,那将是我的最后选择)。 在许多数据库进入数据库之后(数据库是一个1.5 TB的小怪物,我所做的一切都很缓慢并且需要一段时间),我尝试从上次已知的损坏页面备份中恢复联机页面。 为此,我已经完成了一个脚本,该脚本RESTORE DATABASE <foo> PAGE='pages' FROM DISK='<bar.bak>'从DBCC CHECKDB输出中创建了许多命令(基本上是一个正则表达式和一个单独的命令)...到目前为止,效果很好,可以说达到了1000页的限制每个还原命令每个文件(此db上有8个文件)。 因此,它要求我“完成在线还原”,但是我对如何做到这一点感到茫然。我基本上不知道如何完成还原以继续尝试其余页面。 我尝试了一个,RESTORE DATABASE <foo> WITH RECOVERY但是也没有用,它要求我提供我没有的日志。 有人对我如何从此处恢复任何内容有任何提示吗?还是如何“完成”在线还原,以便我可以继续尝试恢复更多页面?如果我尝试脱机还原(基本上添加WITH NORECOVERY到所有内容,然后尝试将其恢复到最后,是否会遇到相同的问题?) 手工计算数据库基本上是不可能的……有数百个表和数百万行,并且没有明确的含义。数SELECT百万行后,损坏的数据库将对查询失败,但是我不确定我可以算出哪里。我试过重建所有非聚集索引,但是有行数据损坏的页面,所以也行不通。 某些数据丢失是可以接受的,但至少应尝试实现数据库的一致性。 损坏的数据库仍处于联机状态,并且客户正在使用它(因此它将不断获取新数据),因此,我在实验室工作台上执行的任何过程都应可在生产数据库上重现(停机将非常困难)。 这是SQL Server 2014 Enterprise PS:我不是DBA ...我是一名程序员,但是客户端尝试了一些“专家” sql灾难恢复服务,但他们已经放弃了,所以我被要求研究一下,看看是否可以做任何事情。 更新:经过多次测试,逐页还原是不可行的,因此我们放弃了这个想法。我们将进行手动恢复(手动从损坏的表中选择丢失的记录,并将其插入到最后一个已知的良好备份中),为此做一些自动化的工具(同样,有成百上千的表)。

4
为什么Mongo卡在STARTUP2中?
我有一个Mongo副本集,其中包含一些辅助副本。承载辅助实例的盒子崩溃并丢失了数据库。 我Mongo再次启动了辅助实例,现在它在STARTUP2中停留了12个小时以上。是否有意义 ?文档说Mongo应该在进入RECOVERING状态之前短时间处于STARTUP2 STARTUP2到底是什么意思?它是从主数据库复制数据库吗?我如何验证它(假设Mongo在Linux中运行)?
13 mongodb  recovery 

3
可用性组数据库卡在“不同步/恢复挂起”模式下
在SQL Server 2014 SP1(12.0.4422.0)实例中升级存储时,我们遇到了以下问题:重新启动SQL Server后,其中两个数据库无法在辅助数据库上启动。在我们安装新的(更大)SSD并将数据文件复制到新卷中时,服务器已脱机几个小时。当我们重新启动SQL Server时,除两个数据库外,所有其他数据库再次开始同步。另外两个在SSMS中显示为“ 未同步/正在等待恢复”。 之前有类似的“ 不同步/恢复中”问题,我检查了“可用性组”->“可用性数据库”部分下的状态,但是它们显示为红色X: 甚至试图暂停数据移动都会产生错误消息: 无法挂起数据库“ StackExchange.Bycycles.Meta”中的数据移动,该数据库位于可用性组“ SENetwork_AG”中的可用性副本“ ny-sql03”上。(Microsoft.SqlServer.Smo) 附加信息:执行Transact-SQL语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo) 由于文件不可访问或内存或磁盘空间不足,无法打开数据库“ StackExchange.Bycycles.Meta”。有关详细信息,请参见SQL Server错误日志。(Microsoft Sql Server,错误:945) 我检查了文件是否存在,没有任何权限问题。我还检查了管理下SSMS中的SQL Server日志,但是没有看到有关挂起恢复或两个数据库有任何问题的信息。 在寻求帮助的过程中,我找到了两篇不同的文章,说需要还原数据库。 当数据库卡在恢复挂起中时,是否有任何方法可以在辅助数据库上恢复数据复制?

2
事务日志文件的内容更详细
我有一个关于事务日志(简称为LDF)内容的问题。我假设数据库具有完整的恢复模型。 我已经读到LDF文件包含(记录)对数据库的每个操作(处于完全恢复模式)。与期间记录BEGIN TRAN; COMMAND(s); COMMIT有何不同?我问是因为显然您可以回滚事务,但是您不能回滚标准命令(在完全恢复模式下)。 我猜想在事务处理期间,被记录到LDF文件中的内容与常规的完全恢复日志记录中的内容不同。那正确吗?有什么不同?难道每个动作都只包含“撤消”操作吗? 在相关说明中,我听说有使用完整恢复LDF文件来“回滚/撤消”标准查询的商业工具。他们是如何做到的呢?他们是否分析LDF内容并尝试提出逆/撤消运算?

2
将bak文件还原为较小的mdf和ldf数据库文件
我有一个遗留下来的数据库,该数据库的设计缺乏噩梦,在这里我将不再赘述,但是服务器上的文件(相对)巨大。我有: MyDatabase.mdf:24.8GB MyDatabase.ldf:114.6GB 每天晚上,该数据库都会备份到.bak文件中,并运送到我们的报告服务器上,并在其中进行还原。.bak文件要小得多,只有1.8GB。 但是,当我尝试在报告服务器上还原它时,由于空间不足,它失败了。服务器上大约有100GB的可用空间,它正试图吞噬原始服务器上所用文件的全部139.4GB。除非我对压缩的认识完全错误,否则我非常有信心1.8GB文件实际上不会扩展7400%。 我的问题:有什么方法可以告诉SQL Server还原此备份文件而无需预先保留该空间?我不在乎任何日志;我只需要那里的数据。我从开发和架构的角度理解数据库,但是我绝不是任何类型的DBA。 这是在SQL Server 2008 R2上。感谢您的帮助或建议。

3
从.ibd,.frm和mysqllogbin文件还原MySQL表
由于某种原因,当我尝试打开存储在其中的表.frm和.ibd文件(无论是在MySQL还是phpmyadmin上)时,它给了我一个语法错误,或者说它不存在。 我读过另一篇与此有类似问题的文章,但是我不知道如何检查是否innodb_file_per_table已启用,并且总体上我真的很困惑。我还将mysql-bin.000002文件的副本转换为txt文件,因此我发现数据库中的数据并未完全丢失。 该数据库是去年创建的。我有6个mysql-bin.00000文件,但由于某种原因,.000002它是最大的。现在,我拥有所有数据库的.ibd和.frm文件,但是对于如何将其还原回MySQL或至少还原为我可以读取的内容,我感到困惑。 我在Windows 2003 Server上使用WampServer 2.4和MySQL 5.6.12。另外,我应该在InnoDB中下载插件吗?

2
什么是孤儿化身?
在本网站上对另一个问题的回答中,对麻省进行了解释。答案提到“孤儿”的化身: …还有其他因素导致ORPHANED化身和过时的备份… 我看到从Oracle的文档其V$DATABASE_INCARNATION包括STATUS列,其可以具有的值ORPHAN,CURRENT或者PARENT,必须是相关的。 什么是“孤立的”化身,以及哪些步骤将导致带有STATUS= ORPHANin 的行V$DATABASE_INCARNATION?

1
无法还原(错误3456)
我的情况不容易弄清楚,以为我会在这个论坛上问其他人是否有建议。 我正在Windows Server 2008R2 Enterprise上运行SQL Server 2008 R2 Standard SP3。 数据库需要一些维护,事实上,我需要在另一台服务器上进行还原。我使用COPY_ONLY进行了完整的数据库备份,再加上一组4个日志备份。 在开始之前,创建tlogbackup1 从转换FULL为BULK_LOGGED恢复模式 添加新文件组 将文件添加到newfilegroup 将newfilegroup设置为默认 选择进入表(在newfilegroup上) 放下原始表 删除原始文件 删除原始文件组 更改新表的名称以匹配原始表 更改newfilegroup的文件名以匹配原始文件组 更改目录中的文件名以匹配原始文件名 在操作系统级别更改文件名以匹配原始文件名 将默认文件组设置为原始文件组 使数据库联机 从转换BULK_LOGGED为FULL恢复模式 完成所有步骤后,创建tlogbackup2 由于还原服务器上驱动器号的更改,所有备份的还原必须使用WITH MOVE。 恢复步骤: RESTORE database SomeDB FROM DISK = 'D:\REPRO\SomeDB.bak' WITH MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf' ,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf' ,MOVE 'SystemData_log' TO …

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.