暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

pg_dump 详细参数使用与讲解

原创 龙镇君 2024-11-27
1721

一、基本的概念及介绍

pg_dump 是 PostgreSQL 数据库系统提供的一个实用程序,用于备份数据库的内容。它可以将数据库的结构和数据以文本格式或其他格式导出到文件中,这些文件可以用于在其他环境中恢复数据库。pg_dump 是一个逻辑备份工具,它通过查询数据库来获取数据,因此可以在数据库正在使用时进行备份,而不会阻塞其他用户的访问。


注意:在使用 pg_dump 之前,确保你的系统上已经安装了 PostgreSQL。


二、pg_dump备份使用


pg_dump可以按照不同的方式进行转储,包括:


完全转储:导出数据库的所有对象和数据。

自定义转储:选择性地导出指定的对象和数据,例如只导出特定的表或模式。

只转储数据:只导出数据库中的数据,不包括表结构等定义信息。


1、pg_dump备份使用:备份整个数据库的所有内容

2、pg_dump备份使用:备份指定表

3、pg_dump备份使用:只备份表结构

4、pg_dump备份使用:只备份表数据


三、pg_dump的常用选项和参数


语法:

pg_dump [选项]... [数据库名]


pg_dump -U <username> -h <hostname> -p <port> <database_name> > <backup_file.sql>


pg_dump提供了多种选项和参数,可以根据需求进行灵活配置。以下是一些常用的选项:


-h, --host=主机名:指定数据库服务器的主机名或IP地址。

-p, --port=端口:指定数据库服务器的端口。

-U, --username用户名=名字:连接数据库时使用的用户名。

-w, --no-password:从不提示输入密码。

-W, --password:强制口令提示(自动)。

-F, --format=c|d|t|p:输出格式(定制,目录,tar,纯文本)常见格式如:c:自定义格式(推荐使用)。t:TAR 格式。p:纯文本格式。

-v, --verbose:详细模式。

-V, --version:显示版本信息,然后退出。

-Z, --compress=0-9:压缩输出数据。

-f, --file=文件名:指定备份文件的保存路径。

-s:--schema-only仅导出数据库的结构(schema)。

-a 或 --data-only:只导出数据,不导出结构(表定义)。


例如:

pg_dump -U 用户名 -h localhost -p 5432 mydatabase(数据库) > mydatabase_backup.sql


四、备份数据库


备份整个数据库


pg_dump -U 用户名 -h localhost -p 5432 -d mydb -F c -f /backup/mydb.dump


该命令会将名为mydb的数据库备份为一个自定义格式的文件,并保存到/backup/mydb.dump路径下。


备份整个数据库到 SQL 文件


pg_dump -U 用户名 -h localhost -p 5432 mydb -f mydb.sql


备份整个数据库到自定义格式文件:


pg_dump -U 用户名 -h localhost -p 5432 mydb -F c -f mydb.dump


备份单个表


pg_dump -U 用户名 -h localhost -p 5432 -d mydb -t mytable -F c -f /backup/mytable.dump

该命令会将名为mytable的表从mydb数据库中导出,并保存为自定义格式的文件。


仅备份数据库结构


pg_dump -U 用户名 -h localhost -p 5432 -d mydb -s -F c -f /backup/mydb_schema.dump

该命令会只导出mydb数据库的schema信息,不包括实际数据。


备份到纯文本格式


pg_dump -U 用户名 -h localhost -p 5432 -d mydb -F p -f /backup/mydb.sql

该命令会将mydb数据库备份为纯文本格式的SQL文件,可以直接查看和编辑。


备份特定表到 SQL 文件


pg_dump -U 用户名 -h localhost -p 5432 mydb -t demotable -f mydb.sql


五、pg_dump的还原操作


1、还原自定义格式或TAR格式的备份


使用 pg_restore 命令可以从 pg_dump 创建的备份文件中恢复数据库。


pg_restore -U username -d mydatabase -1 mydatabase.dump

这里 -d 选项后面跟的是要恢复的数据库名,-1 选项表示恢复之前先进入单用户模式。


使用pg_restore命令来还原自定义格式或TAR格式的备份文件:


pg_restore -U postgres -h localhost -p 5432 -d mydb -F c /backup/mydb.dump


该命令会将/backup/mydb.dump备份文件中的数据恢复到mydb数据库中。


2、从纯文本备份恢复

对于纯文本格式的备份文件,直接使用psql命令恢复:


psql -U postgres -h localhost -p 5432 -d mydb -f /backup/mydb.sql


该命令会将/backup/mydb.sql备份文件中的SQL语句执行到mydb数据库中。


3、先删除数据库对象后恢复

如果你需要在恢复前清空数据库中的对象,可以使用 -c 参数:


pg_restore -U <用户名> -h <主机名> -p <端口号> -d <目标数据库名> -c -F c <备份文件路径>

-c:表示在恢复之前会先删除数据库中的已有对象。

示例:

pg_restore -U postgres -h localhost -p 5432 -d mydb -c -F c /backup/mydb.dump


六、常见问题


1、权限问题


如果出现权限不足的问题,确保执行命令的用户对备份文件路径和 PostgreSQL 数据库拥有足够的权限。使用root赋予权限


2、指定数据库角色

在恢复数据库时,可以使用 -O 选项忽略创建对象时的所有者信息,并用当前登录用户作为对象所有者:


pg_restore -U <用户名> -h <主机名> -p <端口号> -d <目标数据库名> -O -F c <备份文件路径>



pg_dump -U 用户名 -h localhost -p 5432 mydatabase(数据库) > mydatabase_backup.sqlpg_dump 是一个强大的工具,可以在多种场景下使用,确保数据库的安全和数据的完整性。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论