我希望能够将现有的本地PostgreSQL数据库迁移到Azure的PostgreSQL数据库
从上一篇文章中,我修正并整理了我认为更通用和更好的点子和步骤。
前提条件 tí
-
- 移行元ユーザには、superuserのpostgres以外に移行するDBにアクセス権限のあるreotestの2つのユーザが存在する。
-
- postgresは今回使わないので、移行しない。(後のプロセスで削除する)
-
- 今回移行するDBはHogeFugaDB
移行先のホストはhogefuga-azure.postgres.database.azure.com
移行先で管理者権限を持つユーザはhogefuga_admin
です。必要に応じて読み替えてください。
■步骤
在迁移目标服务器上创建与迁移源服务器相同名称的数据库。
● 迁移用户。
-
- 以下を実行し、バックアップファイルを生成する。
- (ローカル以外の場合はホストもちゃんと指定する)
使用pg_dumpall命令对本地主机,端口5432,用户名为postgres,数据库为HogeFugaDB进行备份,并将结果输出到任意的文件名.sql中。
出力したファイルを編集し NOSUPERUSER および NOBYPASSRLS オプションを削除する。(このオプションを宣言しなくてもデフォルトで同じ設定になるっぽい。バックアップ出力時に改めて宣言されるが、形式だけでも宣言されているとsuperuserをどうにかする権限がない的なエラーが出る)
以下を実行すると、ユーザの移行が完了する。ユーザの新規作成から行うため、既にユーザが存在している場合等エラーが出る。
使用以下的中国语翻译(只需要提供一种选择):
psql -f (先前生成的文件名).sql –host=hogefuga-azure.postgres.database.azure.com –port=5432 –username=hogefuga_admin –dbname=HogeFugaDB
请使用以下方式翻译:
psql -f (先前生成的文件名).sql –主机=hogefuga-azure.postgres.database.azure.com –端口=5432 –用户名=hogefuga_admin –数据库名=HogeFugaDB
● 迁移功能和数据。
- 以下を実行し、バックアップファイルを生成する。
使用中文本地化翻译以下命令,只需提供一个选项:
pg_dump -Fc -v –host=localhost –username=postgres –dbname=HogeFugaDB -f (任意的文件名).dump
将上述命令翻译为中文:
pg_dump -Fc -v –主机=localhost –用户名=postgres –数据库名=HogeFugaDB -f (任意的文件名).dump
- 以下を実行すると、Functionおよびデータの移行が完了する。
在本地生成的文件名.dump之前,使用以下参数进行还原:pg_restore -v –no-owner –host=hogefuga-azure.postgres.database.azure.com –port=5432 –username=hogefuga_admin –dbname=HogeFugaDB
● 更改数据库连接目标。
-
- 移行元DBを使用していたアプリケーションのDB接続先を移行先に変更する。
- ユーザも一緒に移行しているので、ホストを書き換えるだけでOK。