Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PostgreSQL将数据迁移到远程服务器?_Postgresql_Data Migration - Fatal编程技术网

如何使用PostgreSQL将数据迁移到远程服务器?

如何使用PostgreSQL将数据迁移到远程服务器?,postgresql,data-migration,Postgresql,Data Migration,如何转储数据库模式和数据,使转储数据的用户名、数据库名称和模式名称与部署到的服务器上的这些变量匹配 我当前的流程需要分两步移动数据。首先,我转储数据库的模式(pg_dump--schema only-C-C),然后使用pg_dump--data only-C转储数据,并使用psql命令在远程服务器上依次恢复这些数据。但必须有比这更好的方法。我们使用以下方法复制数据库 pg_basebackup -x -P -D /var/lib/pgsql/9.2/data -h OTHER_DB_IP_ADD

如何转储数据库模式和数据,使转储数据的用户名、数据库名称和模式名称与部署到的服务器上的这些变量匹配


我当前的流程需要分两步移动数据。首先,我转储数据库的模式(
pg_dump--schema only-C-C
),然后使用
pg_dump--data only-C
转储数据,并使用
psql
命令在远程服务器上依次恢复这些数据。但必须有比这更好的方法。

我们使用以下方法复制数据库

pg_basebackup -x -P -D /var/lib/pgsql/9.2/data -h OTHER_DB_IP_ADDR -U postgres
它要求位于其他_DB_IP_ADDR的“主”服务器运行复制服务,并且
pg_hba.conf
必须允许复制连接。为了进行复制,您不必将“从属”服务作为热/热备用运行。与转储/还原相比,此方法的一个缺点是,还原操作可以有效地清空、重新索引和重置所有内容,而复制则不会,因此,如果数据库被大量编辑,则复制可能会占用更多的磁盘空间。另一方面,复制要快得多(在我们的例子中是15分钟而不是3小时),因为不必重建索引

一些有用的参考资料:


我们使用以下方法复制数据库

pg_basebackup -x -P -D /var/lib/pgsql/9.2/data -h OTHER_DB_IP_ADDR -U postgres
它要求位于其他_DB_IP_ADDR的“主”服务器运行复制服务,并且
pg_hba.conf
必须允许复制连接。为了进行复制,您不必将“从属”服务作为热/热备用运行。与转储/还原相比,此方法的一个缺点是,还原操作可以有效地清空、重新索引和重置所有内容,而复制则不会,因此,如果数据库被大量编辑,则复制可能会占用更多的磁盘空间。另一方面,复制要快得多(在我们的例子中是15分钟而不是3小时),因为不必重建索引

一些有用的参考资料:


什么版本的PostgreSQL?您考虑过复制而不是转储/恢复吗?@DwayneTowell我从未做过复制。我认为复制用于多服务器设置。我现在只有一台服务器。你能告诉我在哪里可以找到这个主题的资源吗?什么版本的PostgreSQL?你考虑过复制而不是转储/恢复吗?@DwayneTowell我从来没有做过复制。我认为复制用于多服务器设置。我现在只有一台服务器。你能告诉我在哪里可以找到这个主题的资源吗?只想补充一下,可以(至少现在在v11中)将整个conninfo字符串作为一个命令行参数传递:
pg_basebackup-d'host=127.0.0.1 port=25432'-d/postgres/data/path
只想补充一下,可以(至少现在在v11中)要将整个conninfo字符串作为一个命令行参数传递:
pg_basebackup-d'host=127.0.0.1 port=25432'-d/postgres/data/path