windows下postgres数据库软件被损坏的情况下data文件存在恢复数据库

在项目要演示的前一天数据库突然被鲁大师给损坏了,导致项目无法启动,想了各种办法,查了很多资料,最终得以解决,再此做一个记录

一.数据库postgres损坏恢复方法此方法同样适用于系统崩溃后,找回数据的操作

如果是系统崩溃,需要找回数据,PostgreSQL安装目录的data文件夹要存在

核心原理:备份数据,重新安装和原来版本一样的数据库包括32位还是64位,尽量保持一致,尤其是32位还是64位的数据库,然后更换PostgreSql的data文件夹(将原来的data文件夹重命名即可),重启服务,详细操作如下:(记住只字不落的阅读

1.找到要备份数据库的data文件(确保完整

2.安装同一版本的数据库

3.停止Postgres服务,可以在运行中输入services.msc,在启动的窗口中关闭掉postgres服务,也可以通过在cmd中输入

net stop postgresql-9.3(这里是服务的名称,依照你的实际情况更改)

4.在任务管理器中关闭掉postgre的进程如果有的话(一般没有)

5.移除Postgres服务,在CMD(以管理员身份运行)中输入

cd "d:\Program Files\PostgreSQL\9.3\bin" 执行目录跳转到Postgre安装目录下的bin目录下,再输入

pg_ctl unregister -N "postgresql-9.3" (这里也是PostgerSql的服务名称)

5.确保Postgre进程没有在任务管理器里面,将Postgres安装目录下的data文件改data1,将1中要备份的data文件拷贝到当前Postgres目录下。

6.重新创建Postgres服务,CMD(以管理员身份运行)到 "d:\Program Files\PostgreSQL\9.3\bin" 输入

pg_ctl register -N "postgres" -D "d:\Program Files\PostgreSQL\9.3\data"

7.启动服务,cmd 输入 net start postgres 或者打开服务目录点击启动如下

8.打开pgadmin3 点击连接服务器 主机输入127.0.0.1 密码输入之前postgres密码 点确定 就可以连接上之前的服务器了

二、常见的postgres数据备份和恢复方法

1.数据备份:

D:\PostgreSQL\10\bin\pg_dump.exe --file "D:\\vvv.tar" --host "localhost" --port "5432" --username "postgres" --no-password --verbose --role "postgres" --format=t --blobs --encoding "UTF8" "gis"

2.数据恢复:

D:\PostgreSQL\10\bin\pg_restore.exe --host "localhost" --port "5432" --username "postgres" --no-password --dbname "gis2" --verbose "D:\\aa.tar"

3.批处理备份

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
 
SET PGPATH=D:\PostgreSQL\10\bin\
SET SVPATH=E:\DatabaseBackup\
SET PRJDB=gis
SET DBUSR=postgres
SET DBDUMP=%PRJDB%_%date:~0,4%%date:~5,2%%date:~8,2%-%time:~0,2%_%time:~3,2%_%time:~6,2%.tar
@ECHO OFF
%PGPATH%pg_dump.exe --file "%SVPATH%%DBDUMP%" --host "localhost" --port "5432" --username "%DBUSR%" --no-password --verbose --role "%DBUSR%" --format=t --blobs --encoding "UTF8" "gis"
echo Backup Taken Complete %SVPATH%%DBDUMP%
pause

三、解决Postgresql服务启动又关闭的问题

错误1:无法重启服务或者启动后又停止,错误信息如下

查看系统日志:打开计算机管理====>查看应用程序日志信息,可以看出,由于日志配置错误的问题

日志如下:

解决方法

我们看到是和postgressql.conf文件相关 然后出现乱码的现象

所以解决思路上将原来安装postgres的data文件夹下面的postgressql.conf文件拷贝过来,重启服务就可以解决

错误2:

如果日志文件报错出现如下现象时

解决方法:找到 postgresql.conf 文件,做如图修改

 四、postgres常见问题汇总

1.postgres无法导入shp数据

需要安装postgis shapefile and dbf loader 插件,

可以使用向导安装,也可以直接去PostGIS官网下载即可(http://www.postgis.net/)

安装好后导入如下图

 

2.postgres安装后其他机器无法连接数据库

在文件夹 \PostgreSQL\9.3\data\pg_hba.conf 的最后一行添加如下代码即可

host     all     all     192.168.0.1/16     md5

3.postgres无法导入空间数据的表需要安装postgis扩展,方法如下,给数据库新建扩展,命名为postgis保存即可

 

也可以使用命令行 

CREATE EXTENSION postgis;

4.相关地址

如果要下载安装其他的版本,可以从官网的地址中找:

PostgreSQL 官网:https://www.postgresql.org/download/windows/

PostGIS 官网:http://download.osgeo.org/postgis/windows/

 

关注

如果有问题,请在下方评论

想获得更多的学习知识请关注微信公众号:西北码农或扫下方二维码


### 配置PostgreSQL主从备份 #### 修改主服务器配置文件 为了实现PostgreSQL的主从备份,需先调整主服务器上的`postgresql.conf`文件设置。具体来说,在PG安装目录下的`postgresql.conf`文件中,应取消特定参数前的注释符号(即井号 `#`),并对这些参数进行适当设定[^3]。 例如: ```conf listen_addresses = '*' wal_level = replica max_wal_senders = 10 wal_keep_segments = 64 archive_mode = on hot_standby = on ``` 上述配置允许主节点监听所有地址,并保持足够的WAL日志供备节点追加同步;同时开启热备用功能以便于读取操作可以在副本上执行。 #### 设置主机信任关系 为了让备机能够顺利连接到主机获取数据流复制所需的信息,需要编辑位于`pg_hba.conf`中的访问控制列表,加入一条记录指定允许来自哪个IP范围内的客户端通过何种认证方式接入数据库服务。对于基于主机验证的方式而言,则可以采用如下形式来简化配置过程[^1]: ``` host replication postgres server.example.com/32 trust ``` 此行表示任何来自于`server.example.com`这台机器发起的数据复制请求都将被无条件接受而无需密码校验。 #### 初始化备库环境 完成以上准备工作之后,就可以利用`pg_basebackup`工具创建一个新的物理拷贝作为初始状态的基础了。命令格式通常如下所示[^4]: ```bash pg_basebackup -h 172.16.125.201 -U replica -D /var/lib/pgsql/9.4/data -X stream -P ``` 这条指令会从远程位置(`172.16.125.201`)拉取最新版本的数据集存放到本地路径(`/var/lib/pgsql/9.4/data`)内,并启用持续的日志传输模式(-X stream),从而确保两份实例之间的一致性和连续性。 #### 启动并监控进程 最后一步是在新建立好的次级站点启动PostgreSQL守护程序,使其进入待命状态准备接收更新通知以及处理查询请求。可以通过查看系统进程中是否存在名为`checkpointer`的服务项确认当前运行状况正常与否[^2]。 ```bash ps aux | grep postgres ``` 如果一切顺利的话,应该可以看到类似于下面这样的输出结果表明存在负责管理检查点机制的工作线程正在积极工作当中: ``` postgres 4809 0.0 0.0 4806 0 11:31 ? 00:00:00 postgres: checkpointer process ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值