Questions tagged «corruption»

数据损坏是指计算机数据在写入,读取,存储,传输或处理期间发生的错误,这些错误会导致原始数据的意外更改

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 …

4
MySQL中继日志已损坏,如何解决?尝试过但失败了
当计算机突然关闭时,MySQL v5.1.61中继已损坏。我试图修复它,但是没有用。 - 我如何解决它?我做错什么了吗? 据我所知,损坏的MySQL中继日志很容易修复: change master to master_log_file='<Relay_Master_Log_File>', master_log_pos=<Exec_Master_Log_Pos>; 其中Relay_Master_Log_File和按Exec_Master_Log_Pos以下方式列出: mysql> show slave status; 但是,当我这样做时change master status ...,出现了主键冲突错误。那怎么可能?上面的过程不正确,还是缺少一些+1? (目前,我只是将--master-data mysqldump从主服务器重新导入到从服务器,这解决了问题。但是,将来,这样做可能不合适。) 以下是有关我的特定问题的详细信息: mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: the-master-host Master_User: replication Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000021 Read_Master_Log_Pos: 33639968 …

1
DBCC CheckDB会丢失哪些类型的损坏?
这个问题是由较早的帖子提示的,我将一个数据库归档以备将来调查,该数据库已恢复,具体操作如下: BACKUP 'BrokenDatabase' detected an error on page (1:123456) in file ’BrokenDatabase.mdf'. Error: 3043, Severity: 16, State: 1. 在链接的问题和我准备进行DBCC PAGE调查的备份中,DBCC CHECKDB顺利通过,但显然存在损坏。 CHECKDB将通过但BACKUP WITH CHECKSUM失败将发生什么类型的损坏?

2
DBCC CHECKDB无法修复的损坏:索引视图包含视图定义未生成的行
TL; DR:我在索引视图中有无法修复的损坏。详细信息如下: 跑步 DBCC CHECKDB([DbName]) WITH EXTENDED_LOGICAL_CHECKS, DATA_PURITY, NO_INFOMSGS, ALL_ERRORMSGS 在我的一个数据库上产生以下错误: 消息8907,级别16,状态1,第1行空间索引,XML索引或索引视图“ ViewName”(对象ID 784109934)包含视图定义未生成的行。这不一定表示此数据库中数据的完整性问题。(...) CHECKDB在表'ViewName'中发现0个分配错误和1个一致性错误。 repair_rebuild是最低修复级别(...)。 我确实知道,该消息表明索引视图“ ViewName”的物化数据与基础查询生成的数据不同。但是,手动验证数据不会出现任何差异: SELECT * FROM ViewName WITH (NOEXPAND) EXCEPT SELECT ... from T1 WITH (FORCESCAN) join T2 on ... SELECT ... from T1 WITH (FORCESCAN) join T2 on ... EXCEPT SELECT * FROM ViewName …

1
SQL 2017 TDE数据库中的备份压缩导致损坏
在SQL Server 2017(CU3)上,每当我在一个TDE数据库上启用备份压缩时,备份过程始终会损坏数据库中的特定页面。如果我运行备份时不进行压缩,则不会损坏它。这是我为验证和重现此问题而采取的步骤: 在数据库“ TDE_DB1”上运行DBCC CheckDB;一切都很好,没有错误; 成功备份数据库而无需压缩;RESTORE VERIFYONLY表示一切都很好; 成功将数据库还原为“ TDE_DB2”;一切都很好,DBCC CheckDB没有显示任何错误; 使用压缩成功备份“ TDE_DB1”数据库;RESTORE VERIFYONLY错误,提示“检测到备份集损坏”; 尝试将数据库还原为“ TDE_DB2”;错误,说“ RESTORE在数据库中的页面(1:92454)上检测到错误” 重复步骤1-3;一切都很好; DROP“ TDE_DB1”和“ TDE_DB2”; 从备份中还原“ TDE_DB1”;一切都很好; 重复步骤1-5;得到相同的结果 总结一下:数据库和常规备份看起来不错,在数据库上运行CHECKDB并在备份上运行VERIFYONLY不会报告任何错误。使用压缩备份数据库似乎会导致损坏。 下面是有错误的代码示例。(注意:将压缩与TDE数据库一起使用需要MAXTRANSFERSIZE) -- Good, completes with no corruption; BACKUP DATABASE [TDE_DB1] TO DISK = N'E:\MSSQL\Backup\TDE_DB1a.bak' WITH CHECKSUM; RESTORE VERIFYONLY FROM DISK = N'E:\MSSQL\Backup\TDE_DB1a.bak' WITH CHECKSUM; RESTORE …

1
PostgreSQL数据库数据文件完整性检查
在运行PostgreSQL数据库系统时,我如何知道我的数据库整体上具有100%的完整性?基本上,我如何知道我的数据文件和页面是否全部100%良好且没有损坏? 在Microsoft SQL Server世界中,有一个命令可以执行DBCC CHECKDB,该命令将告诉您是否存在问题。如果您打算进一步了解该命令,则这里是一个链接。DBCC CHECKDB(Transact-SQL) 我是一个偏执狂的数据库完整性专家(任何以DBA类型角色使用数据库的人都应该这样),这种类型的事情使我很难在晚上睡个好觉。像这样的实用程序是必须的!在Google上进行的搜索已经找到了一些类似工具的尝试,我认为除非它是PostgreSQL项目正式接受的工具,否则我不会因为它的重要性而相信它。 这里有一些链接,人们在问类似的问题时,我认为没有真正的答案。在我看来,PostgreSQL需要拥有一些Oracle和Microsoft SQL Server似乎具备的工具。 第一个链接是我在该主题上找到的最有趣的链接。我认为对这篇文章的评论可能是这样总结的:“ Postgres在识别数据库损坏并修复它时非常la脚。检测到它的唯一方法是通过转储数据库或从数据库的每个表中选择* 。” PostgreSQL如何防止部分页面写入和数据损坏 检查数据和索引文件损坏-Dev Shed 帮助:我的桌子坏了! PostgreSQL:主键损坏,表不一致 我相信9.3有可能具有某些损坏检查功能。如果选择的话,似乎希望对页面文件进行汇总检查。因此,如果您考虑使用ZFS和/或带有页面检查求和的Postgres的将来版本,那么情况看起来就很好。 https://commitfest.postgresql.org/action/patch_view?id=759 更新:2012年1月14日-好像使用基于ZFS的文件系统一样,可以通过检查每个数据块的总和来检测损坏。我将不得不对此进行进一步的研究,看看是否可以通过一种解决方法,让一个晚上知道他们的数据库数据没有被无提示地破坏,从而使其睡个好觉。 更新:2012年1月17日-如何使用ZFS查找损坏的文件。http://docs.oracle.com/cd/E18752_01/html/819-5461/gbbwl.html#gbcuz 更新:2014年4月14日9.3确实获得了数据校验和。https://wiki.postgresql.org/wiki/What's_new_in_PostgreSQL_9.3

1
备份检测到损坏,但是CHECKDB没有
我有一个数据库,在其中运行备份命令 BACKUP DATABASE [MyDatabase] TO DISK = 'G:\Backup\MyDatabase_01_01_2018.bak' WITH NOFORMAT, NOSKIP, COMPRESSION, INIT, BUFFERCOUNT = 100 我收到错误消息 消息3043,级别16,状态1,第8行 BACKUP'MyDatabase'在文件'F:\ Data \ MyDatabase_1.ndf'中的页面(1:745345)中检测到错误。 消息3013,级别16,状态1,第8行 BACKUP DATABASE异常终止。 我运行了一个完整的CHECKDB,但恢复正常。我确实注意到页面验证选项已设置为NONE(不是我的工作),所以我将其更改为CHECKSUM并重建了数据库中的所有索引,使其可以写入所有页面并生成校验和。此后,备份仍然失败,并且checkdb仍显示为干净(因此无更改)。 DBCC CHECKDB('MyDatabase') WITH NO_INFOMSGS, ALL_ERRORMSGS, DATA_PURITY, EXTENDED_LOGICAL_CHECKS; 从SQL日志中: 由xxx执行的具有all_errormsgs,no_infomsgs和data_purity的DBCC CHECKDB(MyDatabase)发现0个错误,并修复了0个错误。经过时间:0小时21分46秒。内部数据库快照的拆分点LSN = 000ab776:0000112f:0001和第一个LSN = 000ab776:0000112d:0001。 我运行了DBCC PAGE,但是它出错了(起初似乎都没有返回正确的页面)。我可以使用打印选项2运行它,但它会返回,但说实话我不知道我在那儿寻找什么。 DBCC PAGE ('MyDatabase',1,745345,3) 页面:(3:513793) 缓冲: BUF @ 0x00000003811F8280 …

1
如何在SQL Server 2008中查找损坏的页面
我知道我可以执行DBCC CHECKDB并获取数据库状态。 问题 如何查找数据库中是否存在一些损坏的数据页? 如果错误归因于页面损坏,我在哪里可以找到哪些页面损坏了? 如何找到每个损坏页面的页码。 谁能告诉我在哪里可以找到这些页面ID?

2
主数据库已损坏,实例无法启动-我有什么选择?
救命!我的主数据库已损坏,我什至无法使SQL实例联机!我有什么选择来备份服务器? 我确实有master的备份,但是MSDN页面“还原master数据库”要求我以单用户模式启动实例,而我做不到! (注意:我没有针对SQL版本指定这个问题,以便成为更广泛应用的参考。关于DBA.SE也有一些类似的问题,但是没有涉及服务器无法启动的问题。)

6
尝试在数据库2中获取逻辑页(5:65424)失败
SqlException在调用存储过程时,我得到以下信息: 尝试在数据库2中获取逻辑页(5:65424)失败。它属于分配单元7349876362857938944,而不属于4899918190390149120。 发生System.Data.SqlClient.SqlException Message =“试图在数据库2中获取逻辑页面(5:65424)失败。它属于分配单元7349876362857938944,而不是属于4899918190390149120。 Source =“。Net SqlClient数据提供程序” ErrorCode = -2146232060 类= 21 LineNumber = 257 Number = 605 过程=“ ispDisplayCount” Server =“ 10.10.1.1” State = 3 此异常是什么意思?上述问题有解决方案吗? 尽管上面的错误中引用的数据库指示tempdb,但使用以下答案可以修复引用消息605的类似错误。 消息605,级别21,状态3,行1 尝试获取数据库7中的逻辑页(1:8687634)失败。它属于分配单元72057594364821504,而不是72057594052476928。

1
服务器并发truncate命令崩溃后,MySQL INNODB损坏
我认为我的服务器今天崩溃了,原因是我们的一个INNODB表上有一个并发的truncate table命令。服务器可以重新启动,但是在启动之后,每次我尝试发出SQL命令时,都会出现以下错误: ERROR 2006 (HY000): MySQL server has gone away 这是在日志中发生的事情: 121206 01:11:12 mysqld restarted 121206 1:11:13 InnoDB: Started; log sequence number 275 559321759 InnoDB: !!! innodb_force_recovery is set to 1 !!! 121206 1:11:13 [Note] /usr/libexec/mysqld: ready for connections. Version: '5.0.95-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution InnoDB: Error: trying …
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.