PostgreSQL备份工具pg_dump和pg_dumpall

PostgreSQL使用 pg_dump 和 pg_dumpall 进行数据库的逻辑备份,pg_dumpall 是对整个数据库集群进行备份,pg_dump 可以选择一个数据库或者部分表进行备份。

pg_dump 将表结构及数据以SQL语句的形式导出到文件中,恢复数据时,将导出的文件作为输入,执行其中的SQL语句,即可恢复数据。

pg_dump 能够对正在使用的PostgreSQL数据库进行备份,并且不影响正常业务的读写。

一、pg_dump 常用示例:

1.1 导出单表数据

pg_dump -h 127.0.0.1 -U admin -p 5432 -W db -t t1 --inserts > bak.sql

1.2 导出多个表数据

pg_dump -h 127.0.0.1 -U admin -p 5432 -W db -t t1 -t t2 --inserts > bak.sql

1.3 导出整个数据库

pg_dump -h 127.0.0.1 -U admin -p 5432 -W db --inserts > bak.sql

1.4 只导出表结构,不导出数据

pg_dump -h 127.0.0.1 -U admin -p 5432 -W db -s > bak.sql

1.5 只导出数据,不导出表结构

pg_dump -h 127.0.0.1 -U admin -p 5432 -W db --inserts -a > bak.sql

二、pg_dump常用参数

  • -h host,指定数据库主机名,或者IP
  • -p port,指定端口号
  • -U user,指定连接使用的用户名
  • -W,按提示输入密码
  • dbname,指定连接的数据库名称,实际上也是要备份的数据库名称。
  • -a,--data-only,只导出数据,不导出表结构
  • -c,--clean,是否生成清理该数据库对象的语句,比如drop table
  • -C,--create,是否输出一条创建数据库语句
  • -f file,--file=file,输出到指定文件中
  • -n schema,--schema=schema,只转存匹配schema的模式内容
  • -N schema,--exclude-schema=schema,不转存匹配schema的模式内容
  • -O,--no-owner,不设置导出对象的所有权
  • -s,--schema-only,只导致对象定义模式,不导出数据
  • -t table,--table=table,只转存匹配到的表,视图,序列,可以使用多个-t匹配多个表
  • -T table,--exclude-table=table,不转存匹配到的表。
  • --inserts,使用insert命令形式导出数据,这种方式比默认的copy方式慢很多,但是可用于将数据导入到非PostgreSQL数据库。
  • --column-inserts,导出的数据,有显式列名

三、pg_dumpall

相对于pg_dump只能备份单个库,pg_dumpall可以备份整个postgresql实例中所有的数据,包括角色和表空间定义。

示例如下:

pg_dumpall -h 127.0.0.1 -U admin -p 5432 -W --inserts > bak.sql

文章评论

0条评论