具有多台服务器的 MySQL 数据库

G S*_*ith 3 mysql sql database rest performance

基本上,我正在为我的应用程序开发 REST API。我正在研究服务器性能,但找不到有关拆分数据库的信息。通过使用 MySQL 的多个服务器共享单个文件系统会更好吗(如果可以将它存储在共享文件系统上),或者我应该升级我当前的服务器或在不同的数据库上存储不同的信息(例如用户数据库 1 上的信息和另一个数据库 oz 上的信息)是否会减慢速度?如果有人有更多关于提高数据库性能的信息,或者我可以通读的内容,将不胜感激。提前致谢。

Ric*_*mes 7

“分片”是您将主表的一些行放在一台物理服务器上,一些放在其他服务器上的地方。只有千分之一的系统需要这种类型的扩展。

“分区”是您将单个表拆分为多个“子表”的地方,这些“子表”就像一个表一样。很少有用例(我只计算 4 个)可以提供任何好处。所有子表都位于同一服务器中。

同一物理服务器上拥有多个 MySQL 实例会增加复杂性并可能会增加一些性能,但这不太可能。

有对多个MySQL实例不同的物理服务器,但共享相同的数据-执行尝试; MySQL的知道如何共享自己的数据这种方式。

使用复制可让您进行任意读取缩放。这有点复杂。这是一种常见的方法。但它只处理“读”多于“写”的应用程序。

Galera Clustering 为您提供了一些写扩展。

单个实例可以处理大量传入请求(来自 Web 服务器或其他类型的客户端)。这些客户端可能分散在多个服务器上。这就是扩展客户端,即使不扩展 MySQL,也可能对您有用。

使用负载均衡器/代理服务器等,您还可以让多个客户端与多个 MySQL 服务器(读取 Slaves/Galera 节点/分片服务器等)通信。

许多上述技术可以组合在同一个系统中。

底线:闻起来好像您还不知道是否需要任何缩放。当您到达该点时,请提供有关该应用程序的更多信息,以便我们可以讨论各种选项而减少“挥手”。