4

是否可以限制单个 mysql 表的大小(以磁盘大小/行为单位)?

如果不可能,在一台物理计算机上运行多个 mysql 引擎的最简单方法是什么?(我的计划是将一个mysql实例的数据文件设置到一个单独的磁盘分区)。

4

6 回答 6

1

这与问题 #1561612非常相似,除了每个模式都强制执行限制。不幸的是,没有真正得到很好支持的方法来做到这一点。请在那里查看答案,看看他们是否也回答了您的问题。

于 2009-10-20T08:36:25.327 回答
1
  1. 配额:MySQL 不直接支持。您可以使用支持每个用户报价的文件系统来模拟某些东西,方法是为您的用户设置文件所有权,并在操作系统级别设置每个用户的配额。请注意,默认情况下 InnoDB 对所有数据库使用单个表文件,但有一个选项可以告诉它每个表使用一个文件。但是 - 请注意,这可能会对性能产生影响。
  2. 可以为每个服务器使用不同的配置文件在同一台机器上运行多个实例。

至少,您需要将这些从用户更改为用户:

[mysqld]
port=PORT_NUMBER
datadir=/home/USER/mysql
tmpdir=/home/USER/tmp/mysql

要启动服务器,请运行:

mysqld_safe --defaults-file=user_specific_my.cnf

要停止服务器,请运行:

mysqladmin -u root -pROOT_PASSWORD --port=3307 -h 127.0.0.1 shutdown

要连接到服务器,用户应该使用:

mysql --port=USER_PORT -h 127.0.0.1 -pPASSWORD
于 2009-10-29T17:20:10.423 回答
0

您可以使用创建压缩表的 myisampack 实用程序(但仅适用于 MyISAM 引擎)。表变成只读的静态数据类型。

于 2009-09-08T06:11:23.893 回答
0

To enforce quotas there are a few different approaches I think the one found on this site is probably the most sound I've run across.

To direct mysql to different data directories either put symlinks in your linux setup or try using a configuration file. MySQL will let you specify where the database files are saved via these conf files read here for windows setup or search around for information about my.cnf

Best of luck to you its late so I'm off to bed.

于 2009-10-24T03:58:05.707 回答
0

如果您有(相对)少量数据,您可以尝试使用MEMORY存储引擎创建表。这确实有一个可配置的大小限制,但当然你会受到盒子上可用内存量的限制。

如果您的数据大小需要基于磁盘的表,那么限制表大小的一种直接方法是运行一个定期清除表的某些部分的作业。这可能是比使用小分区更好的选择——许多 MySQL 命令在磁盘已满时表现不佳。

此外——你可以在你的计算机上运行任意数量的 MySQL 实例——如果你通过 TCP/IP 连接,你只需要为每个实例分配一个不同的端口号。

于 2009-09-08T02:26:03.710 回答
0

如果它们是 MyISAM 表,则 toy 可以指定存储数据和索引文件的目录。

根据用户界面:

Data Directory: ___________________ Directory where to put the tables data file
Index Directory: __________________ Directory where to put the tables index file

This works only for MyISAM tables and not on some operating systems (Windows)

所以我想这意味着如果您不在 Windows 主机上,您可以移动表格的文件。

于 2009-09-17T11:32:37.780 回答