如何选择正确的 AWS EC2 实例来提供 MySQL 服务

如何选择正确的 AWS EC2 实例来提供 MySQL 服务

最近我们注意到我们的应用程序出现了一些与 MySQL 加载相关的错误。大型数据库(约 32 GB)上的一些基本查询耗时比预期的要长。

为了服务 MySQL 服务器,我们使用 m6d.xlarge 实例,平均每天的访问量为 3000,尽管我们看到了增长趋势,有时我们有 5000 个或更多的用户,所以我想在永久增长之前解决服务器的问题。因此,我打算添加另一个实例,例如 t4g.2xlarge,具有 8 个 CPU 并能够获得额外积分。

请注意,我们在服务器上只使用 MySQL,因此服务器上没有任何其他障碍,所有负载都在 MySQL 服务器上,有时服务器负载高达 300%。有些时候,一些工作人员会进行网站解析,并将其存储到数据库中,因此会产生更多负载。

另外我认为 32Gb 对于 MySQL 数据库来说并不是很大的尺寸,所以我想听听遇到过类似情况的有经验的人的一些建议。

一般来说,您建议如何使用 EC2 实例来扩展它,以适应繁重的 MySQL 工作。

请注意,RDS 不适合我们的需求,因为它的成本高于我们实际需要。

答案1

您的数据库不是很大,但取决于你如何使用它。与其向性能不佳的数据库投入更多精力,不如尝试优化当前设置的性能。

  1. 使能够MySQL 慢查询日志并找出哪些查询耗时过长。是否存在规律?

  2. 您的表索引是否正确?它们是否实际用于您的查询?使用解释找出答案。

  3. 你有很多类似的读取吗?将结果缓存在类似内存缓存或者Redis会有帮助吗?或者添加只读副本节点进行读取并从主机上卸载负担。

  4. 配置缓存、缓冲区、各种限制等。默认值通常相当保守。

事实上,通过MySQL 优化指南一步一步来,您很快就会发现您可以从当前实例中榨取更多的性能。

希望有帮助:)

相关内容