我正在整理一个消耗大量数据的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个数据库。
您认为这对本项目可能是个好方法?
尽管有15000个表,但我认为在一台计算机上设置多个实例没有优势。这是基本原理:
innodb_buffer_pool_size
,可能为4G),则可能会将该实例中的其他用户推出buffer_pool。是的,您可以做一些DBA的事情,但是请记住,您不是DBA。150张桌子?可能有一些“过度规范化”吗?
我实际上对您担心150个表的某些表的最大大小为100k或更少的行感到有些惊讶?
对于您计划使用的现代硬件,这看起来似乎不是很大的问题。但是,我建议分配更多的RAM并使用足够大的InnoDB缓冲池大小,即您的总内存的70%是MariaDB建议的数目。
我已经看到客户端运行的MariaDB具有更大的数据集和更多的表+很高的并发!
无论如何,最好的处理方法当然是在UAT周期内以类似于生产数据负载的方式进行测试。我仍然确定这不会有问题。
如果您可以提供主/从设置并在顶部使用MariaDB MaxScale,则MaxScale可以为您提供自动的数据库服务器,连接,故障转移和事务重播,从而为您提供最高级别的可用性,同时还可以实现负载平衡凭借其出色的“读/写”拆分服务。您的服务器负载将得到平衡,总体上会带来流畅的体验:)
不太确定上面的内容是否是您在设计中计划的,只是将其放在此处以让您的应用程序一定会受益。
希望这会有所帮助。
干杯,费萨尔。