Centos mysql安全策略之开启定时备份
何为:增加服务器本地数据安全,防备因突发原因导致数据丢失后全部丢失
Step1. centos安装cron
(1)vixie-cron 软件包是 cron 的主程序;
(2)crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
yum install vixie-cron
yum install crontabs
# 附带备注一下ubuntu安装cron,如果你不是ubuntu忽略即可
安装:apt-get install cron
启动:service cron start
重启:service cron restart
停止:service cron stop
检查状态:service cron status
查询cron可用的命令:service cron
检查Cronta工具是否安装:crontab -l
Step2. 启动管理查看相关命令
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看crontab服务状态
# centos 7.2
systemctl start crond
systemctl restart crond
Step3. 在CentOS系统中加入开机自动启动
chkconfig --level 345 crond on
Step4. 启动Cron服务
service cron start
# centos 7.2
systemctl start crond
systemctl restart crond
Step5. 使用Cron帮助
如果cron工作正常,那么你可以使用man命令查看其手册描述的详细用法。(退出按下q键或h键)
man crontab
Step6. 对Cron作业进行列表显示
使用以下命令列出当前用户计划的cron作业。
crontab -l
# 如果想查看其它用户的cron作业,可以使用如下命令(这会列出指定用户的cron作业):
crontab -l -u username
Step7. 编辑Cron作业
第一次进入的时候要选择编辑器,选择后你可以配置新cron作业了,一般是选3
crontab -e
## 下面的例子,创建一个cron作业,它每分钟输出文本“test crontab is work or not”并把文本保存到/var/www/html/testcrontab.txt。
写入以下的脚本,保存退出,一旦保存了此cron脚本文件,就可以把它添加到计划的作业中。
* * * * * echo "test crontab is work or not" >> /var/www/html/testcrontab.txt
Cron表达式详解可参考这里
Step7.1 编写数据库备份脚本
新建 /mnt/backup目录,并且新建一个mysql_backup.sh脚本文件,赋予可执行权限,然后把下面的脚本复制上去
#!/bin/bash
##数据备份##
####01 00 * * * /bin/sh /mnt/backup/mysql_backup.sh > /dev/null 2>&1
###数据清理###
##15 3 * * * find /mnt/backup/data_bak/ -maxdepth 1 -name "*.sql.gz" -mtime +7 -exec /bin/rm -f {} \;
password="数据库密码"
backup_data_dir="/mnt/backup/"
time="$(date +"%Y%m%d%H%M%S")"
db_football="football"
savedir=/mnt/backup/data_bak
mkdir -p ${savedir}
cd ${savedir}
/usr/bin/mysqldump -h 127.0.0.1 -uroot -p${password} ${db_football} > ${db_football}_"$time".sql.gz
echo "succuss"
可以试着手动执行以下,可能会报错,需要修改一下脚本的编码
# vim /mnt/backup/mysql_backup.sh
# :set ff=unix
# 回车 保存退出即可
Step7.2 将脚本配置到定时任务
##数据备份##
01 00 * * * /bin/sh /mnt/backup/mysql_backup.sh > /dev/null 2>&1
###数据清理###
15 3 * * * find /mnt/backup/data_bak/ -maxdepth 1 -name "*.sql.gz" -mtime +7 -exec /bin/rm -f {} \;
Step8. 移除Cron作业
使用以下命令列出当前用户计划的cron作业。
# 使用下面的命令移除已经计划的cron作业
crontab -r
# 使用下面的命令移除所有已计划的cron作业,且无需再次确认。
crontab -ir
附
-u user:用来设定某个用户的crontab服务;
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
6、总结
(1)新创建的cron作业,不会马上执行,至少要过2分钟才执行。如果重启cron服务则会马上执行。
(2)Cron是Unix系统的一个配置定期任务的工具,用于定期或者以一定的时间间隔执行一些命令或者脚本;可执行的任务范围可以是每天夜里自动备份用户的home文件夹,也可以每个小时记录CPU的信息日志。
crond位于/etc/rc.d/init.d/crond 或 /etc/init.d 或 /etc/rc.d /rc5.d/S90crond,最常用/var/lock/subsys/crond。
(3)crontab(cron table)命令用于编辑执行中的定期任务列表,并且操作是基于每个用户的,每一个用户(包括root用户)都拥有自己的crontab。
crontab位于/usr/bin/crontab。
crond守护进程是在系统启动时由init进程启动的,受init进程的监视,如果它不存在了,会被init进程重新启动。这个守护进程每分钟唤醒一次,并通过检查crontab文件判断需要做什么。
每个用户有一个以用户名命名的crontab文件,存放在/var/spool/cron/crontabs目录里。若管理员允许或者禁止其他用户拥有crontab文件,则应编辑/etc/下面的cron.deny和cron.allow这两个文件来禁止或允许用户拥有自己的crontab文件。每一个用户都可以有自己的crontab文件,但在一个较大的系统中,系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件。
————————————————
原文链接: