文档章节

centos7.2 数据库定时备份 crond实现(以kingbase7为例)

 明德先生
发布于 2019/11/08 10:51
字数 1102
阅读 11
收藏 0

项目上线时,经常需要定时对数据库进行备份,以应对不确定的环境和未知的问题。整理如下:

crond是什么?

crond 和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρόνος),原意是时间。

而crond正是它的守护进程。cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务。

默认centos7.2已经安装crond,如若未安装,可以通过:yum install crontabs   进行安装

查看 crontab 服务是否已设置为开机启动:

systemctl list-unit-files | grep enable | grep crond

查看 crontab 状态

service crond status

启动/关闭

// 启动服务

service crond start

// 关闭服务

service crond stop

// 重启服务

service crond restart

// 重新载入配置

service crond reload

编写定时任务命令格式

min hour day month dayofweek command

分 时  天  月  星期几   命令

crontab 命令

功能:设置计时器。

语法crontab[-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]
解释:cron 是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下:Minute Hour Day Month DayOFWeek Command

参数:
-e 编辑该用户的计时器设置。
-l 列出该用户的计时器设置。
-r 删除该用户的计时器设置。
-u<用户名称>  指定要设定计时器的用户名称。

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

具体时间操作如下:

1、查看crond的状态

2、写数据库定时备份脚本如下:

#!/bin/bash
####################################################################################################################
###
###Descipt: this script is used for kingbase database backup,before you run it,you should set the variables such as
###         kdb_home,kdbback_dest,kdb_user,kdb_pass,kdb_host,kdb_port,kdb_list,keep_time and so on.
###
####################################################################################################################
####################### variable define ##########################
# 数据库安装目录
kdb_home="/home/XXXXX/Kingbase"
# 数据库备份的目标路径
kdbback_dest="/home/XXXXX/dbbackup"
# 数据库用户名
kdb_user="username"
# 数据库用户密码
kdb_pass="password"
# 数据库端口号
kdb_port="54321"
# 数据库访问ip
kdb_host="127.0.0.1"
# 数据库的模式,多个模式可用逗号分隔,如"TEST,SAMPLE"
kdb_list="DBNAME"

keep_time="7"

date=$(date '+%Y%m%d%H')
kdbback_final="${kdbback_dest}/kdbback_final"
LD_LIBRARY_PATH="${kdb_home}/unixodbc/lib:${kdb_home}/lib:${kdb_home}/bin"

####################### kingbase backup dest test ##################

[ -d ${kdbback_dest} ] || mkdir -p ${kdbback_dest}
[ -d ${kdbback_final} ] || mkdir -p ${kdbback_final}


####################### kingbase backup start  #######################

cd ${kdbback_dest}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
for db in `echo $kdb_list | sed 's/,/ /g'`; do
	[ -d ${db} ] || mkdir -p ${db}
        cd ${db}
	##### kingbase server check as follows
        ${kdb_home}/bin/isql -h ${kdb_host} -p ${kdb_port} -U ${kdb_user} -W ${kdb_pass}  -c "select now();" TEMPLATE2 > /dev/null 2>&1
        if [ $? -ne 0 ] ;then
	    echo "${date} sorry, please run the script in a kingbase server" >> backup_${db}_${date}.log 
	    mv backup_${db}_${date}.log ${kdbback_final}
	    exit 1
        else
	    echo "${date} kingbase server is ok,kingbase backup ${db} is beginning ..." >> backup_${db}_${date}.log
        fi
	##### end
        ##### kingbase backup files process as follows
	${kdb_home}/bin/sys_dump -p ${kdb_port} -U ${kdb_user} -W ${kdb_pass} -h ${kdb_host} -f ${db}_${date}.KDMP ${db} >> backup_${db}_${date}.log 2>&1
        if [ $? -eq 0 ] ;then
            tar zcvf ${db}_${date}.tar.gz ${db}_${date}.KDMP*
            if [ $? -eq 0 ] ;then
               rm -f ${db}_${date}.KDMP*
            else
               mv ${db}_${date}.KDMP* ${kdbback_final} 
            fi
            find . -mtime +${keep_time} -name ${db}'_*' | xargs -I {} rm {}
        else
	    rm -f ${db}_${date}.KDMP*
        fi
        ###### end
        ###### kingbase backup log files process as follows
	tar zcvf backup_log_${db}_${date}.tar.gz backup_${db}_${date}.log
        if [ $? -eq 0 ] ;then
	       rm -f backup_${db}_${date}.log
	else
	       mv backup_${db}_${date}.log ${kdbback_final}
        fi
        find . -mtime +${keep_time} -name backup_log_${db}'_*' | xargs -I {} rm {}
        ###### end
        cd ${kdbback_dest} 
done
exit 0

3、crontab设置

执行  contab -e

写入如下语句,每五分钟执行一次

*/5 * * * *  /usr/local/backup.sh (脚本的路径)

4、启动crond

service crond start

可以通过cd /var/spool/mail/用户文件 查看执行情况

如若遇到权限不够的情况,可以赋权如下:

chmod 777 backup.sh

重新加载:

service crond reload

 

至此结束

© 著作权归作者所有

粉丝 0
博文 19
码字总数 58112
作品 0
大连
私信 提问
加载中

评论(0)

linux定时备份mysql数据库

利用crontab,系统每天定时备份mysql数据库 【内容提要】利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。 利用系统crontab来定时执行备份文件,按日期对备份...

xiahuawuyu
2012/05/07
155
0
linux下mysql定时备份数据库

一、用命令实现备份 首页进入mysql的bin目录 1、备份数据 mysqldump -uusername -ppassword discuz > discuz_2010-04-01.sql 这样就把discuz数据库所有的表结构和数据备份到discuz_2010-04-...

晒头哥
2011/10/04
455
1
linux 上使用mydumper 定时执行MySQL备份和还原

一:定时备份数据库 backup.sh 内容: (我写的第一个脚本(本人是开发,脚本内容不够优雅,主要学习总结) 1)指定HOST备份脚本backup.sh ,数据库和备份可以不在同台机器 二:每隔30分钟分...

洋哥6
2016/09/26
186
4
linux下mysql定时备份数据库

一、用命令实现备份 首页进入mysql的bin目录 1、备份数据 mysqldump -uusername -ppassword discuz > discuz_2010-04-01.sql 这样就把discuz数据库所有的表结构和数据备份到discuz_2010-04-...

freecsdn
2016/09/11
55
0
利用Crontab为Linux定时备份Mysql数据库

利用系统Crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。 利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。 1、创建保存备份文件的...

zt371
2009/05/07
357
0

没有更多内容

加载失败,请刷新页面

加载更多

在两个日期之间查找对象MongoDB

我一直在围绕在mongodb中存储推文,每个对象看起来像这样: {"_id" : ObjectId("4c02c58de500fe1be1000005"),"contributors" : null,"text" : "Hello world","user" : { "following......

javail
22分钟前
35
0
《aelf经济和治理白皮书》重磅发布:为DAPP提供治理高效、价值驱动的生态环境

2020年2月17日,aelf正式发布《aelf经济和治理白皮书》,这是aelf继项目白皮书后,在aelf网络经济模型和治理模式方面的权威论述。 《aelf经济和治理白皮书》描述了aelf生态中各个角色及利益的...

AELF开发者社区
33分钟前
44
0
EditText的首字母大写

我正在开发一个小小的个人待办事项列表应用程序,到目前为止,一切都运行良好。 我想知道一个小怪癖。 每当我去添加一个新项目时,我都会看到一个带有EditText视图的Dialog。 当我选择EditT...

技术盛宴
37分钟前
30
0
战疫 | 高德工程师如何在3天上线“医护专车”

新冠状病毒肺炎疫情突袭,无数医护人员放弃与家人团聚,明知凶险,仍然奋战在一线。但因为武汉公交、地铁、网约车停运,医护人员上下班很难。白衣天使疾呼打车难。 (截图摘自《财经国家周刊...

amap_tech
45分钟前
41
0
img在IE中无法按比例显示

在IE浏览器中使用img标签当给img标签设置width:98%时,显示时还是会把img的原始高度显示出来 解决方式给父标签设置width,但width不能使用100%需要指定一个值 <div style="width:900px;"> ...

有理想的鸭子
45分钟前
45
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部