关于 PostgreSQL 的备份
备份的基础
文件格式的种类
备份文件的输出格式有两种存在:脚本格式和存档格式。
プレーンテキスト形式
テキスト形式で作成されるので生データが見える
拡張子はdumpでもsqlでもよい
リストアする時はpsqlコマンドを利用する(pg_restoreコマンドは利用できない)
データ件数が多いとファイル容量が大きくなる
異なるデータベースにデータ移行する時にも利用できる
カスタムアーカイブ形式
バイナリ形式で出力される
リストアする時はpg_restoreコマンドを利用する
実運用ではこの形式がよく使われる
TARアーカイブ形式
バイナリ形式で出力される(カスタム形式とは圧縮形式が異なる)
リストアする時はpg_restoreコマンドを利用する
备份的种类
-
- 論理バックアップ
-
- 1データベース単位でバックアップする場合はpg_dumpコマンドを使うが、全てのデータベースに対して一括でバックアップを取る場合はpg_dumpallコマンドを使う。バックアップされるのはデータだけでなく、リストアする時に利用されるcreate tableのSQL文も一緒に作られてバックアップファイルが作成される。また、データベースのサービスを停止する事なく利用できる。(逆にいうとpostgreSQLが起動中でないとコマンドは使えない)日次のバックアップを取るときは基本的に論理バックアップを取る。定期的にバックアップを取る場合は、pg_dumpコマンドを埋め込んだシェルスクリプトを作って、cronコマンドでスケジューリングすることになる。バックアップを行うユーザーはスーパーユーザーとなる。
-
- 物理バックアップ
- postgreSQLのサービスを停止させて、cpコマンドでデータベースファイルそのものを、ファイル単位でバックアップを取る方法。DB稼働中は排他がかかるためコピーはできない。基本的にデータ移行などの用途で利用する。
备份的方式 de
在使用psql命令登录PostgreSQL之后,可以使用pg_dump命令来进行备份。但是,也可以通过使用pg_dump命令来同时登录并备份到PostgreSQL。
使用psql命令登录到PostgreSQL数据库。
psql -h 192.168.19.xx -d test_db -p 5432 -U postgres
psql -h IPアドレス -d データベース名 -p ポート番号 -U PostgreSQLのユーザーID
同时执行登录到PostgreSQL和备份的操作。
选项-t用于指定表名。只备份了users表。
选项-f用于指定备份文件的名称。
pg_dump -h 192.168.19.xx -p 5432 -U postgres -t users -f /home/tanaka/users.dump
pg_dump -h IPアドレス -p ポート番号 -U PostgreSQLのユーザーID -t テーブル名 -f 出力先ファイル名
如果添加-Fp选项,可以以文本格式备份数据。
如果添加-c选项,在恢复时备份文件中将包含删除数据库的命令。
选项-d指定数据库名称。
pg_dump -Fp -c -h 192.168.33.xx -d test_db -p 5432 -U vagrant -f /vagrant/test_db.sql
pg_dump -Fp -c -h IPアドレス -d データベース名 -p ポート番号 -U ユーザーID -f 出力先ファイル名