我希望能够限制单个mysql数据库的存储大小(例如每个 db2 gb)。这能做到吗?我找不到一个特定的mysql配置允许这样做。具体来说,我希望能够在awsrds示例上做到这一点-因此任何与此相关的知识也会有所帮助。任何帮助或指导是否可以做到这一点将不胜感激。
o2g1uqev1#
差不多10年前就有人问过这个问题:mysql模式大小我不想重复你的问题,因为它已经足够长了,值得一个新的答案。什么都没变。mysql没有为单个数据库的大小定义上限的选项。您可以为系统表空间设置一个最大大小,如果您设置 innodb_file_per_table=0 . 您可以通过以下方式配置my.cnf中的最大大小:
innodb_file_per_table=0
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 ,每个表都存储在自己的表空间文件中。没有用于定义特定于表的表空间大小的选项。从MySQL5.7开始,您还可以创建一个通用表空间,并为其分配多个表。例如,您可以选择将特定模式的所有表放在一个通用表空间中。但它也没有定义一般表空间大小限制的语法。我在网上看到过一些解决方案,可以在模式超过其大小限制时取消其插入/更新权限。但这不是mysql强制执行的,而是一个外部解决方案。
innodb_file_per_table=1
1条答案
按热度按时间o2g1uqev1#
差不多10年前就有人问过这个问题:mysql模式大小
我不想重复你的问题,因为它已经足够长了,值得一个新的答案。
什么都没变。mysql没有为单个数据库的大小定义上限的选项。
您可以为系统表空间设置一个最大大小,如果您设置
innodb_file_per_table=0
. 您可以通过以下方式配置my.cnf中的最大大小:这只是一个例子,它意味着ibdata1文件最初是以12mb创建的,它会根据需要增长,但不会超过1gb。看到了吗https://dev.mysql.com/doc/refman/8.0/en/innodb-init-startup-configuration.html 更多信息。
即使系统表空间有潜在的限制,也不能控制每个模式可以使用多少空间。它们都使用相同的表空间。
如果你使用
innodb_file_per_table=1
,每个表都存储在自己的表空间文件中。没有用于定义特定于表的表空间大小的选项。从MySQL5.7开始,您还可以创建一个通用表空间,并为其分配多个表。例如,您可以选择将特定模式的所有表放在一个通用表空间中。但它也没有定义一般表空间大小限制的语法。
我在网上看到过一些解决方案,可以在模式超过其大小限制时取消其插入/更新权限。但这不是mysql强制执行的,而是一个外部解决方案。