postgres数据库的备份与恢复用到pg_dump命令:
如果是备份与恢复本地postgres数据库
进入postgres并查看数据库
su - postgres
psql
\l
资料库列表
名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限
------------+----------+----------+-------------+-------------+-----------------------
activities | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
backstage | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
db1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
exchange | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(7 行记录)
我们可以看到有这些数据库,其中如果我想备份backstage这个数据库,首先\q退出数据库,使用pg_dump命令。
-bash-4.2$ pg_dump backstage > ./backstage.bak
-bash-4.2$ ls
10 backstage.bak exchange.bak psql.backup psql.backup.tar
-bash-4.2$
可以看到backstage数据库已经被备份导出为backstage.bak文件。
backstage是数据库名,./backstage.bak是文件以及保存路径。
psql再次进入数据库,我们删除backstage数据库:
postgres=# drop database backstage;
DROP DATABASE
\l再次查看
postgres=# \l
资料库列表
名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限
------------+----------+----------+-------------+-------------+-----------------------
activities | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
db1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
exchange | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(6 行记录)
数据库backstage已经被删除。
现在恢复数据库backstage。
首先创建backstage数据库
create database backstage;
\c backstage 切换到backstage数据库
接下来使用\i命令恢复数据库
\i backstage.bak
恢复完成后我们再次 \c backstage切换到backstage数据库
\d 查看backstage中的表结构已经恢复。
backstage=# \c backstage
psql (9.2.24, 服务器 10.11)
警告:psql 版本9.2, 服务器版本10.0.
一些psql功能可能无法工作.
您现在已经连线到数据库 "backstage",用户 "postgres".
backstage=# \d
关联列表
架构模式 | 名称 | 型别 | 拥有者
----------+------------------------------+--------+----------
public | account_vols | 资料表 | postgres
public | account_vols_id_seq | 序列数 | postgres
public | admin_favs | 资料表 | postgres
远程备份与恢复需要用到pgcli工具连接远程数据库之后再备份与恢复。
首先安装pgcli
yum -y install python-pip
pip install pgcli
备份数据库依旧使用pg_dump命令,格式为:
pg_dump -h ip -p port -U user databasename > databasename.bak
或者:
pg_dump - ip -p port -U user -f /databasename.bak databasename(数据库名)
恢复数据库:
首先使用pgcli连接数据库:
pgcli -h ip -p port -U user
连接上之后切换到要导入数据的数据库,如果没有就创建,之后使用\i databasename.bak
恢复数据库。
\i databasename.bak
如果恢复不成功使用此命令:
psql -h IP -p port -U postgres -d databasename < databasename.bak