I.8*_*.83 6 php mysql innodb amazon-web-services aws-rds
我们在AWS RDS上使用innodb引擎获得MySQL数据库,MySQL版本为5.6.19.
尝试在表中添加列时,我们会收到以下错误消息:
ERROR 1041(HY000):内存不足; 检查mysqld或其他进程是否使用了所有可用内存; 如果没有,你可能必须使用'ulimit'来允许mysqld使用更多的内存,或者你可以添加更多的交换空间
我们运行到alter table的脚本如下:ALTER TABLE mytablename
ADD COLUMN temp_colume varchar(255)NULL temp_firstcolumn;
我们的RDS在db.m3.2xlarge上,内存为30GB:我们的innodb缓冲区大小为DBInstanceClassMemory*3/4~ = 24GB
我们可以使用已经对其进行的列更改成功地重新创建表,但是在更改表时我们会收到错误.
有没有人遇到同样的问题?
小智 7
我最近看到RDS中的内部改变失败了.AWS支持建议将alter table语句修改为如下所示:
ALTER TABLE tbl ADD COLUMN abc varchar(123) AFTER zyx, ALGORITHM=COPY
Run Code Online (Sandbox Code Playgroud)
秘诀就是补充一下
, ALGORITHM=COPY
Run Code Online (Sandbox Code Playgroud)
到最后作为一种解决方法.
您还可以故障转移RDS实例 https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
只需重新启动 RDS 即可修复该错误。重新启动后,内存增加了 1.5 GB,我们的可用内存约为 3.5 GB,现在接近 5 GB。我猜测 RDS 本身(操作系统)缓存了一些内存,但仍然有点困惑为什么它在拥有 3.5 GB 可用内存而我们尝试更改的表只有 16KB 时给出错误消息。
另外,我还发现了另一个类似的问题。链接如下: https://dba.stackexchange.com/questions/74432/mysql-rds-instance-eating-up-memory-and-swapping
归档时间: |
|
查看次数: |
3147 次 |
最近记录: |