MySQL设置为高连接,高写入

我的箱子挂了。 我试图设置一个MySQL框运行:

  • 3000个连接(1000个箱子的3名工作人员)(已经有700个连接的箱子最多)
  • 重写

当前设置:

  • AWS高CPU超大实例(c1.xlarge)
  • Ubuntu 10.04
  • MySQL 5.5.19
  • InnoDB表

configuration是: my-innodb-heavy-4G.cnf 。 具体修改是:

  • max_connections = 65000
  • innodb_buffer_pool_size = 5G

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

注意事项是:

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

我们已经在使用AWS提供的function最强大的框,所以看起来像分布式系统可能是我们应该去的方式。 专用的硬件可能是一个可能性,但这是一个很长的一个镜头。

你有什么build议/想想我们该怎么做? 有没有我失踪的魔术configuration?

感谢先进的贾斯汀

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

如果您偏向于写入,MySQL复制(主/从,双主等)将无济于事。 要进行复制,写入必须在所有系统上“转发/执行”…这将轻易降低您的全局性能。 注意:如果你有表争用(锁在整个表),复制可能是有用的,但如果你使用innodb,我会很惊讶,经常发生这种情况。 而且,在一个危机/恢复的情况下,可以通过节省时间来减轻拥有一个奴隶的性能成本,但是这并不是问题的关键。

你可以看看分片的概念。 与MySQL-Proxy和一个精心制作的LUA脚本结合在一起,你可以自动地重新编写你的SQL查询来分割写入到MySQL系统的集群(注意AWS实例的失败率)。

虽然你说这是一个远射,但应该仔细研究专用硬件选项。 大多数IAAS(例如AWS / EC2)环境准备对读取IO有很大的偏见。 在专用硬件上,您可以利用SSDcaching和/或存储分层。 您还可以利用专用SAN,在其中I / O OPS容量根据您的特定要求量身定制。

披露 – 我作为MySQL Cluster产品团队的一部分工作

只是为了纠正上面的问题,MySQL Cluster通常用于Web应用程序中,用于扩展写入操作 – 自动分片加上多主复制提供了非常高的写入吞吐量,即在8个商用英特尔服务器集群上每秒写入2.5m: http://mysql.com/why-mysql/benchmarks/mysql-cluster/

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

build议参考MySQL性能指南(需要注册),讨论不同的分片策略: http : //mysql.com/why-mysql/white-papers/mysql_wp_cluster_perfomance.php