如何将数据库从本地迁移到远程服务器?

Lov*_*eow 4 postgresql

我有一个我创建的 postgres 数据库,需要远程部署。从在线阅读我了解到,要做到这一点,我需要修改以下文件:

  1. pg_hba.conf

  2. 配置文件

从我读到的我需要修改它们并以某种方式将它们添加到我的数据库中?

我的问题是:

  1. 如何修改这两个文件以在线部署数据库?我阅读了文档,但它对我的理解来说太复杂了。(即需要什么以及为什么?)

  2. 如何将它们在线添加到我的数据库中?我的想法是创建本地数据库的数据库转储,然后将转储推送到远程计算机上的新数据库上,但这两个文件如何放入其中?应该放在哪里?我找不到这方面的详细信息。

笔记。我以前从未做过分布式编程,我的问题可能很幼稚,但我真的不知道如何进行。

我使用的是 osX 操作系统,但将在远程计算机上使用 linux。

小智 8

这两个配置文件适用于服务器,因此您的本地和远程服务器都已经拥有这些文件,并且它们的内容特定于安装。

假设您的远程服务器已经启动并运行,您需要做的就是将要部署的数据库转储到一个文件中,然后将转储文件加载到您的远程服务器中。您不必对配置文件做任何事情。

您可以使用pg_dump将本地数据库转储到文件,执行如下操作:

pg_dump -U postgres -Fc my_db > my_db.db
Run Code Online (Sandbox Code Playgroud)

但是检查程序的所有选项pg_dump

在远程服务器上加载数据库同样简单pg_restore

pg_restore -h <ip remote server> -p <port remote server> -U postgres -C my_db.db
Run Code Online (Sandbox Code Playgroud)

在远程服务器上,如果您无权访问该postgres角色,则需要指定可以创建数据库的用户。

如果您使用的是 *nix 的某种风格,您甚至可以将pg_dump输出通过管道pg_restore输入输入并一次性完成所有操作:

pg_dump -U postgres -Fc my_db | pg_restore -h <ip> -p <port> -U postgres -C
Run Code Online (Sandbox Code Playgroud)

请注意,这pg_dump将要求在本地服务器上输入密码(如果有的话)并pg_restore远程服务器上要求密码(如果有的话)。

这两个程序都有很多选择。在回来告诉我它不起作用之前,请务必完整阅读文档并使用选项来匹配您的情况。