2016-05-20 7 views
6

innodbエンジンを使用してAWS RDSでMySQLデータベースを取得しました.MySQLバージョンは5.6.19です。カラム追加時のAWS RDSメモリ不足エラー

表に列を追加しようとすると、私たちは以下のエラーメッセージが出ます:

ERROR 1041(HY000):メモリ不足を。 mysqldやその他のプロセスが利用可能なすべてのメモリを使用しているかどうかを確認します。いない場合、あなたはmysqldが多くのメモリを使用できるようにするために「ulimitを」を使用する必要がありますまたはあなたがより多くのスワップ領域に

我々は、テーブルを変更するために実行するスクリプトを追加することができることは以下の通りです: のALTER TABLE mytablename ADD COLUMNのtemp_columeのVARCHAR(255 )NULL後にtemp_firstcolumn;

私たちのRDSは、30ギガバイトのメモリとdb.m3.2xlargeである: 私たちのInnoDBのバッファサイズがDBInstanceClassMemoryである* 3月4日〜= 24ギガバイト

我々は成功し、既にに行われた列の変更とテーブルを再作成することができますテーブルを変更するときにエラーが発生しています。

誰もが同じ問題を抱えていますか?

+0

をフェイルオーバー可能性がありますが、 'ALTER TABLE'をやっている間、おそらくテーブルの更新がたくさんありますか? –

+0

DBがビジーでないことを示すSHOW PROCESS LISTも確認しました –

+0

MySQLデーモンを起動するプロセスから 'ulimit -a'を実行するとどうでしょう?それが失敗する前に、処理中のメモリ使用量を調べましたか? –

答えて

2

エラーは、RDSを再起動するだけで解決しました。再起動後、メモリは1.5GB増加し、メモリは3.5GBまで解放されました。現在は約5GBです。私は、RDS自体(OS)がメモリの一部をキャッシュしていると推測していますが、3.5GBの空きメモリがあるときにエラーメッセージが表示され、変更しようとしたテーブルが16KBであった理由が混乱しています。

また、別の同様の問題があります。リンクは次のとおりです。 https://dba.stackexchange.com/questions/74432/mysql-rds-instance-eating-up-memory-and-swapping

+1

この回答は私のために働いた。しかし、私が理解できなかったことは、AWSのショーメモリ、またはそのパーセンテージ以下のパーセンテージです。十分な記憶があったということです。そして、私のテーブルもそれほど大きかったわけではありません。なぜ、このエラーを出すのですか? –

7

最近、RDSのインプレース変更が失敗したことがあります。 AWSのサポートは、このように見えるように、ALTER TABLE文を修正することをお勧め:

ALTER TABLE tbl ADD COLUMN abc varchar(123) AFTER zyx, ALGORITHM=COPY 

秘密が回避策として最後まで

, ALGORITHM=COPY 

を追加することです。

また、RDSインスタンスに https://dev.mysql.com/doc/refman/5.7/en/alter-table.html

+0

これは私に感謝しました! – Rippo