【问题标题】:How to scale horizontally with mysql如何使用 mysql 进行水平扩展
【发布时间】:2014-04-14 18:12:19
【问题描述】:

我有一个应用程序,每个用户都有自己的数据库。这有助于很好地水平扩展,因为很容易启动另一个数据库服务器。

我正在努力解决的部分是如何识别用户的数据库/帐户所附加到的数据库服务器。

以下是我想出的可能解决方案:

  1. 在其中一个数据库服务器上创建一个映射用户名 --> db 服务器的查找表。确保此查询已编入索引以消除任何性能问题。

优点:易于实施

缺点:仍然有 1 个故障点。如果持有用户名的数据库服务器 --> 数据库关系出现故障,则应用程序停止为所有用户工作

  1. 创建一个映射用户名的文本文件 --> 数据库名称

优点:很容易实现且速度很快。

缺点:在 Web 服务器之间保持同步存在问题。在读取文件时写入文件的并发问题。写作中的一个小错误,可能会导致一切崩溃

这样的最佳做法是什么?

【问题讨论】:

  • 您可以在所有数据库服务器上使用选项 1 并进行主-主复制。

标签: php mysql


【解决方案1】:

为什么不保留第一个解决方案并将其定期导出到第二个选项?

这样,如果一切都出现问题,您就有办法恢复并开始为您的客户群运作。

【讨论】:

  • 这听起来像是一个计划。好主意,它结合了这两种想法。
  • 另外,您是否发现任何性能问题使查询被索引以查找每个请求的数据库服务器?我知道我可以将它缓存在 memcached 中,但是开销会很明显吗?
  • @ChrisMuench 你的桌子是什么样子的?
  • @ChrisMuench 我会将用户名/数据库映射缓存在 memcache 中,我可以向您保证它不会引起注意。祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-16
  • 2020-04-24
  • 2011-08-05
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 2015-04-07
相关资源
最近更新 更多