私はpostgresqlの初心者で、ローカルではpgadmin3を使用しています。ただし、リモートサーバーでは、そのような贅沢はありません。
データベースのバックアップを作成してコピーしましたが、コマンドラインからバックアップを復元する方法はありますか?私はGUIやpg_dumpsに関連するものしか見ていないので、誰かがこれをどうやってやればいいのか教えてもらえれば、それは素晴らしいことです!
ダンプファイルの作成方法に応じて、検討するツールが2つあります。
あなたの最初の参照元はmanページpg_dump(1)
であるべきです。それがダンプそれ自身を作成するものだからです。それは言います:
ダンプはスクリプトまたはアーカイブファイル形式で出力できます。スクリプトダンプは、データベースを保存時の状態に復元するために必要なSQLコマンドを含むプレーンテキストファイルです。そのようなスクリプトから復元するには、それをpsql(1)に渡してください。スクリプトファイルを使用して、他のマシンや他のアーキテクチャでもデータベースを再構築できます。他のSQLデータベース製品にも変更が加えられています。
データベースを再構築するには、代替アーカイブファイルフォーマットをpg_restore(1)で使用しなければなりません。それらはpg_restoreが何が復元されるかについて選択的にすることを可能にします、あるいは復元される前にアイテムを並べ替えることさえ可能にします。アーカイブファイルフォーマットは、アーキテクチャを越えて移植できるように設計されています。
それで、それが捨てられた方法によります。おそらく、file(1)
という優れたコマンドを使ってそれを理解することができます - ASCII textやSQLに言及しているのなら、psql
で復元するべきです。そうでなければpg_restore
を使うべきです
復元はとても簡単です。
psql -U <username> -d <dbname> -1 -f <filename>.sql
または
pg_restore -U <username> -d <dbname> -1 <filename>.dump
それぞれのマンページをチェックしてください - 復元がどのように機能するかに影響するたくさんのオプションがあります。ダンプがどのように生成されたかに応じて、復元する前に「ライブ」データベースを消去するか、template0からそれらを再作成する必要があります(コメントに示されているとおり)。
バックアップを作成します
pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f
"/usr/local/backup/10.70.0.61.backup" old_db
-F cはカスタムフォーマットです(圧縮されており、-j Nと並行して実行できます)。-bはBLOBを含み、-vは冗長で、-fはバックアップファイル名です
バックアップからの復元
pg_restore -h localhost -p 5432 -U postgres -d old_db -v
"/usr/local/backup/10.70.0.61.backup"
設定が重要です - h localhost - オプション
データベースに対する完全な権限を得るには、postgres
としてログインする必要があります。
su - postgres
psql -l # will list all databases on Postgres cluster
pg_dump/pg_restore
pg_dump -U username -f backup.dump database_name -Fc
スイッチ-F
はバックアップファイルのフォーマットを指定します:
c
はカスタムPostgreSQLフォーマットを使用します。これは圧縮されており、最小のバックアップファイルサイズになります。d
t
(カスタムフォーマットよりも大きい)-h
/--Host
サーバーが稼働しているマシンのホスト名を指定します-W
/--password
データベースに接続する前にpg_dump
にパスワードの入力を要求するバックアップを復元:
pg_restore -d database_name -U username -C backup.dump
パラメータ-C
は、データをインポートする前にデータベースを作成する必要があります。うまくいかない場合は、いつでもデータベースを作成できます。コマンドで(ユーザーpostgres
またはデータベースを作成する権限を持つその他のアカウントとして)createdb db_name -O owner
pg_dump/psql
引数-F
を指定しなかった場合は、デフォルトのプレーンテキストSQLフォーマットが使用されました(または-F p
とともに)。それならpg_restore
は使えません。 psql
を使ってデータをインポートすることができます。
バックアップ:
pg_dump -U username -f backup.sql database_name
リストア:
psql -d database_name -f backup.sql
POSTGRESQL 9.1.12
ダンプ:
pg_dump -U user db_name > archive_name.sql
ユーザーパスワードを入力してEnterを押します。
リストア:
psql -U user db_name < /directory/archive.sql
ユーザーパスワードを入力してEnterを押します。
データベースの復元に使用するpg_dump
のバージョンは以下のとおりです。
pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup
またはpsql
を使う:
psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup
-h
ホスト、-p
ポート、-u
ログインユーザー名、-d
データベースの名前
GZIPによるバックアップと復元
より大きなサイズのデータベースではこれはとても良いです
バックアップ
pg_dump -U user -d mydb | gzip > mydb.pgsql.gz
頼りにする
gunzip -c mydb.pgsql.gz | psql dbname -U user
Backup: $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}
Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}
1.端末を開きます。
2.以下のコマンドでデータベースをバックアップします
あなたのpostgres bin - /opt/PostgreSQL/9.1/bin/
ソースデータベースサーバ - 192.168.1.111
バックアップファイルの場所と名前 - /home/dinesh/db/mydb.backup
ソースDB名 - mydatabase
/opt/PostgreSQL/9.1/bin/pg_dump --Host '192.168.1.111' --port 5432 --username "postgres" --no-password - フォーマットカスタム--blobs --file "/ home/dinesh/db /mydb.backup "" mydatabase "
3.宛先にmydb.backupファイルを復元します。
送信先サーバー - localhost
宛先データベース名 - mydatabase
バックアップを復元するためのデータベースを作成します。
/opt/PostgreSQL/9.1/bin/psql -h 'localhost' -p 5432 -U postgres -c "データベースの作成mydatabase"
バックアップを復元します。
/opt/PostgreSQL/9.1/bin/pg_restore --Host 'localhost' --port 5432 --username "postgres" --dbname "mydatabase" --no-password --clean "/ home/dinesh/db/mydb。バックアップ"
Pg_dumpを使ってバックアップを作成した場合は、次の方法で簡単に復元できます。
cd "C:\ProgramFiles\PostgreSQL\9.5\bin"
For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
試してみてください。
pg_restore -h localhost -p 5432 -U <username> -d <dbname> -1 <filename>
下記のリンクが言ったように、ダンプファイルを復元するためにpsqlコマンドを使用することができます。
https://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE
psql dbname < infile
ユーザー名を設定する必要がある場合は、コマンドの後にユーザー名を追加するだけです。
psql dbname < infile username
これを試して:
psql -U <username> -d <dbname> -f <filename>.sql
.sqlファイルからDB psqlを復元します。
次のコマンドが役立つかどうかを確認してください。
Sudo su - yourdbuser
psql
\i yourbackupfile
バックアップSQLファイルがある場合は、簡単に復元できます。下記の指示に従ってください。
1. At first, create a database using pgAdmin or whatever you want (for example my_db is our created db name)
2. Now Open command line window
3. Go to Postgres bin folder. For example: cd "C:\ProgramFiles\PostgreSQL\pg10\bin"
4. Enter the following command to restore your database: psql.exe -U postgres -d my_db -f D:\Backup\backup_file_name.sql
必要に応じてあなたのpostgresユーザのパスワードを入力してPostgresにその仕事をさせてください。その後、復元プロセスを確認できます。
Postgresバックアップファイルの復元は、最初にどのようにバックアップを取ったかによって異なります。
Pg_dumpを-F cまたは-F dと一緒に使った場合はpg_restoreを使う必要があります。
psql -h localhost -p 5432 -U postgres <バックアップファイル
1)psqlターミナルを開きます。
2)ダンプファイルを解凍します。
3)空のデータベースを作成します。
4).dumpファイルを復元するには、次のコマンドを使用します。
<database_name>-# \i <path_to_.dump_file>
これは私のために働いた:
pg_restore --verbose --clean --no-acl --no-owner --Host = localhost -dbname = db_name --username = username latest.dump
データをバックアップする場合、またはバックアップからデータを復元する場合は、次のコマンドを実行できます。
1データのバックアップを作成するには、C:\programfiles\postgres\10\bin\
のようにpostgres\bin \ディレクトリに移動してから、次のコマンドを入力します - pg_dump -FC -U ngb -d ngb -p 5432 >C:\BACK_UP\ngb.090718_after_readUpload.backup
2バックアップからデータを復元するには、C:\programfiles\postgres\10\bin\
のようにpostgres\bin \ディレクトリに移動し、以下のコマンドを入力します - C:\programFiles\postgres\10\bin> pg_restore -Fc -U ngb -d ngb -p 5432 <C:\ngb.130918.backup
バックアップファイルが存在することを確認してください。
Pg_dumpを実行する際に認証の問題がありましたので、自分のダンプファイルを移動しました。
mv database_dump /tmp
一時ディレクトリに入れて実行した
su -u postgres
cd /tmp
pg_restore database_dump
大きなデータベースダンプがある場合は、現在のユーザとpostgresユーザがデータベースダンプファイルにアクセスしてそこに置くことができる別のディレクトリを作成したいだけかもしれません。