我们是一家小型初创公司,我需要设置几个应用程序,几乎所有应用程序都需要数据库。
我面临的选择是设置一个 MySQL 实例,为每个应用程序设置一个数据库,还是为每个应用程序设置一个单独的 MySQL 实例。
在这种情况下,普遍接受的最佳做法是什么?一个数据库服务所有数据库,还是分而治之?
答案1
别的不说,越简单越好。举个例子。
答案2
我想分享与这里大多数答案所建议的相反的观点。
每个数据库运行一个实例可让您有机会将系统资源分配给特定数据库。例如,可以为一个数据库分配比其他数据库大得多的 innodb 缓冲池。
对于备份,如果您使用xtrabackup
,则很容易对单个数据库进行备份(前提是您为每个数据库运行一个实例)。您始终可以对单个数据库进行备份mysqldump
,但从 进行恢复的速度mysqldump
远不如从使用 完成的备份中恢复那么快xtrabackup
。
答案3
同意其他人的意见-mysql的一个实例,但是:
- 每个应用程序都有独立的数据库
- 每个应用程序有单独的用户/密码
这将使以后的迁移变得简单得多。但是请使用 innodb 而不是 c-isam 作为存储引擎 - 后者(如果我没记错的话)仍然一次只能处理一个请求。
当您确实需要升级到多台服务器时,我建议使用主-主复制,以便每个节点仍然为所有数据库提供服务而不是拆分它,直到您获得大约 4 个节点,然后开始根据数据库进行分区。
答案4
一个 MySQL 实例、多个数据库是最佳实践。
我想不出有多少场景是理想的情况是运行多个 MySQL 实例,每个实例一个数据库。这似乎很愚蠢。