データベース - postgreSQL - 消せないデータベースの回復 - データベースのコピーを作成

 クラウディア
1. 概要
2. 環境作成
3. バックアップ
4. 一次マシンへリストア
5. 一次マシンからのバックアップ
6. 運用マシンへリストア

1. 概要

 筋書きは、こうである。  別のマシンにデータベースを作成しておく。  現行のマシンのユーザといらないデータベースを除くデータベースの情報をエクスポートする。  別のマシンに現行マシンのユーザと必要なデータベースをインポートする。  別のマシンから、まるまる情報をエクスポートする。  現行マシンを「initdb」する。  現行マシンに別マシンの情報をインポートする。  という寸法なのであります。

2. 環境作成

 ターゲットマシンは、「FreeBSD」でありまして、サブのマシンが調子悪いもので、「jail」を利用してデータベースの環境を作成しました。  「jail」に関しては、「仮想化ソフトウェア - FreeBSD - jail」をご参照ください。  データベースの環境作成に関しては、「FreeBSD 12.2 RELEASE - データベース postgreSQL」をご参照ください。

3. バックアップ

 元マシンのバックアップを作成します。  ユーザとデータベースに分けて、ここは「postgres」ユーザで  ユーザのバックアップ

pg_dumpall --roles-only --clean --if-exists > user.sql
 ユーザは、これで全ユーザのバックアップがとれます。  データベースのバックアップ

pg_dump -Fc データベース名 > データベース名.dmp
 これは、データベース数分実行します。  「template0」と「template1」は更新するものではないので、バックアップはとりません。  大きなデータベースであれば、圧縮も必要でしょうし、時間もものすごくかかるかと思いますが、今回の環境は小さなものだったのですぐに終わりました。  バックアップをとった時点で、データベースが更新されないようにデータベースを停止します。  「root」ユーザで

service postgresql stop
 停止後、前のデータを一応残したまま、データベースのイニシャルまでやっておきます。

mv /var/db/postgres/data96 /var/db/postgres/data96_bak
 「data96」は、「postgreSQL」が「9.6」だからですな。  そのうえで

service postgresql initdb
 まで、やっておいて。  設定ファイルは、前のものを持ってきて上書きしておきます。  「postgres」ユーザで

cp /var/db/postgres/data96_bak/pg_hba.conf     /var/db/postgres/data96/pg_hba.conf
cp /var/db/postgres/data96_bak/postgresql.conf /var/db/postgres/data96/postgresql.conf

4. 一次マシンへリストア

 一次マシンへリストアします。  一次マシンは、「initdb」が終わった直後の状態です。  ユーザのリストア。

psql -f user.sql postgres
 データベースのリストア。

pg_restore --clean --create -d  データベース名  データベース名.dmp
 これももちろん、データベース数分、実行します。  ここ失敗です。データベースは、作成してからでないとうまく動作しませんでした。  なんかコマンドの使い方に問題があるような・・・。

5. 一次マシンからのバックアップ

 できあがった、一次マシンからバックアップします。  ここでは、「pg_dumpall」でユーザもデータベースもバックアップできるようになっています。  「postgres」ユーザで

pg_dumpall --column-inserts --username=postgres> pg_dumpall.sql

6. 運用マシンへリストア

 いよいよ最後の仕上げです。  運用マシンへ一次マシンで出力した「pg_dumpall.sql」を持っていきます。  「root」ユーザで

service postgresql start
 「postgres」ユーザで

psql --username=postgres --file pg_dumpall.sql postgres
 これで、うまいこといくはずなんだがな。  一応、「.dmp」のリストアが予定通りでない以外は、いまんとこうまくいっています。
ハイスピードプランU-NEXTKiPuRu
 
 
カウンタバックグラウンド