一,跟归档相关的参数
1 查看是否开启归档模式
show archive_mode;
----仅在已完成的wal段进行归档,如果强制归档,归档段文件大小也是16M
2 查看归档相关参数
show archive_timeout;
----超过这个时长就必须归档一次,设置为0表示默认不启用
show archive_command
;----归档方式的shell命令(定义怎么去归档)
二 archive_command设置
1 常规设置
test ! -f /data/arch/%f && cp %p /data/arch/%f
如果/data/arch/%f不存在,就把wal即将被归档的日志文件复制到/data/arch/%f
归档命令,注意 %p %f %% 格式化的含义。
%p 是被归档的redo文件的路径,
%f 是被归档的redo文档的文件名
%% 是百分号
test
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
&& 就执行
|| 就不执行
2 优化设置
1)在postgresql.conf中设置
archive_command=‘arch.sh %f %p’
2)在上级目录下设置脚本arch.sh以在每次归档时执行。
test ! -f /data/arch/%f && cp preserve=timestamps %p /data/arch/%f; find /data/arch -type f -mtime +7 -exec rm -f {} \;
如果/data/arch/%f不存在,就把wal即将被归档的日志文件复制到/data/arch/%f,复制时保留时间
找到/data/arch目录下所有的文件,并且把七天前修改的文件找出来,执行rm -f命令
find 命令
-type 在某个目录下所有的文件
-mtime 按照更改时间来找文件
-exec 找到后执行这个命令
cp 命令
-p preserve 保留源文件或目录的属性,包括所有者、所属组、权限与时间
3)重新加载参数文件
select pg_reload_conf();
4)看参数是否生效
select * from pg_file_settings where name like '%arch%';---applied='t'表示已生效
三 设置归档的一般过程
1 创建归档目录
mkdir -p /data/arch
2 编辑归档脚本
3 配置归档参数
4 重启数据库(archive_mode变化需要重启数据库,只有这个参数设置了,其他两个参数才会起作用。而archive_command变化不用重启数据库,只需要重新加载参数文件就行)
参考文章:
https://blog.csdn.net/iwantyou741/article/details/72638988?
https://www.jb51.net/article/203830.htm