MySQL多主复制与MySQL集群

我需要一个快速的MySQL数据库,并支持许多连接。 大部分的连接只会被阅读,但less数会被阅读/写作。 所有连接将需要读取和写入至less一些数据。

我有4个testing服务器专门进行实验。 本来我打算做多主,但后来我读了一些关于MySQL Cluster的内容。 我有一些疑问:

  1. 只有MySQL集群RAM? 小册子说磁盘表是支持的,但即使是他们自己的文档有时也说不是。 我希望能够在停电时幸存下来。

  2. MySQL集群是否能够提供比多主机更好的可靠性? 我担心停电会导致我的多主设备无法同步。 能够顺利从停电或其他故障中恢复是考虑多硕士之外的其他原因的主要原因。

  3. 有没有办法使用临时表? 我的应用程序使用了一些临时表,但是我看到MySQL集群不支持它们。 除了使用永久性表格以外,是否还有其他解决方法?

  4. 我可以随时添加和删除数据节点吗? 没有任何服务中断?

要回答你的问题(他们在手册中回答,太btw了)。

  1. MySQL集群(ndb)始终将所有索引保留在内存中。 它的数据结构和访问模式针对这种情况进行了优化。 他们可以(可选)写入磁盘。 非索引数据可以存储在磁盘上,并根据需要进行读取(和caching)。 一般来说,对于一个数据库来说,拥有足够的内存来保存内存中的工作集是很好的,但是集群在这方面有点严格。
  2. MySQL / Oracle将MySQL Cluster作为99.999%可靠性进行广告宣传。 请注意,许多可靠性不在软件而是在环境中。 如果您的交换机或电源死了,整个群集可能会closures。 MySQL集群具有相当不错的例程,可以在节点停止并返回时保持function并同步。 在MMR中正确做到这一点是多一点工作,但也可以做到。
  3. 每1个。MySQL集群可以很好地处理RAM中的数据,所以你也可以使用ndb。 或者,根据实际数据和用例,您可能会将临时表独立保存在不同的MySQL服务器上。 请注意,有基准(而基准总是说谎)显示ndb比内存表更强。
  4. 是的,最近版本的MySQL集群允许联机更改节点configuration,甚至可以联机更改表结构。 MMR更复杂。

说到MySQL集群的所有好处,我仍然要注意:MySQL集群有一些限制,例如,在MySQL集群上进行JOIN操作目前非常缓慢。 下一个版本将会解决这个问题(寻找“下压连接”),所以在设置和testing之前,你应该小心,然后去集群,看看它是否符合你的需求。