用过ORACLE的朋友,第一次设置 PG的归档参数,如下:
。。。
wal_level = replica
archive_mode = on
archive_command = 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
。。。
对于归档,还要用操作系统命令去进行文件的拷贝,而且必须这样,是否感觉BOOK11?
不错,PG确实是这样的实现的,这个参数,是直接从postgres.conf 参数中截取的,样例就是这样。
我们知道,在ORACLE中,只需要设置 log_archive_dest='/u01/app/oracle/archive_log',其他的文件归档,就交由ORACLE去搞定,难到PG不能这样简单实现吗 ?还得让数据库管理员熟悉操作系统命令?
答案是不一定。
如果是PG15以前得版本,就必须这样去实现日志得归档,但从PG15开始,PG提供了一个自定义模块:basic_archive,通过这个模块,我们就不用再去写操作系统文件拷贝命令了,也就是不管在什么操作系统下,归档的设置都一样了,具体实现如下:
目录
1.设置参数
2.创建归档目录
3.赋予权限
4.设置标签 --这步可选
5.重启数据库
6.手工日志切换
7.验证文件
1.设置参数
源码中有样例:
比如我们这里设置到
/u01/app/postgres/archive_log
那么按以下设置:
vim $PGDATA/postgresql.conf
...
archive_command = '' --这里设置为空,默认为空,不设置即可
archive_mode = on
archive_library = 'basic_archive'
basic_archive.archive_directory = '/u01/app/postgres/archive_log'
wal_level = replica
...
2.创建归档目录
$ mkdir /u01/app/postgres/archive_log
3.赋予权限
$chown -R postgres:postgres /u01/app/postgres/archive_log
$ chmod -R 775 /u01/app/postgres/archive_log
4.设置标签 --这步可选
如果开启了selinux,才需要,否则,直接跳过
su - root
# semanage fcontext -a -t postgresql_db_t '/u01/app/postgres/archive_log(/.*)?'
# restorecon -FRv /u01/app/postgres/archive_log
设置后:
5.重启数据库
[postgres@openeuler2403 postgres]$ pg_ctl restart
waiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started
6.手工日志切换
7.验证文件
是否发现在归档日志目录已经自动产生了归档日志了。
好了,PG象ORACLE一样设置归档,就到这里。
如果你还想和我交流,可以按如下方式找到我们。
----------------------------------------------------------------------
微信群:水煮数据库
主要交流日常运维中用到的数据库相关问题,包含但不限于:ORACLE,PG,MYSQL,SQLSERVER,OB,TIDB,达梦,TDSQL,OPENGAUSS,人大金仓,GBASE等等,
加我微信:zq24803366,备注:水煮数据库, 我拉你入群。
----------------------------------------------------------------------