#110 Postgresqlのバックアップ方法について

  PostgreSQL  [Public]
icon written by Noz at Nov 11, 2018 2:36 AM ( icon updated by Noz at Nov 19, 2018 2:17 AM <History> )
  Edit(Sign in)
  Stock
  Answer survey   Answer survey

  TOC

質問内容

初歩的な質問ですみません。
Postgresqlのバックアップ方法を教えてください。

無知ながら調べた結果、下記のようにすることでバックアップが取れるようなのですが、
DB名に何を指定したら良いかわかりませんでした。
pg_dump -U postgres "DB名" > C:\temp\knowledge_back

試しに下記のように実行してみたらバックアップを取れたのですがこれで良いのでしょうか。
pg_dump -U postgres postgres > C:\temp\knowledge_back

基本情報

  • Postgresqlバージョン
    11.1
  • OS
    Windows10
  • Knowledgeバージョン
    Application version: v1.13.1
    URL: jdbc:postgresql://localhost:5432/postgres

 Attach Files     - [0]


 Comment
[Registration] Nov 19, 2018 2:20 AM [Noz]
[Update] Nov 20, 2018 12:53 AM [Noz]
icon

下記の手順で自己解決しました。

バックアップ手順

  1. コマンドプロンプトを起動します。
  2. c:\tempに移動します。
    cd c:\temp
    (ファイルが出力できればどのパスでもOK)
  3. バックアップをします。
    pg_dump -U postgres -d postgres -c -f postgres_dump.sql
    postgres_dump.sqlには既存のデータベースを削除してからデータベースを作成するsqlが記述されています。
    リストアできなかった原因はデータベースが存在する状態でリストアを行っていることでした。
  4. リストア
    リストアするデータベースが存在しない場合は、データベースを作成してからリストアを実行します。
    データベースを作成してからリストアを実行した場合、「テーブルが存在しません。」というエラーがでるが無視してOK。
    psql -U postgres -d postgres -f postgres_dump.sql
  5. 検索用インデックスの再構築
    検索用のインデックスを再構築しないとリストアで復活した記事がknowledgeの一覧で見ることができません。再構築は以下のように行います。
    knowledge > システム設定 > 検索用インデックスの再構築をクリックします。
    そして、startに1、endに100を入力します。
    endは記事の最大数以上の数値を入力します。

おまけ リストア時のエラーログの文字化け対策

((psql -U postgres -f knowledge.sql) 2>&1) > log.txt
log.txtをサクラエディタで開いて文字コードをUTF-8 -> SJIS変換すればある程度読めるようになります。postgresql.confの設定を変更すれば文字化けを解消できるとの情報がったのですが、dataフォルダを作ってpostgresql.confを置いてもダメだったので諦めました。もしかしたらpostgresql.confのパスを環境変数で設定すればpostgresql.confで対応できるのかもしれません。


 Like! × 1  
Collapsed
[Registration] Nov 27, 2018 9:24 PM [Koda]
icon

すみません。回答できず。。。

普段は、 pgAdmin というGUIツールでバックアップ取得&リストアを行っているため、
発行している正式なコマンドの知識がありませんでした。

上の内容を参考にさせていただきます。


 Like! × 1  
Collapsed
[Registration] Nov 30, 2018 5:45 PM [いくみ]
icon

Kodaさんの使われてるpgAdminを試してみました。
pgadmin4 v3.6 を使ってみました。

Nozさんの情報が非常に役に立ちました _orz

  1. knowledgeを停止する

  2. pgadmin起動

  3. バックアップ
    pgadminからknowledgeデータベースをバックアップ

  4. リストア
    1.pgadminからknowledgeデータベースをDropする
    2.pgadminからknowledgeデータベースをCreateする
    3.knowledgeデータベースをリストア

  5. pgadmin停止

  6. knowledge起動する

  7. 検索用インデックスの再構築

一連の流れを通してみましたが、問題なく動作しました (^^)o


後、バックアップを忘れてはいけないのが、このファイル。
key.txtは、絶対に!!

.knowledge<DIR>
 `-- custom_connection.xml
 `-- key.txt

 Like! × 1  
Collapsed



 Add Comment