古いサーバーから新しいサーバーにデータベースを移動します。
残念ながら、私は実験する機会がありません(そして古いサーバーのHDDが故障し始める)ので、私の場合に機能するpg_dump/pg_restoreのオプションを要求します。
問題なく移行を完了しました。
ダンプの作成は簡単です:
Sudo -u postgres pg_dump --verbose --no-tablespaces --format=directory --file=/backup/path old_database_name
新しいインスタンスでの復元:まず、新しいテーブルスペースを作成し、そのテーブルスペースにターゲットデータベースを作成します。次に、次のようにダンプをインポートします。
Sudo -u postgres pg_restore --verbose --dbname=new_database_name --jobs=8 /backup/path/
ハードウェア(プロセッサコア、I/Oサブシステムのパフォーマンスなど)に応じて、同時実行ジョブの数を調整できます。
これで、新しいPostgreSQLを実行している新しいサーバー上の専用のテーブルスペースに、名前が異なる別のデータベースのすべてのデータがあります。
Pg_dumpを使用しているため、スキーマとデータがダンプされます。
pg_dump -d mydb -f dump_file_name.sql
復元するには、最初にcreatedb
を実行してから復元する必要があります。これにより、新しいデータベースを作成するときに新しい名前の問題を解決できます。
createdb mynewdb
テーブルスペースの場合、最初に、新しく作成したデータベースにテーブルスペースを作成する必要があります。
create tablespace 'your_tablespace' location 'your_tablespace_location'
次に、pg_dumpで作成したダンプファイル(dump_file_name.sql)を編集し、SET default_tablespace = ''
からSET default_tablespace = 'your_tablespace'
。
最後に、次のコマンドで復元できます。
psql -d mynewdb -f dump_file_name.sql