【发布时间】:2017-01-01 23:31:13
【问题描述】:
是否可以限制单个mysql表的大小(以磁盘大小/行为单位)?
如果不可能,在一台物理计算机上运行多个 mysql 引擎的最简单方法是什么? (我的计划是将一个mysql实例的数据文件设置到一个单独的磁盘分区)。
【问题讨论】:
-
什么平台? Linux、Windows、*BSD...
是否可以限制单个mysql表的大小(以磁盘大小/行为单位)?
如果不可能,在一台物理计算机上运行多个 mysql 引擎的最简单方法是什么? (我的计划是将一个mysql实例的数据文件设置到一个单独的磁盘分区)。
【问题讨论】:
这与Question #1561612 非常相似,不同之处在于每个模式都强制执行限制。不幸的是,没有真正得到很好支持的方法来做到这一点。请查看那里的答案,看看他们是否也回答了您的问题。
【讨论】:
至少,您需要将这些从用户更改为用户:
[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
【讨论】:
如果您有(相对)少量数据,您可以尝试使用MEMORY 存储引擎创建表。那确实有一个可配置的size limit,但当然你会受到盒子上可用内存量的限制。
如果您的数据大小需要基于磁盘的表,那么限制表大小的一种直接方法是运行定期清除表的某些部分的作业。这可能是比使用小分区更好的选择——许多 MySQL 命令在磁盘已满时表现不佳。
另外 - 您可以在您的计算机上运行任意数量的 MySQL 实例 - 如果您通过 TCP/IP 连接,您只需为每个实例分配一个不同的端口号。
【讨论】:
您可以使用创建压缩表的 myisampack 实用程序(但仅适用于 MyISAM 引擎)。表变成只读的静态数据类型。
【讨论】:
如果它们是 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 主机上,您可以移动表格的文件。
【讨论】:
为了实施配额,有几种不同的方法,我认为找到on this site 的方法可能是我遇到过的最合理的方法。
要将 mysql 引导到不同的数据目录,请在您的 linux 设置中放置符号链接或尝试使用配置文件。 MySQL 将允许您通过此处阅读的这些 conf 文件指定数据库文件的保存位置for windows setup 或搜索有关 my.cnf 的信息
祝你好运,现在已经晚了,所以我要睡觉了。
【讨论】: