我在双启动机器上安装了Postgresql 9.4(在Win 7和Ubuntu 14.10上都有).这两个系统共享一个驱动器(NTFS格式化),其中包含一个在Windows下创建的Psql数据库目录.显然,Psql安装是特定于系统的,它们也恰好位于不同的分区上.该驱动器在Linux下自动安装,并具有完整的读/写/执行权限.
我想知道是否可以在两个系统之间共享结构和数据,而无需每次加载新操作系统时都重复和/或必须复制所有内容.实际上,我希望Ubuntu在Windows中创建时可以使用所有数据,反之亦然.
这是否可能,如果是这样,如果所有数据最初是在Windows下生成的,那么如何从Linux中设置这个?
编辑:我试过跑:
sudo pg_dropcluster --stop 9.4 main
其次是
sudo pg_createcluster -d /db_from_windows_path 9.4 main
这似乎工作,但然后当再次启动服务器时,我得到:
sudo /etc/init.d/postgresql start
* Starting Postgresql 9.4 database server
* Error: Could not exec /usr/lib/postgresql/9.4/bin/pg_ctl /usr/lib/postgresql/9.4/bin/pg_ctl start -D /db_from_windows_path -s -o -c config_file="/etc/postgresql/9.4/main/postgresql.conf" :
[fail]
这看起来非常神秘,特别是因为/var/log/postgresql/postgresql-9.4-main.log完全是空的,所以/ var / log / postgresql /目录的其余部分也是如此
编辑2:在看了一些之后,我注意到没有采用chown,因为NTFS系统显然只能在挂载时设置.修复/ etc / fstab以获得postgres的所有权后,我得到一个不同的错误:Postgresql服务器无法启动.请检查日志输出.这再次导致没有日志,所以我跑了:
/usr/lib/postgresql/9.4//bin/postgres -d 5 -D /var/lib/postgresql/9.4/main -c config_file=/etc/postgresql/9.4/main/postgresql.conf
这给了这个:
LOG: invalid value for parameter "dynamic_shared_memory_type": "windows"
HINT: Available values: posix, sysv, mmap, none.
2015-04-17 12:38:43 BST [3653-3] LOG: invalid value for parameter "lc_messages": "English_United Kingdom.1252"
2015-04-17 12:38:43 BST [3653-4] LOG: invalid value for parameter "lc_monetary": "English_United Kingdom.1252"
2015-04-17 12:38:43 BST [3653-5] LOG: invalid value for parameter "lc_numeric": "English_United Kingdom.1252"
2015-04-17 12:38:43 BST [3653-6] LOG: invalid value for parameter "lc_time": "English_United Kingdom.1252"
2015-04-17 12:38:43 BST [3653-7] FATAL: configuration file "/etc/postgresql/9.4/main/postgresql.conf" contains errors
2015-04-17 12:38:43 BST [3653-8] DEBUG: shmem_exit(1): 0 before_shmem_exit callbacks to make
2015-04-17 12:38:43 BST [3653-9] DEBUG: shmem_exit(1): 0 on_shmem_exit callbacks to make
2015-04-17 12:38:43 BST [3653-10] DEBUG: proc_exit(1): 0 callbacks to make
2015-04-17 12:38:43 BST [3653-11] DEBUG: exit(1)
这似乎是一个完全不同的问题,也许与POSIX有关?
解决方法:
I would like to kNow if it is possible to share the structure and data between the two systems without duplicating and/or having to copy everything each time I load a new OS. Effectively, I would like all the data to be available to Ubuntu when it is created in Windows, and vice versa.
你不能.只是不支持,不可能.没有办法. Postgresql不会尝试使数据目录在架构,操作系统等之间可移植.
唯一可以执行此操作的方法是,当您要访问Windows数据目录时,在Ubuntu中运行Windows虚拟机,或者当您想要访问Linux数据目录时,在Windows内部运行Linux虚拟机.
您可能希望运行在两个平台之间共享的VM映像,并让它包含数据库 – 但要小心,Linux的NTFS驱动程序对性能不是很好,并且在并发时可能没有解决所有问题. / O所以我有点怀疑运行类似虚拟机映像的东西. fat32和exFAT不是崩溃安全的.因此,文件系统实际上没有任何好的选择,两个系统都可以共享以运行“实际工作”.
所以个人……我只是有一台小型的独立机器.或者我会保留数据库的转储并在重新启动时重新加载它.
(另外,如果在Linux的NTFS文件系统驱动程序下在Linux下运行Postgresql工作,那有点令人惊讶,我当然不会依赖它来做任何我关心的事情).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。