postgres备份和恢复
########################################pg_dump###################################
1.导出具体某个schema(导出sql格式,不是二进制格式,二进制格式需要使用pg_restore恢复)
导出s1 schema
su - postgres
pg_dump -h 192.168.1.102 -U postgres -p 5432 -d db_rep -n s1 -f /tmp/s1.sql
导出public schema
pg_dump -h 192.168.1.102 -U postgres -p 5432 -d db_rep -n public -f /tmp/public.sql
导出整个库,会导出该库下的所有schema,文件里表名会带上schema
pg_dump -h 192.168.1.102 -U postgres -p 5432 -d db_rep -f /tmp/db_rep.sql
导出多个schema,需要使用多个-n参数
pg_dump -h 192.168.1.102 -U postgres -p 5432 -d db_rep -n public -n s1 -f /tmp/s1_public.sql
2.导入某个schema
模拟删除schema
db_rep=# \dn
List of schemas
Name | Owner
--------+----------
public | postgres
s1 | postgres
(2 rows)
db_rep=# drop schema s1 cascade;
NOTICE: drop cascades to table s1.tb_s1
DROP SCHEMA
导入
[postgres@localhost ~]$ psql -h 192.168.1.102 -U postgres -p 5432 -d db_rep</tmp/s1.sql
3.导出的文件带drop语句
pg_dump -c -h 192.168.1.102 -U postgres -p 5432 -d db_rep -n s1 -f /tmp/c2.sql
4.导出二进制格式(-Fc参数)
pg_dump -Fc -h 192.168.1.102 -U postgres -p 5432 -d db_rep -n s1 -f /tmp/s1.dump
二进制格式的需要pg_restore恢复
db_rep=# drop schema s1 cascade;
NOTICE: drop cascades to table s1.tb_s1
DROP SCHEMA
[postgres@localhost bin]$ pg_restore -h 192.168.1.102 -U postgres -p 5432 -d db_rep</tmp/s1.dump
5.pg_dumpall
[postgres@localhost data]$ pg_dumpall -h 192.168.1.102 -U postgres -p 5432 -W>/tmp/pg_all.sql
Password:
Password:
Password:
Password:
Password:
Password:
6.导到多个表
把需要导出的表放到table_list.txt文件
pg_dump -d database_name $(cat table_list.txt | xargs -I % echo "-t %") > file_name.sql