在生产环境中,无论你的PostgreSQL数据库有多大,定期备份都是数据库管理的一个重要方面。在本文中,你将学习如何备份和恢复PostgreSQL数据库。我们假设你已经安装了PostgreSQL数据库系统。
1、备份单个PostgreSQL数据库
PostgreSQL提供pg_dump工具来帮助你备份数据库。它可以生成一个包含SQL命令的数据库文件,其格式可以在将来轻松恢复。
要备份PostgreSQL数据库,首先登录数据库服务器,然后切换到Postgres用户帐户,并运行pg_dump,如下所示(将a5idcdb替换为你要备份的数据库名称)。默认情况下,输出格式为纯文本SQL脚本文件。
$ pg_dump a5idcdb > a5idcdb.sql
pg_dump也支持其他的输出格式。你可以使用-F选项指定输出格式,其中c表示自定义格式的归档文件,d表示目录格式的归档文件,t表示tar格式的归档文件:所有格式都适合输入pg_restore。
例如:
$ pg_dump -F c a5idcdb > a5idcdb.dump
或者
$ pg_dump -F t a5idcdb > a5idcdb.tar
要以目录输出格式转储输出,请使用-f标志(用于指定输出文件)指定目标目录而不是文件。pg_dump创建的目录必须不存在。
$ pg_dump -F d a5idcdb -f a5idcdumpdir
要备份所有PostgreSQL数据库,请使用pg_dumpall工具,如下所示。
$ pg_dumpall> all_pg_dbs.sql
您可以使用psql还原转储,如下所示。
$ pgsql -f all_pg_dbs.sql postgres
2、恢复PostgreSQL数据库
要还原PostgreSQL数据库,可以使用psql或pg_restore实用程序。psql用于还原pg_dump创建的文本文件, 而pg_restore 用于从pg_dump创建的非明文格式(自定义,tar或目录)格式的存档中恢复PostgreSQL数据库。
这是如何还原纯文本文件转储的示例:
$ psql a5idcdb < a5idcdb.sql
如上所述,自定义格式的转储不是pgsql的脚本 ,因此必须使用pg_restore还原它 ,如下所示。
$ pg_restore -d a5idcdb a5idcdb.dump
或
$ pg_restore -d a5idcdb a5idcdb.tar
或
$ pg_restore -d a5idcdb a5idcdumpdir
3、备份大型PostgreSQL数据库
如果您要备份的数据库很大,并且您想要生成一个较小的输出文件,则可以运行压缩转储,其中您必须通过诸如gzip之类的压缩工具或任何您喜欢的压缩工具来过滤pg_dump的输出:
$ pg_dump a5idcdb | gzip > a5idcdb.gz
如果数据库很大,则可以通过使用标志同时转储number_of_jobs表来并行转储-j,如下所示。
$ pg_dump -F d -j 5 -f a5idcdumpdir
重要的是要注意,并行转储选项减少了转储时间,但另一方面,它也增加了数据库服务器上的负载。
4、备份远程PostgreSQL数据库
pg_dump是常规的PostgreSQL客户端工具,它支持在远程数据库服务器上的操作。要指定pg_dump应该联系的远程数据库服务器 ,请使用命令行选项-h指定远程主机,并 -p 指定数据库服务器正在侦听的远程端口。此外,使用该-U标志指定连接的数据库角色名称。
请记住分别用远程主机IP地址或主机名,数据库端口和数据库名替换10.10.20.10和5432和a5idcdb。
$ pg_dump -U a5idc -h 10.10.20.10 -p 5432 a5idcdb> a5idcdb.sql
确保远程连接的用户具有访问数据库所需的特权,并且在数据库服务器上配置了适当的数据库身份验证方法,否则,您将会看到错误提示。
也可以将数据库直接从一台服务器转储到另一台服务器,使用所示的pg_dump和psql实用程序。
$ pg_dump -U a5idc -h 10.10.20.10 a5idcdb | pqsl -U a5idc -h 10.10.20.30 a5idcdb
5、使用Cron Job自动备份PostgreSQL数据库
您可以使用cron Job定期执行备份。Cron Job是用于调度各种任务以在服务器上运行的常用方法。
您可以配置cron Job以自动执行PostgreSQL数据库备份,如下所示。请注意,您需要以PostgreSQL超级用户身份运行以下命令:
$ mkdir -p /srv/backups/databases
接下来,运行以下命令以编辑crontab以添加新的cron Job。
$ crontab -e
将以下行复制并粘贴到crontab的末尾。您可以使用上述任何转储格式。
0 0 * * * pg_dump -U postgres a5idcdb > /srv/backups/postgres/a5idcdb.sql
保存文件并退出。
cron服务将自动开始运行此新Job,而无需重新启动。而且,此cron Job将每天在午夜运行,这是备份任务的最小解决方案。
至此,本文就结束了,备份数据作为数据库管理例程的一部分是一个重要的工作。A5互联https://www.a5idc.net/
如何备份和还原PostgreSQL数据库
最新推荐文章于 2024-10-08 08:15:00 发布