PostgreSQL – 复制数据库
在本文中,我们将讨论将 PostgreSQL 数据库复制到同一台服务器上或从一台服务器复制到另一台服务器的过程。
同一服务器内的 PostgreSQL 复制数据库:
如果出现需要在数据库服务器中复制 PostgreSQL 数据库以进行测试的情况。 PostgreSQL 使用 CREATE DATABASE 语句使这样做变得简单,如下所示:
Syntax:
CREATE DATABASE target_database
WITH TEMPLATE source_database;
此语句将source_database复制到target_database 。例如,要将此处描述的可从此处下载的 dvdrental 示例数据库复制到 dvdrental_test 数据库,请使用以下语句:
CREATE DATABASE dvdrental_test
WITH TEMPLATE dvdrental;
根据原始数据库的大小,完成复制可能需要一段时间。
PostgreSQL 将数据库从一台服务器复制到另一台服务器:
有多种方法可以在各种 PostgreSQL 数据库服务器之间复制数据库。随着数据库变大,服务器之间的连接变慢。这样做的一种方法是创建数据库转储并将相同的转储还原到另一台服务器。为此,需要遵循以下命令:
- 步骤 1:创建源数据库的转储文件。
pg_dump -U postgres -d source_database -f source_database.sql
- 第 2 步:将转储文件复制到远程服务器。
- 步骤 3:在要恢复数据库转储的远程服务器中创建一个新数据库:
CREATE DATABASE target_database;
- 第 4 步:在远程服务器上恢复转储文件:
psql -U postgres -d target_database -f source_database.sql
例子:
在这里,我们将把dvdrental 数据库从本地服务器复制到远程服务器。首先,我们将dvdrental 数据库转储到转储文件中,例如dvdrental.sql :
pg_dump -U postgres -O dvdrental dvdrental.sql
然后我们将转储文件复制到远程服务器,我们将在远程服务器上创建 dvdrental 数据库:
CREATE DATABASE dvdrental;
现在,我们将刚刚创建的转储文件恢复到远程服务器:
psql -U postgres -d dvdrental -f dvdrental.sql
对于服务器之间的高速连接或较小的数据库,还可以使用以下命令:
pg_dump -C -h local -U localuser source_database | psql -h remote -U remoteuser target_database
例如,如果希望将dvdrental 数据库从本地主机复制到远程服务器,请按如下方式进行:
pg_dump -C -h localhost -U postgres dvdrental | psql -h remote -U postgres dvdrental