MariaDb一个实例与许多实例在Ubuntu服务器上具有数百个数据库

问题描述 投票:0回答:2

我正在整理一个消耗大量数据的Web应用程序。当前,每个db有150个表,许多表具有1,000个或更少的记录,一些表具有10,000个或更少的记录,只有少数几个具有100,000个或更少的记录,并且每个客户都有一个数据库。我正在设置一台具有64GB RAM,1 TB SSD NVMe,4 GHz和1GB带宽的Xeon 4内核的服务器。我计划制作10个具有6GB RAM的MariaDb实例,其余的用于OS(Ubuntu 18 64位)操作系统,每个实例放置10-15个数据库。

您认为这对本项目可能是个好方法?

database mariadb
2个回答
0
投票

尽管有15000个表,但我认为在一台计算机上设置多个实例没有优势。这是基本原理:

  • 除非索引糟糕,否则即使是单个实例也不会占用所有CPU。
  • 具有10个实例意味着辅助数据(表,缓存,其他开销)将重复10次。
  • [一个实例繁忙时,它无法从其他实例中抢夺RAM。
  • 如果在6G实例中对100K行进行表扫描(对于innodb_buffer_pool_size,可能为4G),则可能会将该实例中的其他用户推出buffer_pool。是的,您可以做一些DBA的事情,但是请记住,您不是DBA。

150张桌子?可能有一些“过度规范化”吗?


0
投票

我实际上对您担心150个表的某些表的最大大小为100k或更少的行感到有些惊讶?

对于您计划使用的现代硬件,这看起来似乎不是很大的问题。但是,我建议分配更多的RAM并使用足够大的InnoDB缓冲池大小,即您的总内存的70%是MariaDB建议的数目。

我已经看到客户端运行的MariaDB具有更大的数据集和更多的表+很高的并发!

无论如何,最好的处理方法当然是在UAT周期内以类似于生产数据负载的方式进行测试。我仍然确定这不会有问题。

如果您可以提供主/从设置并在顶部使用MariaDB MaxScale,则MaxScale可以为您提供自动的数据库服务器,连接,故障转移和事务重播,从而为您提供最高级别的可用性,同时还可以实现负载平衡凭借其出色的“读/写”拆分服务。您的服务器负载将得到平衡,总体上会带来流畅的体验:)

不太确定上面的内容是否是您在设计中计划的,只是将其放在此处以让您的应用程序一定会受益。

希望这会有所帮助。

干杯,费萨尔。

© www.soinside.com 2019 - 2024. All rights reserved.