Ruc*_*tel 6 mysql aws amazon-rds
我正在尝试在表中添加一个新列,并且查询给了我这个错误 1114。
我的 RDS 实例大小很小。1.7 GB 内存,1 个 ECU(1 个虚拟核心和 1 个 ECU)我试图修改的表有 500 万行和 7GB 的大小。实例的磁盘大小为 15GB(40% 免费)。
这对我们来说是关键时刻,因为我们被卡住了,AWS RDS 不允许访问 mysql 配置的所有参数。我如何摆脱这个问题?
问题是:无论何时运行ALTER TABLE,都必须使用临时表。临时表未写入您的数据文件夹。它最有可能写入/rdsdbdata/tmp. 请这个查询
SHOW VARIABLES LIKE 'tmpdir';
Run Code Online (Sandbox Code Playgroud)
这会让您知道该文件夹的位置。同样,默认情况下,它是/rdsdbdata/tmp.
为什么会停止 mysqld 的事情?归咎于 MyISAM。为什么是 MyISAM?这里需要考虑:根据MySQL 5.0 Certification Study Guide,

第 11页第 408,409 页第 29.2 节中的要点如下:
如果在向 MyISAM 表添加行时磁盘空间不足,则不会发生错误。服务器暂停操作,直到空间可用,然后完成操作。
当磁盘空间不足时,不要只是关闭或杀死 mysql。任何当前使用的 MyISAM 中打开文件句柄的计数将不会被清除。因此,MyISAM 表被标记为崩溃。如果您可以在 mysqld 仍在运行的情况下释放数据卷中的磁盘空间,一旦磁盘空间可用,mysqld 将继续使用。请注意,mysqld 本身并没有崩溃。它只是进入一种假死状态,直到自由空间出现。
在您的情况下,只需杀死ALTER TABLE. 使用 MyISAM 的临时表只是锁定了/rdsdbdata/tmp. 杀死ALTER TABLE将摆脱临时表并释放 mysqld 以继续像往常一样的生活。
我在过去的帖子中解释了这一点:
Mar 15, 2012:为什么 MySQL 表会崩溃?我该如何预防?Apr 25, 2012:非常大的日志文件您可能必须ALTER TABLE在手动阶段自己执行。
例如,假设您有这张表:
CREATE TABLE ruchit_table
(
id int not null auto_increment,
field1 INT NOT NULL,
field2 VARCHAR(20),
primary key (id)
);
Run Code Online (Sandbox Code Playgroud)
你想跑 ALTER TABLE ADD COLUMN field3 CHAR(5);
以下是在 datadir 中执行此操作的步骤:
CREATE TABLE ruchit_table_new LIKE ruchit_table;
ALTER TABLE ruchit_table_new ADD COLUMN field3 CHAR(5);
INSERT INTO ruchit_table_new SELECT id,field1,field2 FROM ruchit_table;
ALTER TABLE ruchit_table RENAME ruchit_table_old;
ALTER TABLE ruchit_table_new RENAME ruchit_table;
DROP TABLE ruchit_table_old;
Run Code Online (Sandbox Code Playgroud)
注意
datadirALTER TABLE
这些是 mysqld 在内部使用ALTER TABLE. 这些步骤只是模拟这一点,并在datadir.
试一试 !!!
如果您只有 15 GB 的 40% = 6 GB 可用空间,那么您将无法同时在实例上拥有 7 GB 表的两个副本,无论您使用ALTER TABLE(通常会创建表,然后用它替换现有表,如 RolandoMySQLDBA 解释的那样)或创建另一个表并插入数据。
听起来您的实例也没有足够的存储空间来执行。
您应该能够从管理控制台通过选择实例、选择“修改”、更改分配的存储量并单击“确定”来增加正在运行的实例上的可用存储。看:
http://docs.amazonwebservices.com/AmazonRDS/latest/UserGuide/USER_ScalingStorage.html
我不知道 RDS 在后台如何处理这个,所以我不知道您的数据库在更改期间是否会在短时间内变得不可用。
此操作会在修改实例时警告您潜在的性能下降,但您应该会发现该实例仍然可用且可访问,并且在几分钟内完成操作,而不会中断您的实例的可用性。
| 归档时间: |
|
| 查看次数: |
21923 次 |
| 最近记录: |