我在“/ var / lib / mysql / data”中的mysql默认数据目录中创建mysql数据库 但它不允许我在其中创建超过31999个数据库。
我之前提出的类似问题: Mysql create database with new database location
我说mysql可以创建超过32000个数据库但是,当我在生产服务器上尝试这个东西时。它没有发生。
是否有可能将数据库存储在不同的位置。
任何输入都将是一个帮助。
感谢,
玛纳斯
答案 0 :(得分:6)
MySQL手册指出此处的数据库数量没有限制:maximum number of databases in MySQL
但是,由于每个数据库都需要在文件系统上创建一个目录,并且文件系统可能对一个文件夹中的目录数量有限制,因此存在有效限制。
检查文件系统文档,了解它允许的最大目录数(NTFS~40亿,ext3~32000,ext4~unlimited等)
答案 1 :(得分:4)
这可能是数据目录所在文件系统的限制,因为MySQL会尝试为每个数据库创建一个目录。如果您无法在给定父级内创建超过一定数量的子目录,则MySQL将在CREATE DATABASE上失败。
编辑:正如ysth所说,不同端口上的多个mysqld实例会构成一种解决方法。大多数Linux发行版都带有mysqld_multi预打包。这样可以在一台计算机上轻松处理多个数据库服务器。
Edit2:根据维基百科(和我的记忆)“一个目录中的子目录的最大数量固定为32000”(请参阅此处:Wikipedia ext3 entry),以便您可能是运气不好。再说一遍,我认为如果你不能减少数据库的数量 - 或者选择没有这种限制的其他文件系统(但可能有其他数据库),mysqld_multi是你最好的选择
的更多信息,请参阅MySQL手册答案 2 :(得分:1)
我想不出为什么你不能让多个mysqld服务器在不同的套接字/端口上监听并使用不同的数据目录。但重新思考导致你想要数千个数据库的任何东西会更好。
答案 3 :(得分:0)
也许他们正在使用数据库类型的多租户。这将为每个租户创建一个新的数据库