记录openGauss数据库定时备份数据的过程
创始人
2025-01-15 20:06:15
0

锦囊妙计失效,我定时备份数据的任务为啥不执行?

三国演义中有好几处锦囊妙计的情节,目前下发的命令并不会立即执行,而是在之后的某个时间点,或者某种条件满足后,触发执行。典型的有赵云保护刘备去江东招亲前,诸葛亮给的三个锦囊,以及曹操给守合肥的李典,乐进,张辽等的“贼来乃发”纸条。

说起来绝大多数是事件触发的锦囊,包括诸葛亮借东风后,让赵云一见东南风起,就去接他,时间触发的一时竟未想到。

闲言少叙,言归正传,数据库运营过程中也会有很多后续执行命令的场景,比如定时的数据加载,抽取转换,数据清理等。本文所总结的则是定时备份数据库中数据的过程。由于目前我们的项目已经有好些人在试用了,为了保证数据安全,在数据库宕机后数据不(全部)丢失,我尝试通过定期执行gs_dump命令的方式来备份全量数据。

  • OS:OpenEuler 20.03 LTS

  • OG: openGauss 5.0.0 LTS

1. 执行gs_dump的命令

这步相对较为简单,之前经常手动对数据库进行逻辑备份,比如开发库到测试库迁移,测试库到“生产库”迁移等。命令如下:

gs_dump -U omm -f /opt/software/openGauss/databak/clob20240611.tar -p 26000 clouddb_rc -F t

执行后,在对应文件夹下生成了备份文件,如图:

图片

关于gs_dump命令的参数,仅作简单介绍:

-U 数据库用户名;

-f 生成的备份文件路径及文件名,注意omm用户对于所在路径要有写权限

-p 数据库端口号

cl**ec需要备份的数据库名称,根据实际名称修改

-F 生成备份文件的格式,其中t表示.tar文件,c表示.sql文件

2. 完成可生成根据当前日期时间命名的备份文件的shell文件

可通过vim或vi命令编辑sh文件,也可以在windows环境编辑好后再上传至服务器,如先在window环境编辑,则保存时需选择支持unix的编码格式,否则会报错。

shell文件如下:

#!/bin/bash  BACKUP_DIR="/opt/software/openGauss/databak"  DB_NAME="cl**ec"  TIMESTAMP=$(date +\%F-\%H-\%M-\%S)  BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}-${TIMESTAMP}.sql"  #切换用户为omm  su - omm <> ${BACKUP_DIR}/backup.log -p 26000 ${DB_NAME} -F c  if [ $? -eq 0 ]; then  echo "Backup succeeded: ${BACKUP_FILE}"  else  echo "Backup failed" >&2  fi

如图:

图片

shell文件大意为:首先定义备份文件的路径及文件名为:

  • 数据库名称+日期时间戳.sql;

  • 切换用户为数据库用户(本文为omm,根据实际情况修改);

  • 执行gs_dump命令。

    shell脚本文件完成后,注意需要通过chmod +x *.sh的命令,增加执行权限。

完成后执行shell:

sh /opt/software/openGauss/databak/dump_data.sh

备份文件生成:

图片

3 . 编辑操作系统crontab

执行crontab -e,输入如下命令

其中*前面依次为:

分钟 (0 - 59)

小时 (0 - 23)

日 (1 - 31)

月 (1 - 12)

星期几 (0 - 7)(0 和 7 都表示星期日)

我们仅约束了分钟和小时,如下设置表示每天的20:10执行。

图片

后面为需要执行的命令,注意命令的路径要写绝对路径。编辑完成后,和vi一样保存退出,如果没有错误,会有如下提示:

图片

说明定时执行的任务创建成功了。

等时间过了20:10后再查看,就会发现数据备份文件已经生成。

图片

查看crontab日志:

图片

也会发现cron命令执行成功了。

很顺利是不是?

曲折的过程,看到最后的结果无疑是很开心的,然而不能忽略的是中间经历的定时任务他不执行的困惑:

日志中写道:未找到gs_dump命令。

图片

这个问题,是怎么解决的呢?

首先怀疑是环境变量的问题,于是在crontab中加环境变量,在crontab中加source命令,shell脚本的路径又改为绝对路径,gs_dump命令的路径也改为绝对路径等,尝试了不下10来中方法,然而还是没能搞定。

后来我歪打歪撞意识到gs_dump是omm用户的命令,我用root用户尝试执行该命令,报的也是找不到命令,

图片

那么定时执行时,是不是需要切换下用户呢?于是在shell脚本中增加了su-omm的命令。

“Bang~~!”大功告成!

本文作者:本文内容来自于数据库领域资深技术专家赵锋老师,希望我们的文章正好能解决你的问题。

欢迎技术交流~

相关内容

热门资讯

专业讨论!德扑之星真破解套路(... 专业讨论!德扑之星真破解套路(辅助挂)软件透明挂(有挂了解)-哔哩哔哩;人气非常高,ai更新快且高清...
每日必看!智星德州菠萝外挂检测... 每日必看!智星德州菠萝外挂检测(辅助挂)软件透明挂(有挂教学)-哔哩哔哩1、玩家可以在智星德州菠萝外...
透视透明挂!轰趴十三水有后台(... 轰趴十三水有后台赢率提升策略‌;透视透明挂!轰趴十三水有后台(辅助挂)软件透明挂(有挂详情)-哔哩哔...
发现玩家!德扑ai助手软件(辅... 发现玩家!德扑ai助手软件(辅助挂)透视辅助(有挂教学)-哔哩哔哩;玩家在德扑ai助手软件中需先进行...
一分钟了解!x-poker辅助... 一分钟了解!x-poker辅助软件(辅助挂)辅助透视(有挂攻略)-哔哩哔哩1、每一步都需要思考,不同...
一分钟揭秘!德州最新辅助器(辅... 一分钟揭秘!德州最新辅助器(辅助挂)透视辅助(有挂攻略)-哔哩哔哩;德州最新辅助器最新版本免费下载安...
玩家攻略推荐!德州辅助(辅助挂... 玩家攻略推荐!德州辅助(辅助挂)辅助透视(有挂了解)-哔哩哔哩是由北京得德州辅助黑科技有限公司精心研...
揭秘真相!pokernow德州... 《揭秘真相!pokernow德州(辅助挂)辅助透视(有挂介绍)-哔哩哔哩》 pokernow德州软件...
五分钟了解!德州之星辅助器(辅... 五分钟了解!德州之星辅助器(辅助挂)辅助透视(有挂透明)-哔哩哔哩1、很好的工具软件,可以解锁游戏的...
推荐一款!pokermaste... 1、推荐一款!pokermaster有外挂(辅助挂)透视辅助(有挂教学)-哔哩哔哩;详细教程。2、p...