2017-10-12 103 views
1

我从我的服务器上获得了我的postgresql db文件夹(/var/lib/postgresql/9.5/main/)的旧副本。现在我想从文件中获取数据。所以我将主文件夹复制到本地机器,并将postgresql配置(/etc/postgresql/9.5/main/postgresql.conf)更改为指向该目录。我还将主目录的权限更改为用户postgres。重新启动postgresql服务(sudo服务postgresql重新启动)后,它实际上不起作用。从文件夹中恢复postgres db

我在做什么错了? (是的,我知道,pg_dump是首选的方式,但以这种方式...) 所以我的问题,这是否甚至工作? 或者还有其他方法可以从中获取数据吗?

一切都在Ubuntu 16.04上完成。

编辑:

改变postgresql.conf文件指向新目录后的日志文件。

2017-10-13 06:15:43 CEST [968-1] LOG: database system was shut down at 2017-10-13 00:21:04 CEST 
2017-10-13 06:15:43 CEST [968-2] LOG: MultiXact member wraparound protections are now enabled 
2017-10-13 06:15:43 CEST [959-1] LOG: database system is ready to accept connections 
2017-10-13 06:15:43 CEST [975-1] LOG: autovacuum launcher started 
2017-10-13 06:15:43 CEST [983-1] [unknown]@[unknown] LOG: incomplete startup packet 
2017-10-13 06:47:55 CEST [975-2] LOG: autovacuum launcher shutting down 
2017-10-13 06:47:55 CEST [959-2] LOG: received smart shutdown request 
2017-10-13 06:47:55 CEST [972-1] LOG: shutting down 
2017-10-13 06:47:55 CEST [972-2] LOG: database system is shut down 
2017-10-13 06:47:55 CEST [4667-1] FATAL: database files are incompatible with server 
2017-10-13 06:47:55 CEST [4667-2] DETAIL: The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL. 
2017-10-13 06:47:55 CEST [4667-3] HINT: It looks like you need to recompile or initdb. 

好的,这指出我this。服务器是armv7l,而本地计算机是x86_64(uname -m)。那么没有机会从中获取数据?

THX,吕克

+0

”真的没有工作“。日志输出?究竟发生了什么或没有?细节!编辑问题至少添加日志输出。 –

+0

@CraigRinger感谢您的建议,更新了我的问题 – Luc

回答

1

如果这是真的,你的数据目录是从ARM7l系统和本地系统是x86_64的,你将有一定的困难。

有关USE_FLOAT8_BYVAL的即时错误是因为ARM7L是32位,并且无法通过按值的64位浮点值(8字节)。你的64位主机可以。但是,如果您重新编译了禁用USE_FLOAT8_BYVAL的自定义postgres,则可能会遇到其他问题。

我建议在匹配的ARM系统上安装PostgreSQL以恢复数据。 PostgreSQL的数据目录不能跨架构移植(出于性能原因)。

如果您无法再访问ARM系统,像qemu这样的模拟器应该能够帮助您。

否则,也许你可以编译一个修改后的PostgreSQL(可能以32位x86开始),它可以读取data-dir,并带有适当的配置选项等。我从来不需要试试这个。 “

+0

ARM系统仍在运行。那里的postgresql文件夹被复制到一个USB设备,从中我将它复制到我的本地机器。同样在服务器上,我试图链接(更改postgresql.conf文件指向新的目录)到USB设备复制文件夹,结束了相同的结果。 – Luc

+0

是的,这不会改变任何事情。如果ARM计算机仍然运行,为什么不只是'pg_dump'数据库? –

+0

你的意思是“只是”pg_dump? – Luc