MySQL 高连接、高写入设置

MySQL 高连接、高写入设置

我的机器已经挂了。我正在尝试设置一个 MySQL 机器来运行:

  • 3000 个连接(3 个工作人员负责 1000 个盒子)(盒子的最大连接数已经达到 700 个)
  • 大量写入

当前设置:

配置为:my-innodb-heavy-4G.cnf。具体修改为:

  • 最大连接数 = 65000
  • innodb_buffer_pool_size = 5G

否则一切都是默认的。你们对不同的 MySQL 设置有什么建议?

考虑因素包括:

  1. MySQL 集群
  2. 主/从复制(我不知道这里是否会有很多收获。)

我们已经在使用 AWS 最强大的设备,因此从现实来看,分布式系统可能是我们应该采用的方式。专用硬件可能有可能,但可能性很小。

您建议/认为我们应该如何进行?我是否遗漏了神奇的配置?

提前感谢,贾斯汀

答案1

MySQL Cluster 很少用于 Web 可访问的设置。该产品主要用于专用集群环境中的数据仓库。

如果您偏向于写入,MySQL 复制(主/从、双主等)将无济于事。要进行复制,必须在所有系统上“转发/执行”写入...这很容易降低您的整体性能。注意:如果您有表争用(锁定整个表),复制可能很有用,但如果您使用的是 innodb,我会惊讶于这种情况经常发生。此外,拥有从属服务器的性能成本可以通过在危机/恢复情况下节省的时间来减轻 - 但这不是要问的问题。

您可以研究分片的概念。结合 MySQL-Proxy 和精心编写的 LUA 脚本,您可以自动重写 SQL 查询以将写入拆分到 MySQL 系统集群(注意 AWS 实例的故障率)。

虽然您说这是一个长远的目标,但专用硬件选项应该仔细研究。大多数 IAAS(例如 AWS/EC2)环境都为读取 IO 的严重偏差做好了准备。在专用硬件上,您可以利用 SSD 缓存和/或存储分层。您还可以利用专用 SAN,其中 I/O OPS 容量根据您的特定要求量身定制。

答案2

披露 - 我是 MySQL Cluster 产品团队的一员

只是为了纠正上面的观点,MySQL Cluster 通常用于 Web 应用程序中以扩展写入操作 - 自动分片与多主复制相结合可提供非常高的写入吞吐量,即在 8 个商用 Intel 服务器集群上每秒可进行 2.50 万次写入: http://mysql.com/why-mysql/benchmarks/mysql-cluster/

另一方面,数据仓库实际上并不是目标工作负载

建议看一下 MySQL 性能指南(需要注册),其中讨论了不同的分片策略: http://mysql.com/why-mysql/white-papers/mysql_wp_cluster_perfomance.php

相关内容