我希望能够对单个MySQL数据库的存储大小进行限制(例如,每个数据库2 2GB )。这是可以做到的吗?我无法找到允许此操作的特定MySQL配置。
具体地说,我希望能够在AWS RDS实例上做到这一点-所以任何与此相关的知识也会很有帮助。
任何帮助或指导,无论这是可以做到的,将不胜感激。
发布于 2018-07-02 12:11:09
这个问题在大约10年前就被问到了:MySQL schema size
我不会将你的问题作为副本结束,因为它已经足够长了,需要一个新的答案。
一切都没有改变。MySQL没有为单个数据库的大小定义上限的选项。
您可以设置system表空间的最大大小,如果设置为innodb_file_per_table=0,则所有表和模式都将填充此大小。您可以通过以下方式在my.cnf中配置最大大小:
innodb_data_file_path=ibdata1:12M:autoextend:max:1G这只是一个例子,这意味着ibdata1文件最初创建的大小为12MB,它会根据需要增长,但不会超过1 1GB。有关详细信息,请参阅https://dev.mysql.com/doc/refman/8.0/en/innodb-init-startup-configuration.html。
即使对system表空间有潜在限制,这也不能让您控制每个模式可以使用多少空间。它们都使用相同的表空间。
如果使用innodb_file_per_table=1,则每个表都存储在其自己的表空间文件中。没有用于定义特定于表的表空间大小的选项。
从MySQL 5.7开始,您还可以创建General Tablespace,并为其分配多个表。例如,您可以选择将特定模式的所有表放入一个常规表空间中。但这也没有用于定义一般表空间的大小限制的语法。
我在网上看到过一些解决方案,用于在模式超出其大小限制时撤销对该模式的插入/更新权限。但这不是由MySQL强制执行的,它是一个外部解决方案。
https://stackoverflow.com/questions/51128692
复制相似问题