目前,我遇到了一个以前运行良好的数据库服务器出现的新问题。在8周内,当前运行的MariaDB 10.2.7第二次由于操作系统错误665而损坏,其根本原因是NTFS文件系统.The Sysinternals应该是一个严重支离破碎的.ibd文件(>100万段),这使我相信以上是问题的原因。
3个月前,由于更好的备份特性,我从MySQL服务器5.6切换到了MariaDB 10.2.6。该数据库运行在一个虚拟的Windows2012 R2机器之上。在此之前,这个设置可以处理一个大得多的数据库,而且不需要花费很多精力,并且运行了24/7。底层的硬件不会发布任何错误,物理硬盘也不会显示任何错误。
在过去的8周里,这种情况已经发生过两次,我想知道MariaDB是否出了什么问题?有没有其他人经历过如此严重的数据库文件碎片?它是否与Server开关有关?我是否在MariaDB my.cnf中忽略了哪些设置,使其与NTFS保持良好关系?
非常感谢你的回答!
编辑:
确切的年表如下
7月31日,将现有的500 of数据库写入空的MariaDB。这是通过解析旧数据库并写入新的via INSERT语句来完成的。这是在为遗留“标记”添加新列时完成的。在编写次要表(一个.ibd文件)的过程中,第一次发生了错误。这导致了一个损坏的新数据库。不幸的是,当时我认为操作系统错误665是由于MariaDB安装错误造成的。
为了检验这一假设,8月4日重新安装了MariaDB,重新创建了一个空数据库,以便用TestData编写,并查看是否再次发生错误。数据库从那时起一直运行到9月22日。然后,操作系统错误665再次记录,数据库已损坏。
这促使我更认真地研究错误665,看看数据库文件是否存在碎片问题。现在只有200 was的1M+片段就是这种情况。不幸的是,我从来没有检查过碎片化问题,因为它是一个非问题。写操作涉及来自多个源的传入包的uuid,以验证源。此外,数据主要是Blob和时间戳信息。
现在我坐在两个腐败的MariaDBs上。在恢复模式中,显示表状态显示错误,而显示创建表在执行时出现错误。
my.cnf在下面
米舍尔德 datadir=D:\Database\Data\ port=3306 max_allowed_packet=64M max_connections=251 innodb_buffer_pool_size=6G
客户端 port=3306插件-dir=C:/Program/MariaDB10.2/lib/plugin
该机器有8个Vcore和运行在16 on的RAM。我希望这能给你提供通缉的信息。
主要的问题是,我可以在mariadb或NTFS文件分区中设置什么来阻止错误的发生吗?
耽误您时间,实在对不起!
发布于 2017-09-30 10:20:07
这是一个错误,我提出并修正了,基于这个问题。顺便说一句,我们也有一个bug系统,不要犹豫直接使用它。
这是错误报告。https://jira.mariadb.org/browse/MDEV-13941
基本上,创建片段是因为稀疏文件正在被扩展。修复方法不是创建稀疏文件,除非用户想要一个具有页面压缩的表(这是一种异国情调的特性,很少人会使用)。修复将出现在下一个10.2 (即10.2.10),10月中旬.
但是,仅仅升级到10.2.10并不能自动解决现有表的问题。在安装10.2.10之前,您还需要做一些其他事情
发布于 2017-09-26 14:57:05
一些问题来调试问题..。您从Server转储,然后重新加载到MariaDB?请提供所涉及的命令。问题是只有一个.ibd;也就是说,只有一个表吗?另外,请解释这些记录被丢弃的顺序--特别是它们是否处于PRIMARY KEY顺序。请在SHOW CREATE TABLE和SHOW TABLE STATUS上提供MariaDB,并在Server上提供相应的内容。
一个可能的解决办法..。一旦在MariaDB中加载了数据,就执行OPTIMIZE TABLE。这将重建该表的.ibd,希望消除大部分碎片。它很可能消除数据的碎片,因为(我认为)它按PK顺序复制数据。非记录存储(用于大型TEXT和BLOB),加上辅助索引--这是另一回事。( SHOWs将提供一些关于这些问题的线索。)
“8周内两次”--你是在暗示碎片变得越来越糟,直到操作系统发出吱吱声?请解释您在表上有哪些主要的写类型操作。(我怀疑UUID密钥与此有很大关系。)
请提供my.cnf,虽然我不希望看到任何东西在那里罢工。更能说明问题的是SHOW GLOBAL STATUS、SHOW VARIABLES和内存大小。(太大了,不能粘贴在这里;使用post.it之类的。)最好是在服务器运行了几天之后。不知道在这些输出中会出现什么。
真正的解决方案可能是从Windows切换到*nix。
https://dba.stackexchange.com/questions/186895
复制相似问题