2018-01-15 【postgre】备份数据库和删除固定时间前的备份(无需手动输入密码)

本文介绍了一种使用Windows计划任务和批处理脚本来定时备份PostgreSQL数据库的方法。脚本实现了设置备份路径、数据库名称及用户等参数,并通过设置密码进行安全备份,最后清理了100天前的旧备份文件。

定时备份可以用window的计划任务来定时执行批处理。

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
SET PGPATH=C:\"Program Files"\PostgreSQL\9.6\bin\pg_dump
::设置备份路径
SET SVPATH=D:\database_back\
SET PRJDB=databasename
SET DBUSR=username
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
SET DBDUMP=%PRJDB%_%d%.bak
@ECHO OFF
::设置密码
set PGPASSWORD=password
::执行数据库备份操作
%PGPATH% -w -h localhost -p 5432 -U %DBUSR% %PRJDB% > %SVPATH%%DBDUMP%
echo Backup Taken Complete %SVPATH%%DBDUMP%
::删除SVPATH目录下100天之前的文件
forfiles /p %SVPATH% /d -100 /c "cmd /c del @FILE"
pause


PostgreSQL 中,备份数据库是保障数据安全的重要措施。常用的备份方法包括使用 `pg_dump` `pg_dumpall` 命令,以及通过 SQL 文件进行备份。以下是详细的备份方法操作步骤: ### 使用 `pg_dump` 备份单个数据库 `pg_dump` 是用于备份单个数据库的常用工具。它支持多种出格式,包括自定义压缩格式、目录格式、tar 格式以及明文 SQL 脚本格式。 #### 基本语法 ```bash pg_dump -h [host] -U [username] -F [format] [database_name] > [output_file] ``` #### 示例 备份一个名为 `testdb` 的数据库到 `D:\testdb_backup.sql` 文件中: ```bash pg_dump -h localhost -U postgres testdb > D:\testdb_backup.sql ``` - `-h` 指定数据库服务器的主机地址。 - `-U` 指定连接数据库的用户名。 - `-F` 指定出格式,默认为明文 SQL 脚本(`p`),也可以使用 `c`(自定义压缩格式)、`d`(目录格式)或 `t`(tar 格式)。 - `>` 将出重定向到文件中。 #### 压缩备份 使用自定义格式进行压缩备份: ```bash pg_dump -h localhost -U postgres -Fc testdb > D:\testdb_backup.dump ``` - `-Fc` 表示使用自定义压缩格式。 #### 并行备份 对于大型数据库,可以使用 `--jobs` 参数进行并行备份: ```bash pg_dump -h localhost -U postgres -j 4 testdb > D:\testdb_backup.sql ``` - `-j 4` 表示使用 4 个并行任务进行备份。 ### 使用 `pg_dumpall` 备份所有数据库 `pg_dumpall` 是用于备份整个 PostgreSQL 实例中所有数据库全局对象(如角色表空间)的工具。 #### 基本语法 ```bash pg_dumpall -h [host] -U [username] > [output_file] ``` #### 示例 备份所有数据库到 `D:\all_databases_backup.sql`: ```bash pg_dumpall -h localhost -U postgres > D:\all_databases_backup.sql ``` ### 使用 SQL 文件进行备份 除了使用 `pg_dump` 工具外,还可以通过 SQL 文件手动导出数据。可以使用 `psql` 工具将数据库导出为 SQL 文件: ```bash psql -h localhost -U postgres -d testdb -c "SELECT * INTO OUTFILE 'D:\\testdb_data.sql' FROM your_table;" ``` - `-d` 指定数据库名称。 - `-c` 后跟 SQL 命令,用于导出特定表的数据。 ### 使用 `.sql` 文件恢复数据库 在恢复数据库,需要创建一个新的数据库,并确保其编码模板设置正确。例如,创建名为 `testdb` 的数据库: ```sql CREATE DATABASE testdb TEMPLATE = template0 ENCODING 'UTF8'; ``` 然后,使用 `psql` 工具恢复 SQL 文件: ```bash psql -h localhost -U postgres -d testdb -f D:\testdb_backup.sql ``` - `-f` 指定要恢复的 SQL 文件路径。 ### 相关问题 1. 如何在 PostgreSQL 中恢复数据库? 2. `pg_dump` `pg_dumpall` 之间的区别是什么? 3. PostgreSQL 支持哪些备份格式,各自的优缺点是什么? 4. 如何在 PostgreSQL 中进行增量备份? 5. 如何在 PostgreSQL备份特定表或模式?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值