首页 >资讯 > > 正文

linux中数据库的定时备份 环球讯息

来源:脚本之家 2023-05-13 12:11:02
目录
1 序言2 crond 相关知识点2.1 crond 是什么?2.2 crontab 进行定时任务设置2.2.1 crontab 指令选项说明2.2.2 crontab 指令使用格式2.2.4 crontab 设置步骤3 各个数据库备份脚本3.1 Oracle数据库3.2 Mysql数据库3.3 postgresql数据库3.4 mongoDB数据库4 定时备份数据库实际操作

1 序言

相信大家都还记得这则新闻吧,欧洲云计算巨头 OVH 位于法国斯特拉斯堡的机房发生严重火灾,大火彻底摧毁了五层高、占地 500 平方米的 SBG2 数据中心。


(相关资料图)

当地报纸称 115 位消防员投入 6 个小时才将其扑灭。经过长达 6 个小时的持续燃烧,SBG2 内的数据恐怕已经彻底丢失。

大火对欧洲范围内的众多网站造成严重影响。据 Netcraft 称,目前跨 464000 个域的多达 360 万个网站皆已下线。

数据是无价的,所以生产环境中定时备份数据库显得尤为重要。备份能防止服务器故障和人为误操作带来的数据丢失。

生产环境中linux操作系统也是服务器的首选,所以我们今天就以linux为例,说一说数据库备份。

具体以什么数据库为例呢,就以这几年工作中接触到的几种常见数据库为例吧。

OraclemysqlpostgresqlmongoDB

在这里呢也给自己挖一个坑,工作中呢也用到winserver 作为服务器的情况,所以呢后面也整理更新下winserver 环境下数据库备份。

2 crond 相关知识点

2.1 crond 是什么?

crond任务调度相当于我们日常生活中的闹钟。可以在某个时间点执行特定的命令和程序。 linux系统自身定期执行的任务工作:例如轮询系统日志、备份系统数据、清理系统缓存、杀毒等等 用户执行的工作任务:用户通过设置任务调度,定时执行自己添加shell脚本或简单的指令。例如每隔1分钟和互联网上时间服务器同步,每天凌晨1点备份数据库等等

2.2 crontab 进行定时任务设置

2.2.1 crontab 指令选项说明

语法:

crontab[-e|-l|-r]

-e:编辑crontab 定时任务
-l:查询crontab定时任务
-r:删除当前用户所有的crontab定时任务

2.2.2 crontab 指令使用格式

crontab用户的定时任务一般分为6段(空格分隔,系统的定时任务则/etc/crontab分为7段),其中前五段位时间设定段,第六段为所要执行的命令或脚本任务段。

①语法:

* * * * * cmd
①cmd为要执行的命令或脚本,例如/server/scripts/lee.sh
②每个段之间必须要有空格。

② crontab语法格式中时间段的含义表

含义取值范围
第一个“*”一小时当中的第几分钟0-59
第二个“*”一天当中的第几个小时0-23
第三个“*”一个月当中的第几天1-31
第四个“*”一年当中的第几个月1-12
第五个“*”一周当中的星期几0-7(0和7都代表周天)

③ crontab语法格式中特殊符号的含义表

特殊符号含义
*"*" 表示任意时间都,就是“每”的意思,举例:如00 01 * * * cmd 表示每月每周每日的凌晨1点执行cmd任务。
-"-" 表示分隔符,表示一个时间范围段,如17-19点,每小时的00分执行任务。00 17-19 * * * cmd 表示17,18,19点整点分别执行的意思。
,"," 表示分隔时间段的意思。30 17,18,19 * * * cmd 表示每天17,18,19点的半点执行cmd 也可以和“-”结合使用,如: 30 3-5,17-19 * * * cmd 表示每天3、4、5和17、18、19 执行
/nn代表数字 即”每隔n单位时间”,例如:每10分钟执行一次任务可以写 */10 * * * * cmd,其中/10,的范围是0-59,也可以写成0-59/10
① 30 23 * * * cmd    表示每天23:30分执行cmd命令
② 40 22 * * 1 cmd    表示每周一22:40分执行cmd命令
③ 30 0 1-12 * * cmd  表示每月1号和12号 00:30执行cmd命令
④ 30 0 * * 1-5 cmd   表示每周一和周五00:30执行命令
⑤ */10 4 * * * cmd   表示每天4:00每隔10分钟执行一次cmd命令

2.2.4 crontab 设置步骤

这里我们以每5分钟同步一次互联网时间为例进行说明

① 查看crond服务是否启动

/sbin/service crond status --查看crond服务是否启动

[root@xiezhr /]# /sbin/service crond status
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-01-10 21:14:50 CST; 1 months 25 days ago
 Main PID: 990 (crond)
   CGroup: /system.slice/crond.service
           └─990 /usr/sbin/crond -n

Jan 25 14:00:01 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...ory
Jan 25 14:30:02 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...ory
Jan 25 15:00:02 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...ory
Jan 25 15:30:01 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...ory
Jan 25 16:00:01 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...ory
Jan 25 16:24:01 xiezhr crond[990]: (*system*) RELOAD (/etc/cron.d/yunjing)
Jan 28 11:18:01 xiezhr crond[990]: (*system*) RELOAD (/etc/cron.d/sgagenttask)
Jan 28 11:18:01 xiezhr crond[990]: (root) RELOAD (/var/spool/cron/root)
Feb 07 12:03:01 xiezhr crond[990]: (*system*) RELOAD (/etc/cron.d/yunjing)
Feb 07 12:03:01 xiezhr crond[990]: (root) RELOAD (/var/spool/cron/root)
Hint: Some lines were ellipsized, use -l to show in full.

如果crond服务没启动则执行如下命令启动crond服务

/sbin/service crond start          启动服务

查看进程

[root@xiezhr /]# ps -ef|grep crond
root       990     1  0 Jan10 ?        00:00:22 /usr/sbin/crond -n
root     19552 15271  0 16:10 pts/1    00:00:00 grep --color=auto crond

② 编写shell脚本

在home路径下添加如下shell脚本

[root@xiezhr home]# vim /home/my.sh
/usr/sbin/ntpdate time.windows.com >/dev/null 2>&1

③ 给脚本增加执行权限

[root@xiezhr home]# chmod u+x /home/my.sh 

④ 设置定时任务crontab

[root@xiezhr home]# crontab -e
*/5 * * * * /home/my.sh

3 各个数据库备份脚本

3.1 Oracle数据库

#!/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1;
export ORACLE_SID=orcl;
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#以上代码为Oracle数据库运行账号oracle的系统环境变量设置,必须添加,否则crontab任务计划不能执行。

date=date +%Y_%m_%d            #获取系统当前日期时间
days=7                         #设置删除7天之前的备份文件
orsid=192.168.1.100:1521/orcl  #Oracle数据库服务器IP、端口、SID
orowner=scott                  #备份此用户下面的数据
bakuser=system                 #用此用户来执行备份,必须要有备份操作的权限
bakpass=oracle                 #执行备注的用户密码
bakdir=/backup/oracledata      #备份文件路径,需要提前创建好
bakdata=$orowner"_"$date.dmp   #备份数据库名称
baklog=$orowner"_"$date.log    #备份执行时候生成的日志文件名称
ordatabak=$orowner"_"$date.tar.gz #最后保存的Oracle数据库备份文件

cd $bakdir                     #进入备份目录
mkdir -p $orowner              #按需要备份的Oracle用户创建目录
cd $orowner                    #进入目录
exp $bakuser/$bakpass@$orsid grants=y owner=$orowner file=$bakdir/$orowner/$bakdata log=$bakdir/$orowner/$baklog #执行备份
tar -zcvf $ordatabak $bakdata  $baklog                      #压缩备份文件和日志文件
find $bakdir/$orowner  -type f -name "*.log" -exec rm {} \; #删除备份文件
find $bakdir/$orowner  -type f -name "*.dmp" -exec rm {} \; #删除日志文件
find $bakdir/$orowner  -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \;  #删除7天前的备份(注意:{} \中间有空格)

以上exp备份,如果要采用expd备份,只需将上面执行语句换成下面的即可
expdp $bakuser/$bakpass@$orsid full=y cluster=n directory=$bakdir dumpfile=$bakdir/$orowner/$bakdata logfile=$bakdir/$orowner/$baklog 

3.2 Mysql数据库

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin
export PATH
dbuser="root"          #数据库用户名
dbpasswd="123456"      #数据库密码
dbname="test1 test2"   #数据库名,可以定义多个数据库,中间以空格隔开,如 test1 test2
backtime=`date +%Y%m%d%H%M%S`    #备份时间
logpath= "/home/mysql/backup"     #日志备份路径
datapath="/home/mysql/backup"     #数据备份路径
echo "备份时间为${backtime},备份数据库表 ${dbname} 开始" >> ${logpath}/mysqllog.log  #日志记录头部
#正式备份数据库
for table in $dbname; do  
source=`mysqldump -u ${dbuser} -p${dbpasswd} ${table}> ${logpath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log;
#备份成功以下操作
if [ "$?" == 0 ];then 
cd $datapath
tar jcf ${table}${backtime}.tar.bz2 ${backtime}.sql > /dev/null   #为节约硬盘空间,将数据库压缩
rm -f ${datapath}/${backtime}.sql   #删除原始文件,只留压缩后文件
cd $datapath
rm -rf `find . -name "*.sql.gz" -mtime +30` >> ${logpath}/mysqllog.log 2>&1  #删除30天前备份文件
echo "数据库表 ${dbname} 备份成功!!" >> ${logpath}/mysqllog.log
else
echo “数据库表 ${dbname} 备份失败!!” >> ${logpath}/mysqllog.log   #备份失败则进行以下操作
fi
done

3.3 postgresql数据库

#!/bin/bash
pg_user ="postgres"
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export exp_date=`date "+%Y%m%d"`
pg_dump  -U postgres dbpostgres -f /u01/backup/$exp_date.sql  
gzip -1 /u01/backup/$exp_date.sql       #压缩备份文件
find /u01/backup -mtime +14 -exec rm {} \;   #删除七天前备份文件

3.4 mongoDB数据库

#!/bin/sh
DUMP=/home/webapp/Downloads/mongoDB/mongodbserver/bin/mongodump #mongodump备份文件执行路径
OUT_DIR=/home/webapp/backup/mongo_bak/mongod_bak_now #临时备份目录
TAR_DIR=/home/webapp/backup/mongo_bak/mongod_bak_list #备份存放路径
DATE=`date +%Y_%m_%d_%H_%M_%S` #获取当前系统时间
DB_USER=XXXX#数据库账号
DB_PASS=XXXX #数据库密码
DB_NAME=TEST #数据库名称
IP=xx.xx.xx.xx:27017
DAYS=365 #DAYS=30代表删除30天前的备份,即只保留最近30天的备份
TAR_BAK="mongod_bak_$DATE.tar.gz" #最终保存的数据库备份文件名
cd $OUT_DIR
rm -rf $OUT_DIR
mkdir -p $OUT_DIR/$DATE
$DUMP -h $IP -u $DB_USER -p $DB_PASS -d $DB_NAME -o $OUT_DIR/$DATE #备份数据库
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE                         #压缩为.tar.gz格式
find $TAR_DIR/ -mtime +$DAYS -delete                               #删除30天前的备份
exit

4 定时备份数据库实际操作

每天凌晨1点备份以上常见数据库

① 创建备份脚本

在home路径下创建backup.sh 并添加以上数据库备份shell脚本

[root@xiezhr home]#  vim /home/bakcup/backup.sh
# 要备份那个数据库,就往backup.sh 添加对应的shell脚本即可

③ 给脚本增加执行权限

[root@xiezhr home]# chmod u+x /home/bakcup/backup.sh

③ 设置定时任务crontab

[root@xiezhr home]# crontab -e
0 1 * * * /home/bakcup/backup.sh

本期到此就结束了,下一期我们说一说winserver环境下数据库备份。

到此这篇关于linux中数据库的定时备份的文章就介绍到这了,更多相关数据库定时备份linux篇内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

上一篇:还记得10年前最火的4个网红吗?如今生活如何?凤姐早已扎根美国 下一篇:最后一页
x
推荐阅读

linux中数据库的定时备份 环球讯息

2023-05-13

还记得10年前最火的4个网红吗?如今生活如何?凤姐早已扎根美国

2023-05-13

共话中国经济新机遇丨专访:中国经济和市场为东盟提供大量发展机会——访印度尼西亚经济统筹部副部长潘布迪

2023-05-13

全球今头条!岳麓山索道“闭关”提质,会以什么模样归来?

2023-05-13

世界滚动:《云襄传》在骆家庄的圈地案中 散布谣言的人原来是他(九)

2023-05-13

微动态丨乡村振兴战略下农村体育发展方向研究

2023-05-13

世界速递!福斯特担任热火尼克斯G6主裁 他吹罚时热火已十连败

2023-05-13

进价100卖160利润是多少_毛利润和净利润的区别 环球报资讯

2023-05-13

焯过水的蔬菜要不要过水?为什么?

2023-05-13

佳能便携相机哪款好_佳能相机哪款好_环球关注

2023-05-13

股票行情快报:山东药玻(600529)5月12日主力资金净卖出323.29万元

2023-05-13

食品的分类方法有哪几种_食品的分类

2023-05-12

肤美灵洗面奶效果怎样_肤美灵洗面奶效果

2023-05-12

全球观速讯丨黄石西塞山区政法委:奋力书写平安答卷

2023-05-12

【全球报资讯】根据奥地利媒体Kronen Zeitung(皇冠...

2023-05-12

赣锋锂业: 关于2021年股票期权激励计划授予股票期权第二个行权期的行权条件成就的公告 天天要闻

2023-05-12

名犬名称图片大全_名狗名称及图片大全|环球看点

2023-05-12

快讯:城发环境:喀什市生活垃圾焚烧发电项目转入运营期

2023-05-12

长江生态持续向好 “水中大熊猫”江豚携崽现身保护区-环球快看点

2023-05-12

全球热文:(待审)示范引领 清风相伴 咸安区召开区委直属机关基层党支部标准化规范化建设暨清廉机关建设现场推进会

2023-05-12

鬼灭之刃是说什么的做菜汤有营养吗(鬼灭之刃做饭歌)_环球快报

2023-05-12

网络段子手拿下票房冠军,小鲜肉打败顶流大制作,内娱终于变天?_环球视点

2023-05-12

“谢谢阿姨让我们看到历史” 李大钊孙女李虹微博“看老照片”停更

2023-05-12

深度整合金融资源 为“蓝色碳汇”注入“金融动力”

2023-05-12

【世界热闻】5月11日龙虎榜:1.7亿抢筹兆威机电 机构净买17只股

2023-05-12

焦点速递!长沙9人上榜第三届全国创新争先奖拟表彰名单

2023-05-11

溆浦汽车站工作人员态度差

2023-05-11

厦门新版重点发展产业目录有啥变化?-每日短讯

2023-05-11

美媒:美国首都华盛顿地区无家可归者上升18%

2023-05-11

快资讯丨Excel中如何更改超链接名称_Excel中如何更改超链接名称简介介绍

2023-05-11

1季度海外动力电池装机数据出炉,LG依然稳压宁德时代_全球速看

2023-05-11

全球快播:维塔士设立华沙实验室

2023-05-11

每日观点:手机怎么制作ai换脸视频?

2023-05-11

路演互动丨同星科技5月12日新股发行网上路演

2023-05-11

网吧桌面开关带usb(网吧桌面开关)-世界速看

2023-05-11

微软发布适用于 Win11/10 的 HVCI 内存完整性兼容性检查工具|环球快资讯

2023-05-11

全球快看:港最新公屋平均轮候时间是5.3年 较上季微跌0.2年

2023-05-11

2023杭州大运河文化枇杷休闲节开始了吗

2023-05-11

如何拟定采访提纲_采访提纲怎么写 格式简介介绍

2023-05-11

环球快讯:冰冻虾仁的家常做法简单(冰冻虾仁的家常做法)

2023-05-11

为什么嵌入式FPGA(eFPGA)IP是ADAS应用的理想选择?

2023-05-11

襄州医保局召开治理医保腐败及药店管理推进会

2023-05-11

环球通讯!报告出炉!深圳科研人才增速领先,这些学科人才储备优势明显

2023-05-11

热推荐:4月份全国新办涉税经营主体148万户

2023-05-11

世界看热讯:中微公司 (688012):5月11日股价出现向上跳空缺口

2023-05-11

全球快看点丨宁波人几点吃晚饭_宁波人午餐一般吃什么

2023-05-11

世界球精选!澳大利亚S&P/ASX200指数5月11日(周四)开盘上涨5.60点,涨幅0.08%,报7261.30点

2023-05-11

世界热文:在库管理_在库

2023-05-11

银行理财收益率高于贷款利率能套利?业界称空间不大且是违规行为

2023-05-11

【全球独家】陕西省加快水库除险加固确保安全度汛

2023-05-11

小小的太阳原唱孙露_小小的太阳

2023-05-11

又轰下29+13+12,他这样打下去,威少的历史第三不保了 天天新视野

2023-05-11

连环雷!17万股东懵了! 百亿公司煤矿出事 这家董事长被立案

2023-05-10

中芯集成登陆科创板,二期功率芯片晶圆代工产线扩产建设为募资重点 观焦点

2023-05-10

每日快报!【国际漫评】“你们就地避难吧!”

2023-05-10

今日播报!汽车报道:2018主流车企销量目标分析北京奔驰第一

2023-05-10

每日热议!巨人网络新品《原始征途》首月流水破2亿元

2023-05-10

爱奇艺公布多部大剧:刘慈欣《球状闪电》年内开播

2023-05-10

五一北京游玩路线_北京游玩路线

2023-05-10

朗朗乾坤_朗朗乾坤昭昭日月什么意思 焦点热文

2023-05-10

全球看热讯:短调结束还是加速回调

2023-05-10

高效办公利器,乐歌MX1升降工作台,让工作更轻松!

2023-05-10

环球今亮点!2022平均工资数据出炉,看看你拖后腿了吗?这个行业最有“钱途”

2023-05-10

果戈里大街名字的由来_果戈里大街

2023-05-10

动态:破坏公用设施罪

2023-05-10

儋州市非物质文化遗产传承教学基地揭牌

2023-05-10

当前速讯:从中国产品到中国品牌 高端装备制造领域都经历了哪些?

2023-05-10

2023世界超高清视频产业发展大会在广州召开-当前速看

2023-05-10

即时:松下正式发布S5M2X 支持两种RAW格式外录 单机身预售价13298元

2023-05-10

天天热头条丨共谋渠岸追赶超越的“珍珑棋局”

2023-05-10

苏州出台产业投资新政!26条措施力撑实体经济再跃升

2023-05-10

企业@数博会|中融信通:服务东数西算 点亮贵州本土算力产业新名片 今亮点

2023-05-10

观天下!周六福铂金多少钱一克(2023年05月10日)参考价格

2023-05-10

河南杞县金融工作局聚焦三个重点 答好营商环境考卷

2023-05-10

环球热消息:清炖鲤鱼汤的正宗做法_清炖鲤鱼汤

2023-05-10

中国香港男足与主教练安德森续约两年

2023-05-10

今日最新!齐翔腾达:5月9日融资买入302.38万元,融资融券余额7.62亿元

2023-05-10

【焦点热闻】山西吕梁山革命博物馆5月10日重新开馆

2023-05-10

天天即时看!普洛斯计划出售部分中国资产,目前正在尽职调查阶段

2023-05-10

九安医疗:融资净偿还1084.38万元,融资余额12.82亿元(05-09)

2023-05-10

天天速看:culture读音是什么_culture读音

2023-05-10

2023年1-3月中国啤酒出口同比增14.5%

2023-05-10

活动报名 | 2024年入学复旦MBA招生交流会【南京站】 全球速看料

2023-05-10

焦点滚动:系统治理商标恶意注册工作方案印发

2023-05-10

陈桥的拼音怎么写_陈桥拼音输入法

2023-05-10

MSI前瞻:T1对阵MAD!Zeus急需找回自己

2023-05-10

新一轮视频高质量发展政策将出台;汽车国六排放标准6b阶段将实施丨明日主题前瞻_环球时快讯

2023-05-09

木材材积表 天天快资讯

2023-05-09

台湾贵妇上节目炫耀爱马仕,结果被扒全是假货?|天天微资讯

2023-05-09

两连平后将迎战青岛海牛,海港主帅哈维尔酝酿变阵

2023-05-09

怎么退烧38度2最快最有效的方法_怎么退烧

2023-05-09

武汉:万吨转体桥成功转体 天天视点

2023-05-09

今日热门!模拟发生7.0级地震 内蒙古消防开展实战拉动演练

2023-05-09

外媒:卢森堡外籍人口占总人口47%

2023-05-09

国网甘肃电力:“项目长”服务模式助力项目“加速跑”

2023-05-09

砥砺前行的河北钢铁工业

2023-05-09

比亚迪受让易安财险10亿股股份已获监管批复

2023-05-09

浙江富豪栽了!百强房企遭强制清盘,中融信托疑踩雷,有投资人300万未兑付

2023-05-09

每日观察!《红霞岛》Arkane工作室已经在开发新3A游戏

2023-05-09

环球热点!海马4月汽车销量 3426辆,押注氢燃料能摆脱困境吗?

2023-05-09