【问题标题】:MySQL Server Runs out of Disk Space?MySQL 服务器磁盘空间不足?
【发布时间】:2012-06-17 04:04:33
【问题描述】:

我们公司的 Web 应用程序每天会存储数以千计的访问者的大量数据点,我们预计硬盘很快就会被填满。我们的服务器无法支持更多的硬盘驱动器,我们对腾出一些空间来为我们购买几个小时的空间的小技巧不感兴趣。

我们如何解决这个问题?数据库很大,超过 200GB,而且我们的网站需要可用,所以我不认为复制它并将其移动到新的、更大的服务器对我们来说是一个不错的选择。此外,当那台服务器的磁盘空间不足时会发生什么?

大型网站通常会采取哪些措施来解决这个问题?

谢谢!

【问题讨论】:

  • 他们通常会根据某种保留计划归档/清除数据,或者构建可以根据业务需求扩展的系统。如果您需要保留这些数据,并期望它以相当不受控制的速度增长,那么您没有正确调整系统大小。
  • 我们没有。我在问我们现在能做什么。
  • 这取决于您的业务需求。您可以 1) 构建具有可扩展存储(NAS 或 SAN)的新系统并进行迁移,或者 2) 实施保留策略。或者你什么也不做,让系统崩溃。我没有看到很多其他选择。没有什么魔术可以让你自己制造的问题消失。
  • @Paul:是否需要从您的应用程序中访问整个数据?我的意思是,是否可以将其中的一些存档并保留以供以后使用,例如:由外部系统执行的使用分析?
  • 这与 SO 无关;属于Server Fault

标签: mysql


【解决方案1】:

您可能希望调查以“shards”形式分成多个数据库服务器。您可能需要向应用程序添加一些逻辑,以了解在哪里可以找到一组数据以及如何将查询与来自多个数据库的数据连接起来碎片。有third-party applications 可以帮助您完成此过程。

【讨论】:

  • 我不认为这包括使数据更小。
  • @Dre:恕我直言,问题不是“如何减少数据的大小”,而是“如何应对不断增加的数据量”。听起来保留所有这些数据是一项业务需求。因此,这是一个有效的建议。
  • 是的,我们不想减小数据的大小。当您说“分片”时 - 这是 MySQL 内置的东西,还是您的字面意思是使用多个数据库服务器并编写代码来查看要使用哪个?此外,如果没有经验,MySQL 分区是一种可行的设置吗?
  • 这取决于您的需求。例如,MongoDB 是建立在分片模型上的,因此扩展到多台机器是相当(逻辑上)微不足道的。 MySQL 和其他 RDBS 通常无法很好地扩展,因此您可能必须手动“分片”数据。不过,将数据拆分为大型、易于分离的数据集的想法与存储系统无关。
  • 不是内置在 MySQL 中的,但通常会这样做。您将需要查看数据的结构。例如,您可以根据主键范围或记录的创建日期范围进行分片。我在答案中添加了一个 DBShards 的链接,这是一个使用 MySQL 促进这一点的工具。他们有一个讨论策略的链接:dbshards.com/dbshards/database-sharding-strategies
猜你喜欢
  • 1970-01-01
  • 2015-10-26
  • 2022-01-16
  • 2016-06-08
  • 2013-10-09
  • 2015-12-04
  • 2015-12-30
  • 1970-01-01
  • 2018-01-30
相关资源
最近更新 更多