linux中数据库的定时备份
相信大家都还记得这则新闻吧,欧洲云计算巨头 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语法格式中时间段的含义表
③ 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 statusRedirecting 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 -nJan 25 14:00:01 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...oryJan 25 14:30:02 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...oryJan 25 15:00:02 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...oryJan 25 15:30:01 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...oryJan 25 16:00:01 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...oryJan 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 crondroot 990 1 0 Jan10 ?00:00:22 /usr/sbin/crond -nroot 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每天凌晨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 -e0 1 * * * /home/bakcup/backup.sh本期到此就结束了,下一期我们说一说winserver环境下数据库备份。
到此这篇关于linux中数据库的定时备份的文章就介绍到这了,更多相关数据库定时备份linux篇内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!
