【问题标题】:How to limit the storage size of an Individual MySQL Database如何限制单个 MySQL 数据库的存储大小
【发布时间】:2018-07-02 03:10:49
【问题描述】:

我希望能够限制单个 MySQL 数据库的存储大小(例如每个数据库 2GB)。这能做到吗?我找不到允许这样做的特定 MySQL 配置。

具体来说,我希望能够在 AWS RDS 实例上执行此操作 - 因此任何与此相关的知识也会有所帮助。

如果能提供任何帮助或指导,我们将不胜感激。

【问题讨论】:

  • 有趣的问题。我发现这个链接显示了一些承诺,但我自己没有测试它:howtoforge.com/community/threads/limit-mysql-database-size.1944 ...我发现的所有其他文档都说大小限制是基于主机/服务器上的文件大小限制,所以我想理论上,您可以通过对主机进行分区并将分配的磁盘空间限制到每个分区来实现所需的结果。 (不要问我是怎么做的,我已经很久没有这样做了;只是一种可能的方法)。

标签: mysql amazon-web-services relational-database storage


【解决方案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 强制执行的,它是一个外部解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    相关资源
    最近更新 更多