[pgsql-jp: 26807] Re: リストアでデータの復元が出来ない!
dodo_new
dodo @ o-su.com.au
2002年 7月 24日 (水) 11:54:45 JST
TCMS 百々です
私は以前 7.0.3 から 7.2.1 に移行する際、状況は違うのですが
悩んだ事があり、もしかすると関係あるかもと思いメールします。
私も以前は pg_dumpall を利用して
pg_dumpall > db.out
として
psql -d template1 < db.out
と復元しようとしたのですが、いつくかのカラムが正常に
復元できず、困ったことになりました。
結局、原因はinheritされたテーブルにalter table を使ってあとから
カラム を追加した場合、バックアップデータでカラムが入れ替わる
というものでした。
例えば
tbl_base が
aaa text;
bbb text
ccc text
となっているとして
create table tbl_1(
ddd text
)inherits(tbl_base);
を作ったとします。その後
alter table tbl_1 add column eee text;
とすると、 psql で \d tbl1 とした場合
aaa text;
bbb text
ccc text
ddd text;
eee text;
と表示されるのですが、バックアップデータの中の
tbl_1のcreate文では、
create table tbl_1(
eee text,
ddd text
)inherits(tbl_base);
となっており、ddd と eee が入れ替わっています。
これでは copy では復元できないのは当たり前です。
解決手段として、私は pg_dumpall ではなく pg_dump を
使い -D を指定してバックアップし直しました。
マニュアルにはこうあります
-D, --attribute-inserts
データを明示的にカラム名を付けた INSERT コマンドとしてダンプします。これはリストアをとても遅くしま
す。
高橋さんの場合、バックアップデータのいくつかのカラムが
消えているそうなので、原因は違うと思いますが、もしinheritsや
alter table を使用していたら、また別の原因も考えられます。
一度、レファレンスマニュアルをご覧になってはいががでしょうか?
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/reference.html
↑のpg_dump pg_dumpall pg_restore の項目が参考になるかと思います。
また、データが飛んでバックアップから復元、という状況でもないので
一度、簡単なテーブルを作成してテストされる事をお勧めいたします。
pgsql-jp メーリングリストの案内