postgresql - 从文件夹恢复 postgres 数据库

标签 postgresql ubuntu

我的服务器上有一个旧的 postgresql 数据库文件夹 (/var/lib/postgresql/9.5/main/)。现在我想从文件中获取数据。所以我将主文件夹复制到我的本地机器并更改了 postgresql 配置 (/etc/postgresql/9.5/main/postgresql.conf) 以指向该目录。此外,我将主目录的权限更改为用户 postgres。重启postgresql服务后(sudo service postgresql restart)确实不行。

我做错了什么? (是的,我知道,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)。所以没有机会从中获取数据?

谢谢,吕克

最佳答案

如果您的数据目录确实来自 ARM7l 系统,而您的本地系统是 x86_64,那么您将遇到一些困难。

关于 USE_FLOAT8_BYVAL 的直接错误是因为 ARM7L 是 32 位的,不能按值传递 64 位浮点值(8 字节)。您的 64 位主机可以。但是,如果您在禁用 USE_FLOAT8_BYVAL 的情况下重新编译自定义 postgres,您可能会遇到其他问题。

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

如果您无法再访问 ARM 系统,像 qemu 这样的仿真器应该可以帮助您。

否则,也许您可​​以编译一个修改后的 PostgreSQL(可能从 32 位 x86 开始),它可以读取数据目录,并使用适当的配置选项等。我从来不需要尝试这个。

关于postgresql - 从文件夹恢复 postgres 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46719573/

相关文章:

linux - Crontab 不执行 R 脚本

PostgreSQL:如何获得一定半径内的所有点

python 和 postgresql : reliably check for updates in a specific table

PostgreSQL COPY,是否可以一次将数据写入多个表

postgresql - GraphQLError : Query root type must be provided

Eclipse突然关闭而没有任何警告

sql - 计算 Postgres 中时间列的总和

ubuntu - SSH使用pem文件询问密码

linux - 如何使用需要混合使用 sudo 和 sudo -u 用户名权限的命令来制作脚本?

php - 使用 php 创建 Linux 用户