pg_dumpの指定パラメータ

このQ&Aのポイント
  • 現在、DBをバージョンアップすべく検証等をしている最中なのですが、現7.4.7 → 8.3.1へ移行に当たりpg_dumpのリストアにて作業をしているのですが、
  • pg_dumpパラメータに -c -D を附帯させてダンプした物をリストアするとサーバ用途モデルのマシンは信じられないくらい時間を要します。
  • それで、そもそも同じPostgreSQLであるならばバージョンは違えども別のRDBMSではないのでパラメータに -d -D は附帯させる必要性は、全く無いのでしょうか?
回答を見る
  • ベストアンサー

pg_dumpの指定パラメータ

現在、DBをバージョンアップすべく検証等をしている最中なのですが。。。 現7.4.7 → 8.3.1へ移行に当たりpg_dumpのリストアにて作業をしているのですが、 pg_dumpパラメータに -c -D を附帯させてダンプした物をリストアするとサーバ用途モデルのマシンは信じられないくらい時間を要します。 附帯無し、所要時間約1分 → 附帯有り 所要時間約130分 附帯有りの所要時間は、10年前のPCでさえも60分で完了するのに その倍以上時間を要しています。 それで、そもそも同じPostgreSQLであるならばバージョンは違えども別のRDBMSではないので パラメータに -d -D は附帯させる必要性は、全く無いのでしょうか? ご教授願えれば幸いです。宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • alte_6
  • ベストアンサー率60% (9/15)
回答No.1

同じテーブル構成で-d-Dが必要になったことは無いです。 7.4→8.3以降の場合は、移行先の8.3のpg_dumpでdumpする必要があります から、特にバージョンの差異もここでは考えなくて良いのかもしれません

JACK_TOSHI
質問者

お礼

alte_6さん、早々レス有難う御座います。 早速、8.3.1のpg_dump -c DB名 ~にてダンプ致しまして8.3.1ローカルテスト機へリストアしました。 約1分程で完了します。 データ不整合も発生せず問題無さそうです。 大変助かりました。 有難う御座います。

JACK_TOSHI
質問者

補足

リモート本番機(7.4.7)からローカルテスト機(7.4.19)にデータリストアする時は、 pg_dump -c -D(又は -d) DB名 ~ の 300MBのダンプデータを約10分かかってリストアしてました。 今回 7.4.7のpg_dump -c で作成したデータを8.3.1へリストアしましたら データ不整合が発覚しまして困っておりました。 又、7.4.7のpg_dump -c -i は、不整合は起きていないので大丈夫そうかな。。。。。。

関連するQ&A

  • pg_dumpの文字化け

    PostgreSQLのpg_dumpを用いたバックアップで困っています。 OSはVineLinux 2.2.17-0vl10です。 あるサーバ(PostgreSQL7.0.2)のデータベースtest_db(EUC_JP)に対して、 pg_dump -D -v -i -f test.dump test.db でダンプファイルを作成しました。 COPYでは不確実な場合があるということでINSERT文で出力しました。 (データの日本語の部分が数字に変換されています) それを別のサーバ(PostgreSQL8.2.5)のデータベースtest2_db(EUC_JP)にリストアしました。 psql test2_db < test.dump すると、"(株)"という文字を含む文字列が化けてしまっていました。 同じレコードの他のカラムは大丈夫です。 このような場合の対策がありましたら教えていただきたいと思います。 宜しくお願いします。

  • ダンプリストア時のDBデータ不整合

    環境 CentOS5系 64bit DBバージョン 8.3.3 本番DBサーバからpg_dump -c -D でダンプしたデータを、ローカルテストDBサーバ へpsql にてリストアした際、データ不整合が、一部のテーブルに発生しました。 前のデータが一部クリアされずに残っている状況です。 ダンプのデータは、DBの内容と同じなのですが。 因みに、pg_dump パラメータ無しのダンプのリストアでは、発生しません。 何が、原因でしょうか? もしかしてバグ? ご教授願えれば幸いです。 宜しくお願い致します。

  • pg_dumpでデータの引越し

    こんにちは。postgreSQL初心者です。 古いサーバからpostgreSQLのデータを pg_dumpもしくは、pg_dumpallで取り出し、新しいサーバに入れようとしてるのですが、以下のようなエラーが出てデータが入ってくれません。 ERROR: invalid byte sequence for encoding "UTF8": 0x8a HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding". 文字コードの問題だと思うのですが、バージョンの違いや基本的な設定も関係あるのでしょうか? 環境 旧サーバ:Red hat Linux 9, postgreSQL 8.0 移転先サーバ:Fedora Core 6, postgreSQL 8.1 実行コマンド ダンプ pg_dump -d DB_NAME > FILE_NAME ※ファイルの中身はちゃんと出力されています。 リストア(?というのでしょうか?) 方法1: \i FILE_NAME > DB_NAME 方法2:cat FILE_NAME  | psql DB_NAME 両方ともエラーがでて、テーブルはできていても一部の中身が入りません。 行き詰まってしまっています。どうか宜しくお願いします。 また、現在設定されている文字コードを調べる方法や、お勧めの参考ホームページがございましたら教えてください。

  • pg_restoreでエラー

    こんにちは。 PostgreSQL8.1.10を使っています。 pg_dumpでバックアップしたデータをpg_restoreでリストアするときに、エラーと警告が出てしまいます。 $ pg_dump -F c mydb > db.dump $ dropdb mydb $ pg_restore -C -d postgres db.dump pg_restore: [アーカイバ(db)] TOC処理中にエラーがありました: pg_restore: [アーカイバ(db)] TOCエントリ1514; 0 0 COMMENT SCHEMA public postgresのエラーです pg_restore: [アーカイバ(db)] could not execute query: ERROR: スキーマpublicの所有者でなければなりません Command was: COMMENT ON SCHEMA public IS 'Standard public schema'; pg_restore: WARNING: 権限を取り上げられませんでした pg_restore: WARNING: 権限を取り上げられませんでした pg_restore: WARNING: 権限は付与されませんでした pg_restore: WARNING: 権限は付与されませんでした 警告: リストアにてエラーを無視しました: 1 結果を確認した限りではリストアはされているようなのですが気になります。 このエラーはどういった理由で発生しているのでしょうか。 エラーを出さなくする方法はあるのでしょうか。 無視していいものならそれでも構わないのですが、理由は知っておきたいです。

  • pg_dumpのバッチ実行

    Windows2008環境で、PostgreSQL8xを開発しています。 日次のバックアップで、DOSバッチからpg_dumpコマンドを実行し、 ダンプを取りたいと思います。 そこでサンプルを作成し、実行したのですが、 途中パスワードを聞かれてしまい、止まってしまいます。 実行は下記のコマンドです。 >>pg_dump -U User01 -Fc testdb > backup.dat パスワードファイル、というファイルに 「ホスト名:ユーザ名:パスワード:DB」User01の エントリを追加したところ、パスワードが聞かれなくなりました。 これはマニュアルどおりだと思います。 ただファイルにユーザ毎にパスワードを書くのもどうもイマイチで 他の方法が無いか調べています。 ・パスワードを聞かれない管理ユーザで実行する ・実はpg_dumpでパスワードを指定するパラメータがある とかあれば良いのですが・・ パスワードファイル以外に、回避方法は ありますでしょうか?。

  • Windows版 pg_dumpの結果をログ取得

    お世話になっております。 Windows版のPostgreSQL8.1を使用しています。 Windowsのバッチファイルで毎週自動実行で pg_dumpによるバックアップを取得しようと思っています。 バックアップは正常に取得できるのですが、 どうしてもログファイルが出力できません。 手動でバッチを動かすと、プロンプトには表示が出ます。 『pg_dump: テーブル×××の内容をダンプしています』 のように。それをどうやったらファイルに残せるかを知りたいです。 実行しているコマンドは、 pg_dump.exe -f "DBバックアップファイル" -i -v -h ホスト名 -p ポート -U "ユーザ名" -F c "DB名">>"ログファイル名" としています。 以上です。宜しくおねがいします。

  • pg_dump スキーマ バックアップでエラー

    スキーマ単位でバックアップをしたいと思ってます。 が・・ pg_dumpにてあるスキーマを指定して実行すると「PG_DUMP: no matching tables were found」のエラーが表示されます。 【環境】 PostgreSQL :9.6.0 サーバー :Windows2008 R2 クライアント:Windows7 データベース:postgres ユーザ :postgres -- スーパユーザ スキーマ :SCM -- 注意 大文字 【コマンド】エラー時 パターンA PG_DUMP -h 192.168.xxx.xxx -U postgres -p 5432 -f D:\POSGRESQL_DUMP\SCM_DUMP.DAT -n SCM -Fc postgres 【コマンド】エラー時 パターンB (スキーマに”をつける) PG_DUMP -h 192.168.xxx.xxx -U postgres -p 5432 -f D:\POSGRESQL_DUMP\SCM_DUMP.DAT -n "SCM" -Fc postgres ちなみに -n スイッチを外すと正常に実行されます。 【コマンド】正常時(-n SCMを外す) PG_DUMP -h 192.168.xxx.xxx -U postgres -p 5432 -f D:\POSGRESQL_DUMP\SCM_DUMP.DAT -Fc postgres どうか、お助け下さい。よろしくお願いします。

  • pg_dump 等における接続パスワードについて

    いつもお世話になっております。 WinXPPro上で、PostgreSQL8.3を動かしています。 タスクマネージャによるバックアップ処理を行うためにバッチ ファイルを作成しました。 ホスト名やDB名などはバッチコマンド内の変数に記述しているの ですが、ホスト名をIPアドレスではなく、マシン名に変えると、pg_dumpやvacuumdbにおいてパスワードを聞かれるようになりました。 なぜ、マシン名でホスト指定を行うとパスワードを聞かれるので しょうか?逆に言えば、なぜIPアドレスによるホスト指定の場合は、 ユーザー名だけで認証OKとなるのでしょうか? よろしくお願いします。

  • PostgreSQLのリストアについて

    PostgreSQL8.1.3→PostgreSQL8.2.3へのリストアにて下記エラーが出てしまいます。 # createdb -T template0 hogedb # pg_restore -Fc -d hogedb 2007_03_05_03_01_hogedb.car ←リストア # pg_restore: [archiver] unsupported version (1.13) in file header ←エラー 単にPostgreのバージョン互換性の問題なのでしょうか? 以上、ご教授頂きたく。

  • Error: relation

    以前の問題は解決しましたが、別の問題が発生しました。どなたかご教示ください。 環境は以下の通りです。 windowsXP Professional cygipc 2.03-2 cygwin 1.5.9-1 PostgreSql 7.4.1-3 ダンプファイルからリストア(データベースにデータを流し込む)しました。確認のため、SELECT文を発行するとタイトルのエラーが表示されます。\dや\dsコマンドを発行しても、「No relations found.」と表示されてしまいます。 pg_dump DB名 > file.dump でダンプファイルを吐き出すと、0バイトのダンプファイルが作成されるのかと思いきや、元のダンプファイルと同じ大きさのファイルが作成されました。 リストアしたテーブルはどこへいったのでしょうか。 なぜ、No relationやdoes not existなのでしょうか。 ご存知の方がおられましたらご教示ください。 よろしくお願いします。