编辑修改postgresql.conf
#日志级别
wal_level = replica
#归档模式
archive_mode = on
archive_mode参数有3种模式:
off:关闭归档
on:开启归档,但不允许在recovery模式下进行归档
always:开启归档,且允许在recovery模式下进行归档
#归档wal命令
archive_command = 'cp %p /postgres_archive_data/archive_data/%f && echo %p >> /postgres_archive_data/archive_log/archive.list && echo %f >> /postgres_archive_data/archive_log/archive.list'
pg会启动一个辅助进程,作用是实时监控事务日志,发现能归档的日志则会通过用户设置的archive_command参数中的命令进行归档。归档命令可以很自由地被指定,一般是cp或者加上压缩命令,如果设置该参数,或者命令有错误,则无法真正归档。
%p:源文件路径
%f:源文件名
archive_timeout参数
如果只在日志切换时归档,假如在日志段未满时宕机,则归档日志会缺失一部分,可能造成数据丢失。另外,如果业务写请求较少,日志可能长期不归档。此时,可以通过archive_timeout参数设置超时强制归档,提高归档频率。
注意,每次日志切换时,即使未写满日志大小依然是16M,因此该参数如果设置太小,可能导致归档过于频繁并且大量浪费空间。
理解:归档文件最小值就是16M,不设置archive_timeout参数,写满16M以上时,才会生成归档文件,如果数据操作少的话,设置了此参数,就会在超过这个时间就生成归档文件,并且归档文件最小是16M.
#WAL日志占用空间大小
#PostgreSQL13版本后,wal_keep_segments参数废弃了,由wal_keep_size替代此参数
wal_keep_segments
查看pg_wal目录下所能保留的过去日志文件段的最小数目,建议设置大于等于4096,防止全量备份完成之后由于源实例wal日志被移除导致需要重新备份。
说明
适用于PostgreSQL 10、11、12。
SHOW wal_keep_segments;
wal_keep_size
查看pg_wal目录下所能保留的过去日志文件段的最小大小,建议设置大于等于64 GB,防止全量备份完成之后由于源实例wal日志被移除导致需要重新备份。
说明
适用于PostgreSQL 13、14和15。
SHOW wal_keep_size;
wal_keep_size = 2048
查看归档目录
ls /postgres_archive_data/archive_data/
如果目录中没有文件,执行以下sql后再查看
-- 手动切WAL日志
SELECT pg_switch_wal();
-----------------------------------------------------------
进行数据库备份.
pg_basebackup -Ft -Pv -Xs -z -D <backupdir> -Z5 -h '<hostname>' -p <port> -U <username> -W
backupdir
导出的备份文件路径。系统会自动创建目录,但是如果该目录已经存在且不为空,则会报错。
hostname
RDS PostgreSQL实例连接地址。
如果相同账号内的ECS实例和RDS实例处于相同地域,且网络类型相同(都为VPC时则必须处于同一个VPC),建议使用内网连接地址。
其他情形建议使用外网连接地址。
说明
通过外网连接地址访问RDS实例,需要实例已申请外网连接地址。详情请参见申请或释放外网地址。
port
RDS PostgreSQL实例端口。
username
RDS PostgreSQL实例账号名称。