我有一个架构问题。
假设我们的系统有多个子系统:A
,B
等等。这些子系统中的每一个都需要保留其数据,并且都使用MariaDB
。子系统A
可能需要database
(如create database ...
)a_db
;子系统B
可能需要一个名为b_db
的数据库。此外,A
和B
在微服务和docker之前的单片世界中,通常设置一个中心MariaDB
实例并要求每个子系统使用它并只使用您自己的 {{ 1}}在共享实例上(即database
使用A
,a_db
使用B
,依此类推)
使用docker,我认为我们还可以运行多个mariadb容器,每个容器都会映射自己的卷进行存储(例如分别为b_db
和/data/mdb_a
)。
明显的优势是/data/mdb_b
和A
之间的完全隔离。不用担心B
可能会意外地弄乱A
的数据。这两个子系统可以独立选择关闭/重启自己的MariaDB容器,甚至可以升级它们的MariaDB二进制文件。
另一方面,我的一些同事认为运行多个MariaDB容器效率低下,这种方法浪费了资源。
他们的良好经验测量和文章是否讨论了两种方法之间的权衡?
答案 0 :(得分:1)
容器化世界中的持久存储仍处于起步阶段,在运行多个数据库副本(在本例中为mariadb)时,在高流量环境中可能会出现问题。
使用共享的持久性数据存储(例如NFS)运行多个mariadb副本,无论您使用多少个数据库,都可能导致一些损坏问题。
我自己没有经历过这些事情,但是你应该在进行生产之前进一步研究在容器中运行数据库。网上有很多关于此的文章。
很多人仍在虚拟机或裸机上运行数据库,只在容器中运行数据库,仅用于本地开发。