|
本人白天工作比较忙,只好利用晚上的空闲时间学习赵老师的书籍做实验,天越来越热了,心情也慢慢变得烦躁。今天介绍一下在使用pg_rman时遇到的一个问题,这个问题在我实验电脑上搞了好几次都没成功,到了晚上9:40了,无奈只能先放弃,明天有空再继续解决。
先介绍一下我实验环境,我的系统环境是这样的:主机操作系统为CENTOS7,数据库使用的PG14,使用官网的安装脚本YUM安装的,官网的YUM脚本确实好用,几乎做到了一键安装。按照赵老师书本上的技术要求,从GITHUB官网下载了PG_RMAN RPM包,从PG官网下载了PG_RMAN对应所需安装依赖。在此感谢赵老师,赵老师不愧是实战派,在书本中提供的操作步骤非常详细。由于我用的数据库是PG14,PG_RMAN的RPM包也14版本的,PG_RMAN RPM包默认安装在/usr下面,安装后程序目录为/usr/pgsql-14,PG_RMAN脚本就在/usr/pgsql-14下面。
上次在PG14数据库做实验时,我设置了数据库的归档目录为/var/lib/pgsql/14/data/archivelog,当时数据库也开启了归档模式。当时还按老师书本上讲的方法,进行了WAL日志切换 。/var/lib/pgsql/14/data/archivelog目录下面有一些WAL日志,这次我按赵老师的要求,重新设置了归档目录,目录为/var/lib/pgsql/walbackup。同时也按老师的要求,创建其它所需目录,切换为postgres用户,在在环境变量配置文件中也做好了相应的配置。
接着按老师要求,进行pg_rman的初始化,这一步也正常,显示了正常的输出内容,没有报错。看起来,一切似乎一帆风顺。但在执行全量备份命令时,系统报错了。如下所示
-bash-4.2$ pg_rman backup --backup-mode=full --with-serverlog --progress -h localhost
Password:
INFO: copying database files
Processed 1298 of 1298 files, skipped 0
INFO: copying archived WAL files
ERROR: could not open destination file "/var/lib/pgsql/fullbackup/20250514/075647/arclog/20250512/000000010000000000000001": No such file or directory
系统提示目录或文件不存在。我检查了一下,确实如此。到了arclog目录后,后面的子目录就不存在了。
-bash-4.2$ ls -al /var/lib/pgsql/fullbackup/20250514/075647/arclog/20250512/000000010000000000000001
ls: cannot access /var/lib/pgsql/fullbackup/20250514/075647/arclog/20250512/000000010000000000000001: No such file or directory
-bash-4.2$ cd /var/lib/pgsql/fullbackup/20250514/075647/arclog/20250512/
-bash: cd: /var/lib/pgsql/fullbackup/20250514/075647/arclog/20250512/: No such file or directory
。
出现报错后,我检查了postgresql.conf和环境变量配置文件中的设置,发现postgresql.conf中设置的归档目录为/var/lib/pgsql/14/data/archivelog,环境变量文件设置的归档目录为/var/lib/pgsql/walbackup。我修改postgresql.conf,把归档目录也设置为/var/lib/pgsql/walbackup,让两者保持相同一致。
重新启动PG14数据库服务后,使postgresql.conf配置文件生效,再次执行PG_RMAN全量备份,故障依旧,还是说目录和文件不存在。看了一下时间,已经是晚上9:40了,解决思路也被堵了,没有招儿了。先休息吧,明天再搞,不然继续搞晚上会失眠的。
第二天早上7:00起床后,打理完个人卫生、整理好床铺后,我打开房间的电脑。仔细对比电脑的配置文件和赵老师书上说的步骤,发现自己没出错。既然报错信息说是文件、目录不存在,我就再次检查了自己之前建立的目录,检查时发现我建立了两个归档目录,一个是/var/lib/pgsql/14/data/archivelog,一个是/var/lib/pgsql/walbackup。这两个目录下均有WAL日志,一个数据库有两个本地归档目录,这个有些怪。目前我所知的ORACLE DG架构中,主节点有个本地归档和远程归档目录。我这个单机PG数据库,有两个归档目录,两个目录下面都有WAL日志,这个不太正常。也是我抱着试试看的态度,删除了/var/lib/pgsql/14/data/archivelog目录,相应的目录下面的文件也一起消失了。只保留这次实验要用到的/var/lib/pgsql/walbackup目录。这次再执行pg_rman全量备份,竟然成功了,没有报错。
总结:回顾这次解决报错的过程,感觉自己有些不可思议。在解决问题的过程中,还是要依靠自己目前已经掌握到知识和体系、经验。大佬们做实验时,大家总是感觉人家做的非常顺利,那是因为人家的经验丰富,在做实验时早已经完美避免了各种失败和挫折,那些经验也是当初人家不断踩坑得来的。如此看来,作为初学者的我们,还是要不断努力踩坑才行。
合作电话:010-64087828
社区邮箱:greatsql@greatdb.com