大型mysql(innodb)数据库-查询性能慢、表消失、恢复备份时间长
我有一个数据库,其中3个表的行数都超过2000万。我使用guid作为主键(不幸的是)。现在我们的数据库约为20GB,每月增长5GB 对数据库进行完整备份大约需要2小时,在一个装有4GB RAM的机箱上进行恢复需要30小时 曾经,数据库中的所有表都消失了。同一台服务器上的其他mysql数据库都正常,只有一个数据库的数据消失了,留下了空表 一个select查询(在许多慢查询中)——在2000万个表中的一个表中获取最大日期列,返回结果大约需要5分钟。这个查询使用得相当频繁 我在寻找答案大型mysql(innodb)数据库-查询性能慢、表消失、恢复备份时间长,mysql,database,database-design,innodb,mysql-management,Mysql,Database,Database Design,Innodb,Mysql Management,我有一个数据库,其中3个表的行数都超过2000万。我使用guid作为主键(不幸的是)。现在我们的数据库约为20GB,每月增长5GB 对数据库进行完整备份大约需要2小时,在一个装有4GB RAM的机箱上进行恢复需要30小时 曾经,数据库中的所有表都消失了。同一台服务器上的其他mysql数据库都正常,只有一个数据库的数据消失了,留下了空表 一个select查询(在许多慢查询中)——在2000万个表中的一个表中获取最大日期列,返回结果大约需要5分钟。这个查询使用得相当频繁 我在寻找答案 建议的数据库设
谢谢大家的关注。我看到过较大的设置(使用
InnoDB
作为存储引擎,使用GUID
作为主键),但没有出现此类问题
曾经,数据库中的所有表都消失了。同一台服务器上的其他mysql数据库都正常,只有一个数据库的数据消失了,留下了空表
如果系统LSN
已位于每页的LSN
下方,则表可能看起来是空的。如果InnoDB
日志文件损坏,可能会发生这种情况<但是,在这种情况下,code>InnoDB将发出警告
一个select查询(在许多慢查询中)——在2000万个表中的一个表中获取最大日期列,返回结果大约需要5分钟。这个查询使用得相当频繁
如果在此列上创建索引,则查询将是即时的
请发布准确的查询,我将告诉您如何创建最佳索引
我认为DB
设计本身没有问题,很可能是服务器的问题
是否可以在另一台安装了干净的香草MySQL
的服务器上重现这种行为
您可能还希望尝试在表之间拆分数据。根据表设置innodb文件并从备份中恢复。对于备份,您可以使用该工具。这不仅可以让您在数据库运行时执行一致性备份,而且恢复速度比您正在执行的要快得多(我假设是mysqldump?)。它确实需要花钱。免费替代innodb热备份。您也可以尝试Mydumper:
这是一个很棒的工具,是免费的开源用于优化select查询,拥有相关的数据库结构和查询可能会有所帮助。