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

时间:2019-07-06 19:27:17

标签: database mariadb

我正在完成一个消耗大量数据的Web应用程序,当前每个db有150个表,许多表具有1,000个或更少的记录,一些表具有10,000个或更少的记录,只有几个表有100,000个或更少的记录,并且每个客户每分贝,我要设置一台服务器,其内存为64GB ram,1 tb ssd NMVe hd,4GHz和1Gb带宽的至强4核。我计划制作10个MariaDb实例,每个实例具有6GB内存,其余的用于OS(ubuntu 18 64bits)操作系统,每个实例放置10-15个dbs。 您认为这可能是该项目的好方法?任何建议都很好,我不是DBa,我的事情是编程。

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

对于您计划使用的现代硬件来说,这似乎并不是什么大问题。但是,我建议分配更多的RAM,并使用足够大的InnoDB缓冲池大小(占内存总量的70%)是MariaDB建议的数量。

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

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

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

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

希望这会有所帮助。

干杯, 费萨尔。