PostgreSQL的备份

环境

PostgreSQL12.4、Ubuntu20.4。

首先

在PostgreSQL中,有两种备份命令可用。

如果要按数据库单位进行备份,可以使用pg_dump命令。如果存在多个混合的数据库,并且希望对其中特定的一个数据库进行备份,则可以使用pg_dump命令。另外,如果希望对多个数据库进行整体备份,可以使用pg_dumpall命令。

pg_dumpall会对整个数据库进行备份,自然也会备份角色。但是,pg_dump只会备份数据库而不会备份角色。

如果想要在进行恢复时以数据库为单位进行恢复,您可以使用pg_dump来获得备份。如果需要将开发中测试性更新的数据还原,可以使用pg_dump。

如果要提高可用性来对抗数据库本身无法启动或数据全部损坏等故障,可以使用pg_dumpall来进行备份。

pg_dump和pg_dumpall都是由PostgreSQL提供的客户端工具。因此,这些命令需要在操作系统的命令提示符中执行,而不是在登录PostgreSQL后执行的SQL命令。

当使用pg_dumpall获取备份并进行恢复时,需要使用psql命令;而当使用pg_dump获取的备份进行恢复时,根据所创建的转储文件格式,恢复命令也会相应改变。

如果没有进行压缩,使用psql创建转储文件时,可以使用psql进行还原。而如果使用压缩文件格式(自定义/归档格式)创建转储文件,则可以使用pg_restore进行还原。pg_restore具有-t选项,使用该选项可以按表进行还原。

pg_dump在设计上不会施加排他锁。因此,即使在用户对表进行读写操作时执行pg_dump,也不会对用户的响应产生影响。

使用pg_dump备份数据时,如果以脚本形式输出,则输出的dump文件将变成文本格式,可以使用编辑器查看其中的数据内容。而以存档形式输出的dump文件,在编辑器中查看时,当然只能看到乱码数据。

数据库备份

下面是pg_dump的命令示例。

#pg_dump -Fp -c -h localhost -d hoge_development -p 5432 -U postgres -t m_user -f /vagrant/hoge/dump_01.sql

选项说明

-Fp

指定输出格式。p表示选择plain格式。使用plain格式将以明文形式输出。使用plain格式创建后,可以随后确认数据内容,但以存档文件格式保存更安全。

オプション -FTable単位のバックアップTable単位のリストア プレーン     〇    × アーカイブ     〇    〇

如果以纯文本格式创建了所有表的数据转储,那么无法在转储文件中单独恢复每个表的数据(除非自己修改 SQL 语句)。如果想要按表恢复数据,请按表单独创建数据转储文件。

如果使用存档格式创建了所有表的转储文件,则可以从转储文件中按表的单元进行恢复。

在汉语中进行原创翻译

只有在输出格式设置为“plain”时才生效的选项。如果在输出格式中指定了“archive”形式,该选项将无效。

当使用-c参数时,备份转储文件中将会添加Drop table和Create table的SQL语句。而不使用-c参数时,只会添加Create table语句而不包含Drop table语句。

在进行恢复之前,如果需要手动删除每个表并进行恢复,则不需要使用-c选项。这将导致不仅表被删除,索引也将被删除,并重新创建。

オプション -cDrop TableCreate Table  あり  〇  〇  なし  ×  〇

对于使用-C选项创建的Dump文件,如果在手动执行Drop Table后进行恢复操作,由于对不存在的表执行Drop Table语句,将会导致出现”表不存在”的错误信息。

对于没有加上-c选项创建的转储文件,如果在手动进行恢复时不执行Drop Table操作,就会出现”表已存在”的错误,因为会执行Create Table操作。

在出现错误后,虽然数据恢复处理会正常进行,但是如果感到有些不安,最好在手动执行Drop Table操作之后再发生错误前进行恢复,以确保安全。

The phrase “-d” cannot be paraphrased as it does not have a clear meaning or context. Please provide more information or a complete sentence for me to help you accurately.

指定一个数据库名称来创建一个数据倾倒。

对以下内容在中文中做释义

– 晒太阳

如果没有更改默认端口号,则可以忽略指定端口号。

把以下内容翻译成中文,只需要一种选择:

– H

在指定服务器的主机名。如果在登录服务器的情况下进行备份,则主机名应为localhost。

请指定登录的用户名。我觉得可以使用超级用户postgres。

祝贺

如果要按表格进行转储,请指定表名。如果未指定,则所有包含在数据库中的表都将成为转储的目标。

冬天的天气非常寒冷。

请指定输出目录和文件。不必添加文件扩展名,但如果创建纯文本格式的转储文件,将扩展名设为.sql可能更容易理解。

请参考(公式手册)

pg_dump是一个用于备份PostgreSQL数据库的命令行工具。它可以将数据库中的表、函数、视图以及其他对象导出为一个可恢复的.sql文件。更多关于pg_dump的详细信息可以在以下链接中找到:https://www.postgresql.jp/document/12/html/app-pgdump.html

pg_restore是一个用于将PostgreSQL数据库从备份文件中还原的命令行工具。有关pg_restore命令的详细信息,请参考https://www.postgresql.jp/document/12/html/app-pgrestore.html。

链接网页https://www.postgresql.jp/document/12/html/app-psql.html中有关于psql的内容。

广告
将在 10 秒后关闭
bannerAds