MySQL 硬件规格

MySQL 硬件规格

目前我们有一个 35GB 大小的数据库,运行在具有 2GB RAM 的虚拟机上。预计该数据库将以每天 3 到 4GB 的速度持续增长。

这种设置的建议硬件规格是什么?CPU 和 RAM 分配等。

我也创建了一个关于 mysql 扩展的类似问题。 扩展 MySQL 数据库 但由于我专注于 mysql 优化,所以还没有尝试这些建议。

答案1

我建议立即使用 MySQL 5.5,如下所示:

innodb_file_per_table <- 始终启用此
innodb_io_capacity=65536
innodb_read_io_threads=64
innodb_write_io_threads-64
query_cache_size=0 (默认:禁用查询缓存)

在 MySQL 5.5 成熟之前,请不要使用多个缓冲池。

您需要多少 RAM 取决于两 (2) 件事

对于 MyISAM,此查询显示系统应设置的键缓冲区大小
SELECT CONCAT(CEILING(ndxsum/POWER(1024,2)),'M') RecommendedKeyBufferSize FROM (SELECT SUM(index_length) ndxsum FROM information_schema.tables WHERE engine='MyISAM' and table_schema NOT IN ('information_schema','mysql')) A;

对于 InnoDB,此查询显示系统应设置的 innodb 缓冲池大小
选择 CONCAT(CEILING(innodbsum/POWER(1024,2)),'M') RecommendedInnoDBBufferPoolSize 从(选择 SUM(data_length+index_length) innodbsum 从 information_schema.tables WHERE engine='InnoDB')A;

要全面了解您所拥有的 MySQL 数据,请运行以下查询:

SELECT DBName,CONCAT(LPAD(FORMAT(SDSize/POWER(1024,pw),3),17,' '),' ',SUBSTR(' KMGTP',pw+1,1),'B') "数据大小",CONCAT(LPAD(FORMAT(SXSize/POWER(1024,pw),3),17,' '),' ',SUBSTR(' KMGTP',pw+1,1),'B') "索引大小",CONCAT(LPAD(FORMAT(STSize/POWER(1024,pw),3),17,' '),' ',SUBSTR(' KMGTP',pw+1,1),'B') "总大小" FROM (SELECT IFNULL(DB,'所有数据库') DBName,SUM(DSize) SDSize,SUM(XSize) SXSize,SUM(TSize) STSize FROM (SELECT table_schema DB,数据长度 DSize,索引长度 XSize,数据长度+索引长度 TSize FROM information_schema.tables WHERE table_schema NOT IN ('mysql','information_schema','performance_schema')) AAA GROUP BY DB WITH ROLLUP) AA,(SELECT 3 pw) BB ORDER BY (SDSize+SXSize);

设置 (选择 0 密码) BB 表示字节
设置 (选择 1 密码) BB
表示千字节 设置 (选择 2 密码) BB 表示兆字节
设置 (选择 3 密码) BB 表示千兆字节
设置 (选择 4 密码) BB 表示太字节
设置 (选择 5 密码) BB 表示拍字节 (如果您开始使用此功能,请给我发电子邮件)

key_buffer_size 的最大值是 4GB,所以不要超过这个值。

最大 innodb_buffer_pool_size 应为已安装 RAM 的 75-80%

始终将 innodb_log_file_size 设置为 innodb_buffer_pool_size 的 25%

innodb_log_file_size最大为2047M(2G或者2048M InnoDB就不行了,可以查看MySQL源码)

考虑到这些,您应该能够预测 /etc/my.cnf 中和硬件所需的设置。

试一试 !!!

答案2

显然,您给我们提供的细节非常少,但如果您打算购买自己的硬件,那么我建议您使用一个标准的双 CPU 系统,最初使用单个中档 E56xx 系列 Xeon,3 x 2GB 或 3 x 4GB 的 1333/1066 DDR3 内存,2 或 4 个 1Gbps NIC,一个硬件 RAID 控制器,带有一对镜像的小型廉价(147-300GB)7.2krpm SATA 或 10krpm SAS 启动盘,然后是一个 RAID 10 阵列,由 4 个质量不错的 7.2krpm 2TB 磁盘或 4 x 600GB 10/15krpm SAS 磁盘组成。这应该可以满足您的大部分(如果不是全部)性能和弹性要求,并且为您提供一种非常快速简便的方法来加倍您的 CPU 容量,并根据需要添加更多内存,以及一组合理的磁盘。

HP、戴尔、IBM 和超微等公司最常销售这种机器,因此应该有很多好交易。

如果您有更多详细信息,请与我们联系。

答案3

嗯,所以一年后你将拥有一个 1.3 Tb 的数据库。

你是对的 - 一个小型的虚拟机无法处理这个问题。

假设这不仅仅用于简单的日志记录,您需要大量的处理器/内存 - 尽管您没有提供有关系统可能如何使用的信息。

忘记高端硬件,您需要直接跳转到商品集群系统。我建议从 4 个盒子开始,这样您就可以从一开始就掌握分片和复制。4Gb 内存(尽管这是您应该灵活的地方 - 添加内存比添加 CPU / NIC / 磁盘带宽容易得多)和双物理核心,以及镜像本地存储可能是一个合理的起点。它们应该在 1Gb LAN 段上隔离,巨型帧可能是一个好主意。

虽然您可能会考虑转向 NoSQL 数据库 - 但同样具有类似的硬件规格。

相关内容