LoginSignup
22
19

More than 5 years have passed since last update.

RDSにPostgreSQLのdumpをインポートする

Posted at

現状、スナップショットを他アカウントのRDSにリストア出来ない模様。
→dumpを取得して移行してみる

以下を参考にした。
http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html

  • DB -> PostgreSQL 9.3.5
  • クライアント -> CentOS 6.6

PostgreSQLのクライアント関係パッケージのインストール

クライアント側で必要パッケージのインストール。
http://yum.postgresql.org/rpmchart.php

$ wget http://yum.postgresql.org/9.3/redhat/rhel-6-i386/postgresql93-libs-9.3.5-1PGDG.rhel6.i686.rpm
$ wget http://yum.postgresql.org/9.3/redhat/rhel-6-i386/postgresql93-9.3.5-1PGDG.rhel6.i686.rpm
# yum localinstall postgresql93-libs-9.3.5-1PGDG.rhel6.i686.rpm
# rpm -ivh postgresql93-9.3.5-1PGDG.rhel6.i686.rpm
# pg_dump --version
pg_dump (PostgreSQL) 9.3.5

既存DBのdump取得

クライアント側から既存DBのdumpを取得。
https://www.postgresql.jp/document/9.3/html/app-pgdump.html

$ pg_dump -h xxx-org-db.xxxxxx.ap-northeast-1.rds.amazonaws.com -U app development -f /tmp/development.dump

インポート先のRDSインスタンス起動

なお、以下の設定でインスタンスを作成しておくと、データのインポートが高速になる。

  • バックアップの保持設定を0
  • マルチAZを無効

データベース作成

インポート先のRDSインスタンスにdumpしたデータベースと同名のデータベースを作成。

postgres=> CREATE DATABASE development LC_COLLATE 'ja_JP.UTF-8' LC_CTYPE 'ja_JP.UTF-8' ENCODING 'UTF8' TEMPLATE template0;

dumpをインポートする

インポート先のRDSインスタンスにdumpをインポートする。
https://www.postgresql.jp/document/9.3/html/app-psql.html

$ psql -f /tmp/development.dump --host=xxx-new-db.xxxxxx.ap-northeast-1.rds.amazonaws.com 
--port=5432 --username=app --password --dbname=development  

データベース名を変更する場合

postgres=> ALTER DATABASE development RENAME TO new_database_name
22
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
19