在pgAdmin中将整个数据库(其结构和数据)复制到新数据库的正确方法是什么?


当前回答

用模板创建数据库新数据库originaldb所有者dbuser;

如果你使用过Ubuntu。1路createdb-O所有者-T old_db_name new_db_name

2路创建数据库测试副本pg_dump old_db_name | psql测试副本

其他回答

贝尔回答的命令行版本:

createdb -O ownername -T originaldb newdb

这应该在数据库主机(通常是postgres)的权限下运行。

要使用postgres克隆现有数据库,您可以这样做

/* KILL ALL EXISTING CONNECTION FROM ORIGINAL DB (sourcedb)*/
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity 
WHERE pg_stat_activity.datname = 'SOURCE_DB' AND pid <> pg_backend_pid();

/* CLONE DATABASE TO NEW ONE(TARGET_DB) */
CREATE DATABASE TARGET_DB WITH TEMPLATE SOURCE_DB OWNER USER_DB;

IT将终止与源数据库的所有连接,以避免错误

ERROR:  source database "SOURCE_DB" is being accessed by other users

创建数据库转储

cd /var/lib/pgsql/
pg_dump database_name> database_name.out

重新记录数据库转储

psql -d template1
CREATE DATABASE database_name WITH  ENCODING 'UTF8' LC_CTYPE 'en_US.UTF-8' LC_COLLATE 'en_US.UTF-8' TEMPLATE template0;
CREATE USER  role_name WITH PASSWORD 'password';
ALTER DATABASE database_name OWNER TO role_name;
ALTER USER role_name CREATEDB;
GRANT ALL PRIVILEGES ON DATABASE database_name to role_name;


CTR+D(logout from pgsql console)
cd /var/lib/pgsql/

psql -d database_name -f database_name.out

复制“欠载”数据库

我把这个方法和上面的例子拼凑在一起。我正在一台“负载不足”的服务器上工作,当我尝试使用@zbyszek的方法时出错。我也在寻求“仅限命令行”的解决方案。

createdb:数据库创建失败:错误:其他用户正在访问源数据库“exampledb”。

以下是对我有效的方法(命令前加nohup,以将输出移动到文件中并防止服务器断开连接):

nohup pg_dump示例b>example-01.sqlcreatedb-O postgres示例bclone_01我的用户是“postgres”nohup psql示例bclone_01<示例-01.sql

以下是仅使用pgadmin4 GUI(通过备份和恢复)在数据库上创建复制的整个过程

Postgres附带Pgadmin4。如果你使用macOS,你可以按CMD+SPACE并键入pgadmin4来运行它。这将在chrome中打开一个浏览器选项卡。


复制步骤

1.创建备份

通过右键单击数据库->“备份”来执行此操作

2.为文件命名。

如测试12345。单击备份。这将创建一个二进制文件转储,它不是.sql格式

3.查看下载位置

屏幕右下角应该有一个弹出窗口。单击“更多详细信息”页面,查看备份下载到的位置

4.查找下载文件的位置

在本例中,它是/users/vincenttang

5.从pgadmin还原备份

假设您正确执行了步骤1到4,您将得到一个还原二进制文件。有时,您的同事可能希望在其本地计算机上使用您的还原文件。让此人转到pgadmin并恢复

通过右键单击数据库->“还原”来执行此操作

6.选择文件查找器

确保手动选择文件位置,不要将文件拖放到pgadmin中的上传器字段。因为您将遇到错误权限。相反,找到您刚刚创建的文件:

7.查找所述文件

您可能需要将右下角的筛选器更改为“所有文件”。此后,从步骤4查找文件。现在点击右下角的“选择”按钮确认

8.还原所述文件

您将再次看到此页面,其中选择了文件的位置。继续并恢复它

9.成功

如果一切正常,右下角将弹出一个指示器,显示成功恢复。您可以导航到表,查看每个表上的数据是否已正确还原。

10.如果不成功:

如果步骤9失败,请尝试删除数据库中的旧公共架构。转到“查询工具”

执行此代码块:

DROP SCHEMA public CASCADE; CREATE SCHEMA public;

现在再次尝试步骤5至9,应该会成功

编辑-一些附加说明。如果您在上传过程中遇到错误,在还原过程中出现类似“archiver header 1.14 unsupported version”的内容,请更新PGADMIN4