リストア
2011年12月20日
【postgres】バックアップとリストア方法
☆DBもテーブルも消さない☆
を前提の上で、
Postgresのバックアップとリストアの実行方法について記します。
↑こんな感じの流れで実行する。
では、詳細について…
1.バックアップをとる
☆.\binの下まで移動
☆ユーザ変更する場合
1-1.DBバックアップ
-U ・・・ユーザ名指定
-F ・・・フォーマット指定
-b ・・・ラージオブジェクトをダンプに含める
-t ・・・テーブル名指定
-v ・・・冗長モードを指定
-f ・・・ファイル名指定
1-2.テーブルバックアップ
-U ・・・ユーザ名指定
-F ・・・フォーマット指定
-b ・・・ラージオブジェクトをダンプに含める
-t ・・・テーブル名指定
-v ・・・冗長モードを指定
-f ・・・ファイル名指定
2.レコードの総数を調べる
-p ・・・ポート指定
-U ・・・ユーザ名指定
-d ・・・DB名指定
・・・ 3.は各自で ・・・
4.テーブル内の全レコードを削除する
☆.\binの下まで移動
☆ユーザ変更する場合
4-1.テーブル内の全レコードを削除する*.sqlファイルを作成しておく
# DELETE FROM・・・
# とか
# DROP・・・
# とかいちいち打つのが面倒なので、SQLファイルを作成しまーす!
《deleteRecord.sql》
# テーブル内の全レコードを削除する場合
#おまけ テーブル自体を削除する場合
#おまけ テーブルを新規作成する場合
4-2.SQLファイルを実行!
※.\PostgreSQL\8.2\binの直下にdeleteRecord.sqlがない場合は、
のようにパスから指定しなければならない。
5.リストアする
※テーブル指定でリストアすると、指定されたテーブル以外の情報が消えるらしいので、DBのみを指定する。
6.レコードの総数を調べる
これは2.と同じなので、省略
【注意点】
・pg_dumpもpg_restoreもSQL文をただ流すだけ。
だから、pg_restoreする時、テーブル内(or DB内)が空でないと、何も変化が起こらない。
・.\PostgreSQL\8.2\binの直下にpsql.exeやpg_dump.exeが用意されている。
なので、binの直下に移動しないと↑のコマンド達は使えない。
【ソース】
http://www.postgresql.jp/document/pg800doc/html/app-pgrestore.html
http://webcache.googleusercontent.com/search?q=cache:N60RfKvBvUYJ:d.hatena.ne.jp/dayflower/20060717/1153120647+pg_restore+table&cd=1&hl=ja&ct=clnk&gl=jp&client=firefox-a
を前提の上で、
Postgresのバックアップとリストアの実行方法について記します。
1.バックアップをとる
2.レコードの総数を調べる*
3.データを変更する
4.テーブル内の全レコードを削除する
5.リストアする
6.レコードの総数を調べる*
※ 2.と6.の数が同じであるかcheckする。
↑こんな感じの流れで実行する。
では、詳細について…
1.バックアップをとる
☆.\binの下まで移動
cd .\PostgreSQL\8.2\bin
☆ユーザ変更する場合
su user
1-1.DBバックアップ
pg_dump -U userName -F c -b -v -f "dbBackup.dmp" dbName
-U ・・・ユーザ名指定
-F ・・・フォーマット指定
-b ・・・ラージオブジェクトをダンプに含める
-t ・・・テーブル名指定
-v ・・・冗長モードを指定
-f ・・・ファイル名指定
1-2.テーブルバックアップ
pg_dump -U userName -F c -b -t TableName -v -f "tableBackup.dmp" dbName
-U ・・・ユーザ名指定
-F ・・・フォーマット指定
-b ・・・ラージオブジェクトをダンプに含める
-t ・・・テーブル名指定
-v ・・・冗長モードを指定
-f ・・・ファイル名指定
2.レコードの総数を調べる
psql -p 8001 -U userName -d dbName
=> select count(columnName) from tableName;
=> \q
-p ・・・ポート指定
-U ・・・ユーザ名指定
-d ・・・DB名指定
・・・ 3.は各自で ・・・
4.テーブル内の全レコードを削除する
☆.\binの下まで移動
cd .\PostgreSQL\8.2\bin
☆ユーザ変更する場合
su user
4-1.テーブル内の全レコードを削除する*.sqlファイルを作成しておく
# DELETE FROM・・・
# とか
# DROP・・・
# とかいちいち打つのが面倒なので、SQLファイルを作成しまーす!
《deleteRecord.sql》
# テーブル内の全レコードを削除する場合
DELETE FROM tableName;
#おまけ テーブル自体を削除する場合
DROP TABLE tableName;
#おまけ テーブルを新規作成する場合
CREATE TABLE tableName
(
columnName1 ・・・・,
columnName2 ・・・・
)
4-2.SQLファイルを実行!
psql -U userName -f "deleteRecord.sql" dbName
※.\PostgreSQL\8.2\binの直下にdeleteRecord.sqlがない場合は、
psql -U userName -f "D:\aaa\deleteRecord.sql" dbName
のようにパスから指定しなければならない。
5.リストアする
pg_restore -U userName -d dbName -a -v "tableBackup.dmp"
※テーブル指定でリストアすると、指定されたテーブル以外の情報が消えるらしいので、DBのみを指定する。
6.レコードの総数を調べる
これは2.と同じなので、省略
【注意点】
・pg_dumpもpg_restoreもSQL文をただ流すだけ。
だから、pg_restoreする時、テーブル内(or DB内)が空でないと、何も変化が起こらない。
・.\PostgreSQL\8.2\binの直下にpsql.exeやpg_dump.exeが用意されている。
なので、binの直下に移動しないと↑のコマンド達は使えない。
【ソース】
http://www.postgresql.jp/document/pg800doc/html/app-pgrestore.html
http://webcache.googleusercontent.com/search?q=cache:N60RfKvBvUYJ:d.hatena.ne.jp/dayflower/20060717/1153120647+pg_restore+table&cd=1&hl=ja&ct=clnk&gl=jp&client=firefox-a