postgresqlデータベースのインポートとエクスポート、バックアップ/リカバリ

2549 ワード

postgresユーザーに切り替え
su postgres
psqlの実行
データベースの作成
CREATE USERユーザー名WITH PASWORD'*';create database[データベース名];またはcreate database[データベース名]owner[ユーザー名];
データベース全体のインポート-Wパスワードの入力-pポート番号の指定
psql-U postgres(ユーザー名)データベース名(デフォルトでは同じユーザー名)psqlデータベース名インポートエラーpsql:FATAL:Peer authentication failed for user「postgres」修正vim/var/lib/pgsql/9.6/data/pg_hba.confファイル
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer
-----------------------------------------------------------------------------------------------
 :
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust

データベース・サービスを再起動します.再起動rebootを使用しない場合
データベース全体のエクスポート-O所属ユーザー-p指定ポート番号pg_を無視dump-h localhost-U postgres(ユーザー名)データベース名(デフォルトでは同じユーザー名)>/data/dum.sql pg_dumpデータベース名>/data/dum.sql
テーブルのエクスポート
pg_dump-h localhost-U postgres(ユーザー名)-t table(テーブル名)データベース名(デフォルトでは同じユーザー名)>/data/dum.sql
圧縮方法
一般的にdumpでデータをエクスポートすると大きいのでxz圧縮がおすすめです
圧縮方法xz dum.sqlはdumを生成する.sql.xzのファイル
xz圧縮データ逆数データベースメソッド
xzcat/data/dum.sql.xz|psql-h localhost-U postgres(ユーザー名)データベース名(デフォルトでは同じユーザー名)
pg_の使用dumpall pg_dumpは、ロールおよび表領域に関する情報をエクスポートしないデータベースクラスタ内のデータベースのデータのみをバックアップします.pg_dumpallは、データベースクラスタ全体のすべてのデータベースのデータをエクスポートし、ロール、ユーザー、および表領域の定義情報もエクスポートします.pg_の使用dumpallの一般的なコマンドフォーマットは次のとおりです.
pg_dumpall > backup_file
pg_dumpallもサポートとpg_dumpのようなコマンドラインオプション、-hや-pなど.psqlを使用してpg_からdumpallが作成したバックアップファイルでデータベースをリカバリします.データベース・スーパー・ユーザーを使用して、データベースをリカバリする操作を行う必要があります.コマンドのフォーマットは次のとおりです.
psql -f backup_file postgres
pg_dumpallは実行中にpostgresをユーザー名としてデータベースに接続します.システムが自動的に作成したデータベースpostgresの内容も導出され、データベースtemplate 0とtemplate 1の内容は導出されません.
データベースDROP DATABASE testdbを削除します.が表示される場合があります.
ERROR:  database "testdb" is being accessed by other users
DETAIL:  There are 3 other sessions using the database.

このデータベースに接続されているすべての接続を切断し、データベースを削除します.
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname='testdb' AND pid<>pg_backend_pid();

pg_terminate_backend:データベースへの接続を終了するプロセスidの関数.pg_stat_Activity:サービスプロセスのプロパティとステータスを格納するシステムテーブルです.pg_backend_pid():現在のセッションに添付されているサーバプロセスのIDを取得するシステム関数です.