web-dev-qa-db-ja.com

pg_restoreが「メモリ不足」エラーで終了する

45mbのpg_dumpファイルを復元しようとしましたが、「メモリ不足」エラーで失敗し続けます。

私のpostgresql-10-main.logの内容:

2018-01-16 06:14:50.692 WAT [32405] postgres@app_development LOG:  

could not receive data from client: Connection reset by peer
2018-01-16 06:14:50.692 WAT [32405] postgres@app_development CONTEXT:  COPY assessment_scores, line 15347
2018-01-16 06:14:50.692 WAT [32405] postgres@app_development STATEMENT:  COPY assessment_scores (id, student_id, assessment_id, score, exempt, late, collected, missing, comment, deleted_at, created_at, updated_at) FROM stdin;

2018-01-16 06:14:50.693 WAT [32405] postgres@app_development LOG:  incomplete message from client
2018-01-16 06:14:50.693 WAT [32405] postgres@app_development CONTEXT:  COPY assessment_scores, line 15347
2018-01-16 06:14:50.693 WAT [32405] postgres@app_development STATEMENT:  COPY assessment_scores (id, student_id, assessment_id, score, exempt, late, collected, missing, comment, deleted_at, created_at, updated_at) FROM stdin;

2018-01-16 06:14:50.693 WAT [32405] postgres@app_development ERROR:  unexpected EOF on client connection with an open transaction
2018-01-16 06:14:50.693 WAT [32405] postgres@app_development CONTEXT:  COPY assessment_scores, line 15347
2018-01-16 06:14:50.693 WAT [32405] postgres@app_development STATEMENT:  COPY assessment_scores (id, student_id, assessment_id, score, exempt, late, collected, missing, comment, deleted_at, created_at, updated_at) FROM stdin;

2018-01-16 06:14:50.693 WAT [32405] postgres@app_development FATAL:  terminating connection because protocol synchronization was lost
2018-01-16 06:14:50.693 WAT [32405] postgres@app_development LOG:  could not send data to client: Broken pipe

HTOPで確認したところ、RAMは約4GB/8GBであり、これが発生するとSWAPスペースは使用されません。

DBサーバーはlocalhostです。

問題を理解しました。

Postgres 9.6からPostgres 10にDBダンプをインポートしようとしました。

Postgres 9.6にダウングレードし、正常にインポートされました。

サーバー側のログ、そして明らかにクライアント(pg_restore(この場合)が死ぬ、私はOOMがローカルマシンで発生するに違いない。これを解決するには、多くの要因に依存する可能性があります。多くのRAMを消費するプロセスを閉じたり、スワップを追加したりするなどです。

0
dezso