逻辑备份
和psql一样,pg_dump、pg_restore有基本的和数据库连接的参数

-h 目标地址(对应环境变量$PGHOST)

-p 连接端口(对应环境变量$PGPORT)

-U 连接使用的用户(对应环境变量$PGUSER)

-d 连接使用的库,但是pg_dump 省略了-d,可以直接跟库名(对应环境变量$PGDATABASE)

已设环境环境变量

$PGHOST=127.0.0.1

$USER=chen

$PGDATABASE=yun

备份,yun库,备份为custom自定义格式的归档文件,压缩等级9,在shell下执行

pg_dump yun -Fc -Z 9 >yun1.dump

在psql中创建一个以template0为模版的库,名为yun2,0号模版比较干净,另:总是把template 和complete 搞混,前者是模版的意思,后者是完整。。

create database yun2 template template0

还原,在shell下运行pg_restore,把yun库恢复到yun2库中,这就是还原到不同名库中的方法

pg_restore -Upostgres -d yun2 yun1.dump

先新建库的还原,-C自动新建与备份时同名的库,并还原到其中,-d 只是暂时先建立连接用

pg_restore -Upostgres -C -d postgres yun1.dump

就是还原后用\l 列出全部数据库时看不到存取权限了,有待继续实验

05-11 00:34