主从复制:主将成为写入的瓶颈

JMW*_*JMW 3 mysql mysql-replication replication database-performance

mysql 数据库有大约 2TB 的数据。

我有一个主从复制运行。使用数据库的应用程序仅对 2 个从站之一执行读取 (SELECT) 查询,并在主站上写入 (DELETE/INSERT/UPDATE) 查询。应用程序的读取方式多于写入。

如果读取(SELECT)查询有问题,我们可以添加另一个从数据库并告诉应用程序,还有另一个salve。所以它可以很好地扩展......

目前,由于写入,master 正在运行大约 40% 的磁盘 io。

所以我在考虑如何在未来扩展数据库。因为总有一天主人会超负荷。

那里有什么解决办法?

也许是mysql集群?如果是这样,将数据库切换到 ndb 是否有任何陷阱或限制?

非常感谢提前... :)

Jes*_*r M 9

扩展 MySQL 没有一刀切的答案。一些一般提示:

  • 尽可能“对角线”缩放,即。只要您仍然能够在商品硬件上运行,就将内容保存在单个 MySQL 服务器上。这可能意味着 2 个四核 CPU、64+ GB RAM、8 个磁盘 RAID 10 —— 或更高。“商品硬件”的高端每年都在变得越来越快。

  • 看看 Brad Fitzpatrick 关于扩展 LiveJournal 的演示。就缩放 LAMP 而言,它们几乎是经典之作。在本演示文稿的第 25 - 26 页上,您会看到 MySQL 复制最终将面临的问题:写入消耗了所有可用的磁盘 I/O。

  • 阅读“高性能 MySQL ”。这是一本由看过许多高负载 MySQL 安装的作者写的非常好的书。

  • 尽可能避免分片(将数据分散到多个 MySQL 服务器上)。当您开始分片时,您会放弃关系数据库的大部分好处,并且会减慢开发速度。如果您必须进行分片,请考虑使用带有内置多服务器模型的 NoSQL 数据存储库——fx Riak、Cassandra、HBase、MongoDB。理想情况下,在 MySQL 和 NoSQL 之间进行“功能分区”,这样您就可以继续使用 MySQL 来处理适合 RDBMS 的不太热的数据,而将 NoSQL 引擎用于不需要加入 MySQL 的“热”数据数据。

也许是mysql集群?如果是这样,将数据库切换到 ndb 是否有任何陷阱或限制?

在“ Web Operations ”中,Baron Schwartz 有一章关于 MySQL。他几乎只是说“不!” 在网站环境中使用 MySQL Cluster / NDB。引用:“.. 它对于连接和 GROUP BY 查询表现不佳,而 Web 应用程序需要这些。”。