postgresql备份与恢复数据库

来源:这里教程网 时间:2026-03-14 20:13:41 作者:

一、pg_dump含义 pg_dump 是一个用于备份 Postgresql 数据库的实用程序。由 pg_dump 备份的转储文件是完全一致的,因为转储是 pg_dump 开始运行时数据的快照。 pg_dump 不会阻止其他用户访问数据库。如果普通用户已被授予数据库权限,则可以运行 pg_dump pg_dump 只能备份一个数据库。 Pg_dumpall 用于备份整个集群或备份集群中所有数据库共有的公共对象。 二、pg_dump文件类型 转储文件可以脚本或存档文件格式导出。 脚本转储文件是纯文本文件,其中包含将数据库恢复到保存时所处状态所需的 SQL 命令。使用以此方式创建的脚本;使用 psql 或其他工具运行生成的 sql 文件将数据库恢复到当前状态就足够了。必须先创建相关的数据库,然后才能运行此命令,否则默认情况下将在 postgres 数据库中创建对象。 如果不想手动创建数据库,则必须使用 pg_dump 以存档文件格式,以自定义,目录, tar方式来 创建备份。然而,像这种情况下,需要使用 pg_restore 工具来恢复数据。 三、pg_dump语法 pg_ dump [connection-option …] [option …] [dbname] -h 参数指定要备份的数据库的主机 -p 参数指定端口 -U 参数指定数据库用户 四、pg_dump备份与恢复 4.1 使用pg_dump备份与恢复数据库 1、 备份数据库 可以使用几种不同的语法生成名为 zabbix 的数据库的 SQL 转储文件。 pg_dump zabbix > db.sql pg_dump -h localhost -p 5432 -U postgres zabbix > /home/postgres/dump/db_data.sql pg_dump -h localhost -p 5432 -U postgres zabbix -f /home/postgres/dump/db_data.sql 2、恢复 数据库 可以将创建的转储文件还原为另一个名为 zabbix 的数据库。 psql -d zabbix -f /home/postgres/dump/db_zabbix_data.sql psql -f /home/postgres/dump/db_zabbix_data.sql -d newzabbix -p 5432 -U postgres 4.2 、 pg_dump 自定义格式 使用以下命令以自定义文件格式创建 zabbix 数据库的转储。通过这种方式生成的备份文件将比 sql 文件小得多,因为在后台使用 zlib 压缩了该文件。 pg_dump -Fc zabbix > /home/postgres/dump/zabbix_db.dump 从自定义文件格式转储恢复数据库 pg_restore -d test_zabbix /home/postgres/dump/zabbix_db.dump 4.3 pg_dump目录格式 使用以下命令以目录格式创建 zabbix 数据库的转储。 pg_dump -Fd zabbix -f dumpdirectory 或使用并行方式备份 pg_dump -Fd zabbix -j 5 -f dumpdir 从目录文件恢复数据库 pg_restore -Fd -l dumpdirectory 4.4、pg_dump tar格式备份 下面的命令以 tar 文件格式创建 mydb 数据库的转储文件。 pg_dump -Ft zabbix> /home/postgres/dump/zabbix_db.tar 从tar文件还原Postgres数据库 pg_restore -Ft -d zabbix  /home/postgres/dump/zabbix_db.tar 4.5、pg_dump指定表备份 1、备份指定的表 pg_dump -t  table1 -d zabbix > /home/postgres/dump/table1.sql 2、备份名称以tbl开头的表 pg_dump -t 'tbl*' -d zabbix > /home/postgres/dump/tbl.sql 3、备份名称以tbl开头但不是tbl_mustafa的表 pg_dump -t 'tbl*' -T tbl_mustafa -d zabbix > /home/postgres/dump/tbl1.sql 4、备份名称以East或West开头并以gsm结尾的所有模式,并排除名称包含test的所有模式 pg_dump -n 'east*gsm' -n 'west*gsm' -N '*test*' zabbix >/home/postgres/dump/tbl2.sql pg_dump -n '(east|west)*gsm' -N '*test*' zabbix > db.sql 5、导出数据、不导表结构 pg_dump -a zabbix > /home/postgres/dump/tbl1.sql pg_dump --data-only zabbix > /home/postgres/dump/tbl1.sql 4.6、pg_dump压缩 以下命令用于通过 pg_dump 进行压缩备份。 pg_dump zabbix | gzip -9 > zabbix.gz 4.7、pg_dump拆分 将转储输出拆分为一定大小的多个文件 pg_dump zabbix | split -b 1m – files 恢复拆分转储文件 cat files* | psql zabbix 4.8、pg_dump ON_ERROR_STOP 默认 如果还原时发生错误,则 psql 将忽略该错误并继续运行。我们可以通过设置 ON_ERROR_STOP 变量来自定义这种情况。执行此命令后,代码将一直运行到发生错误的行,但后续行将不被处理。 psql --set zabbix < zabbix.sql 4.9、pg_dumpall备份 pg_dumpall 备份集群的所有内容。 pg_dumpall 为给定集群中的每个数据库创建一个备份,并为集群范围的角色和表空间定义之类的数据创建备份。 使用 pg_dumpall 进行恢复时,始终需要超级用户访问权限才能恢复角色和表空间信息。 pg_dumpall 发送命令来创建角色,表和空数据库,然后为每个数据库运行 pg_dump 备份全库: pg_dumpall > all_dbdata.sql pg_dumpall -f all_dbdata.sql 恢复全库: psql postgres < all_dbdata.sql  psql -f all_dbdata.sql postgres

相关推荐