我希望能够对单个MySQL数据库的存储大小进行限制(例如,每个数据库2GB)。可以做到吗?我找不到允许此操作的特定MySQL配置。
特别是我希望能够在AWS RDS实例上执行此操作-因此与此相关的任何知识也将有所帮助。
我们将不胜感激。
答案 0 :(得分:1)
大约10年前问了这个问题:MySQL schema size
我不会重复您的问题,因为它已经足够长,值得您重新回答。
什么都没有改变。 MySQL没有选择定义单个数据库大小的上限。
您可以为系统表空间设置最大大小,如果您设置innodb_file_per_table=0
,则所有表和模式都将填充该大小。您可以通过以下方式在my.cnf中配置最大大小:
innodb_data_file_path=ibdata1:12M:autoextend:max:1G
这只是一个示例,这意味着ibdata1文件最初以12MB创建,它会根据需要增长,但不会超过1GB。有关更多信息,请参见https://dev.mysql.com/doc/refman/8.0/en/innodb-init-startup-configuration.html。
即使对系统表空间有潜在的限制,也无法控制每个模式可以使用多少空间。它们都使用相同的表空间。
如果使用innodb_file_per_table=1
,则每个表都存储在其自己的表空间文件中。没有用于定义表特定表空间大小的选项。
从MySQL 5.7开始,您还可以创建一个General Tablespace,并为其分配多个表。例如,您可以选择将特定模式的所有表放入一个通用表空间。但这也没有语法来定义一般表空间的大小限制。
我已经在网上看到一些解决方案,如果方案超出其大小限制,它们可以撤消对方案的插入/更新权限。但这不是MySQL强制执行的,它是一个外部解决方案。