postgressql备份还原
数据库怎么备份数据PostgreSQL⾃带⼀个客户端pgAdmin,⾥⾯有个备份,恢复选项,也能对数据库进⾏备份恢复(还原),但最近发现数据库慢慢庞⼤的时候,经常出错,备份的⽂件过程中出错的⼏率那是相当⼤,⼿动调节灰常有限。所以⼀直寻完美的备份恢复⽅案。
梦⾥寻他千百度,伊⼈却在灯⽕阑珊处...其实PostgreSQL内置不少的⼯具,寻的备份恢复⽅案就在其中:pg_dump,psql。这两个指令在数据库的安装⽬录下,⽐如我⾃⼰本地安装的,路径形如:C:\Program Files\PostgreSQL\9.5\;然后进⼊到bin⽂件夹,会看到不少的exe ⽂件,这就是PostgreSQL内置的⼯具了。⾥⾯会到 ,两个⽂件。我们怎么⽤他们?
⽤法:
备份数据库,指令如下:
pg_dump -h 164.82.233.54 -U postgres databasename > C:\databasename.bak
开始-运⾏-cmd 弹出dos控制台;然后在控制台⾥,进⼊PostgreSQL安装⽬录bin下:
cd C:\Program Files\PostgreSQL\9.0\bin
最后执⾏备份指令:
pg_dump -h 164.82.233.54 -U postgres databasename > C:\databasename.bak
指令解释:如上命令,pg_dump 是备份数据库指令,164.82.233.54是数据库的ip地址(必须保证数据库允许外部访问的权限哦~),当然本地的数据库ip写 localhost;postgres 是数据库的⽤户名;databasename 是数据库名。> 意思是导出到C:\databasename.bak⽂件⾥,如果没有写路径,单单写databasename.bak⽂件名,那么备份⽂件会保存在C: \Program Files\PostgreSQL\9.0\bin ⽂件夹⾥。
恢复数据库,指令如下:
psql -h localhost -U postgres -d databasename <  C:\databasename.bak(测试没有成功)
--host localhost --port 5432 --username "postgres" --dbname "symbolmcnew" --no-password  --verbose "databasename.backup"(测试成功)
指令解释:如上命令,psql是恢复数据库命令,localhost是要恢复到哪个数据库的地址,当然你可以写上ip地址,也就是说能远程恢复(必须保证数据库允许外部访问的权限哦~);postgres 就是要恢复到哪个数据库的⽤户;databasename 是要恢复到哪个数据库。<  的意思是把C:\databasename.bak⽂件导⼊到指定的数据库⾥。
以上所有的是针对windows⽽⾔的,如果在linux下,会不会有效?
在linux⾥依然有效。有⼀个值得注意的是:如果直接进⼊PostgreSQL的安装⽬录bin下,执⾏命令,可能会出现不到pg_dump,psql的现象,我们在可以这样:
备份:
/opt/PostgreSQL/9.5/bin/pg_dump -h 164.82.233.54 -U postgres databasename > databasename.bak
恢复:
/opt/PostgreSQL/9.5/bin/psql -h localhost -U postgres -d databasename < databasename.bak