首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NTFS文件系统碎片问题发生在将mysql 5.6数据库迁移到mariadb 10.2之后

NTFS文件系统碎片问题发生在将mysql 5.6数据库迁移到mariadb 10.2之后
EN

Database Administration用户
提问于 2017-09-26 10:38:06
回答 2查看 293关注 0票数 0

目前,我遇到了一个以前运行良好的数据库服务器出现的新问题。在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文件分区中设置什么来阻止错误的发生吗?

耽误您时间,实在对不起!

EN

回答 2

Database Administration用户

发布于 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之前,您还需要做一些其他事情

  • 停止服务器
  • 取消.idb文件上的“稀疏标志”。在提升的命令提示符中,键入fsutil稀疏设置标志C:\path\to\table.ibd 0。
  • 使用contig (或其他工具)的碎片整理文件
票数 2
EN

Database Administration用户

发布于 2017-09-26 14:57:05

一些问题来调试问题..。您从Server转储,然后重新加载到MariaDB?请提供所涉及的命令。问题是只有一个.ibd;也就是说,只有一个表吗?另外,请解释这些记录被丢弃的顺序--特别是它们是否处于PRIMARY KEY顺序。请在SHOW CREATE TABLESHOW TABLE STATUS上提供MariaDB,并在Server上提供相应的内容。

一个可能的解决办法..。一旦在MariaDB中加载了数据,就执行OPTIMIZE TABLE。这将重建该表的.ibd,希望消除大部分碎片。它很可能消除数据的碎片,因为(我认为)它按PK顺序复制数据。非记录存储(用于大型TEXTBLOB),加上辅助索引--这是另一回事。( SHOWs将提供一些关于这些问题的线索。)

“8周内两次”--你是在暗示碎片变得越来越糟,直到操作系统发出吱吱声?请解释您在表上有哪些主要的写类型操作。(我怀疑UUID密钥与此有很大关系。)

请提供my.cnf,虽然我不希望看到任何东西在那里罢工。更能说明问题的是SHOW GLOBAL STATUSSHOW VARIABLES和内存大小。(太大了,不能粘贴在这里;使用post.it之类的。)最好是在服务器运行了几天之后。不知道在这些输出中会出现什么。

真正的解决方案可能是从Windows切换到*nix。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/186895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档