我有一個Django postgres db(v9.3.10)在數字海洋上運行,並且試圖將它遷移到Amazon RDS(postgres v 9.4.5)。 RDS是一個具有300GB的db.m3.xlarge實例。我甩了數字海洋分貝:將postgres轉儲遷移到RDS
sudo -u postgres pg_dump -Fc -o -f /home/<user>/db.sql <dbname>
而現在我想在與它遷移:
pg_restore -h <RDS endpoint> --clean -Fc -v -d <dbname> -U <RDS master user> /home/<user>/db.sql
我看到的唯一錯誤是:
pg_restore: [archiver (db)] Error from TOC entry 2516; 0 0 COMMENT EXTENSION plpgsql
pg_restore: [archiver (db)] could not execute query: ERROR: must be owner of extension plpgsql
Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
除此之外,一切看起來都很順利,然後它就會停下來。轉儲的文件大約爲550MB,並且有幾個表格有多個索引,否則很標準。
AWS接口上的讀寫IOPS接近0,CPU,內存和存儲器的讀寫IOPS也接近0。我對AWS非常陌生,並且知道參數組可能需要調整才能更好地完成此操作。任何人都可以建議在這個或更好的方式將Django數據庫遷移到RDS?
編輯:
望着分貝用戶DO分貝的樣子:
Role Name Attr Member Of
<user> Superuser {}
postgres Superuser, Create role, Create DB, Replication {}
和RDS一個樣子:
Role Name Attr Member Of
<user> Create role, Create DB {rds_superuser}
rds_superuser Cannot login {}
rdsadmin ... ...
所以它看起來並不就像它對我的權限問題一樣<用戶>在每種情況下都具有超級用戶權限。
解決方案爲尋找:
我終於得到了這個利用工作:
cat <db.sql> | sed -e '/^COMMENT ON EXTENSION plpgsql IS/d' > edited.dump
psql -h <RDS endpoint> -U <user> -e <dname> < edited.dump
這不是理想的可靠的備份/恢復機制,但由於它只是一個評論,我想我可以沒有。我唯一的觀察是,運行psql/pg_restore到遠程主機很慢。希望新的database migration service會增加一些東西。
我已經改變RDS使用相同的postgres版本,但仍然沒有運氣!我試圖直接嘗試用psql管道進行非定製格式轉儲,但也無法工作。請幫忙! –