POSTGRESQL 完美备份还原

1.POSTGRESQL 完美备份还原

进入到Postgresql下的bin文件夹,会看到不少的exe文件,这就是PostgreSQL内置的工具了.里面会找到pg_dump.exe.我们实际使用的就是这个.

用法:

1. 
cd C:\Program Files\PostgreSQL\9.3\bin

2.
pg_dump -h localhost -U postgres kar > C:\kar.bak 


3.
psql -h localhost -U postgres -d KunlunApple <  C:\kar.bak

1.开始-运行-cmd 弹出dos控制台,然后进入PostgreSQL安装目录bin下,如上面第一条命令.

2.备份

pg_dump -h 164.82.233.54 -U postgres databasename > C:\databasename.bak 

指令解释:

  • pg_dump 是备份数据库指令,
  • 164.82.233.54是数据库的ip地址(必须保证数据库允许外部访问的权限,如果是本地可以用localhost)
  • postgres 是数据库的用户名;
  • databasename 是数据库名。
  • > 意思是导出到C:\databasename.bak文件里,如果没有写路径,单单写databasename.bak文件名,那么备份文件会保存在PostgreSQL\9.3\bin文件夹里。

如上面第二条进行备份.

3.恢复

psql -h localhost -U postgres -d KunlunApple <  C:\kar.bak

指令解释:

  • psql是恢复数据库命令
  • 164.82.233.54是数据库的ip地址(必须保证数据库允许外部访问的权限,如果是本地可以用localhost)
  • postgres 是数据库的用户名;
  • databasename 是要恢复到哪个数据库
  • <   的意思是把C:\databasename.bak文件导入到指定的数据库里

以上所有的是针对windows.

Linux:

在linux里依然有效。有一个值得注意的是:如果直接进入PostgreSQL的安装目录bin下,执行命令,可能会出现 找不到pg_dump,psql 的现象,我们在可以这样:

备份

/opt/PostgreSQL/9.0/bin/pg_dump -h 164.82.233.54 -U postgres databasename > databasename.bak

恢复:

/opt/PostgreSQL/9.0/bin/psql -h localhost -U postgres -d databasename < databasename.bak

 

2. POSTGRESQL 开放外网IP访问

打开 pg_hba.conf

修改

host  all  all  0.0.0.0/0   md5

3.windows server 2003安装失败--the database cluster initialisatio

在windows2003安装失败,报警告,并且没有postgresql服务

problem running post-install step.Installation may not complete correctly
the database cluster initialisation failed

http://forums.enterprisedb.com/posts/list/3984.page 
这个人是PostgreSQL 9.3.5 
http://my.oschina.net/congqian/blog/135590    
这个人是postgresql-windows-9.2.4版本. 
都是和权限有关系. 

后来咨询了下实施的同事,

1.安装前,如果安装过,请卸载,并删除postgresql的目录

2.安装前,创建好你要安装到的目录,比如 D:\xxx\postgresql 目录.

右键postgresql文件夹,设置user有控制权限

3.安装过程中,选择Locale选择  chinese singnapore

4.按常规安装即可成功.

 

3.PostgreSQL 始终不能同时接受超过大约 125 个连接


发生这种情况的原因在于某些 PostgreSQL 说依赖的库依赖于 user32.dll ,而 user32.dll 要从"Desktop Heap"中分配内存。"Desktop Heap"用于为每个登陆会话分配内存,每个非交互式会话大约分配 512KB ,同时每个 postgres.exe 进程消耗大约 3.2KB 的"Desktop Heap",这样大约 125 连接就差不多可以耗尽全部的"Desktop Heap"空间。不过这种情况不会发生在从命令行运行的场合,因为命令行是交互式登陆会话,通常只需要 3MB 大小的"Desktop Heap"就可以了。   http://support.microsoft.com/kb/184802 

要解决这个问题,你必须通过修改注册表中的 SharedSection 值来增加非交互式"Desktop Heap"的尺寸,具体方法参见微软知识库中的文章。需要注意的是,设置太高的值有可能导致系统无法启动。 

 

4.PostgreSQL 自动备份,并删除10天前的备份文件的windows脚本.

新建bat文件,使用以下脚本

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
 
SET PGPATH=D:\db\postgresql\bin\
SET SVPATH=E:\DatabaseBackup\
SET PRJDB=dbname
SET DBUSR=postgres
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
 
SET DBDUMP=%PRJDB%_%d%.bak
@ECHO OFF
%PGPATH%pg_dump -h localhost -U postgres %PRJDB% > %SVPATH%%DBDUMP%

echo Backup Taken Complete %SVPATH%%DBDUMP%

forfiles /p %SVPATH% /d -5 /c "cmd /c echo deleting @file ... && del /f @path" 

 

posted @ 2017-05-27 10:54  迷惘的云  阅读(16654)  评论(0编辑  收藏  举报