linux下mysql备份时间设置_Linux下如何定时备份mysql

安装所需工具yum install net-tools #安装网络查看工具

备份mysql

创建存放备份数据的目录//data目录存放数据,log存放备份时打印的日志

mkdir -p /usr/local/mysql/backup/{data,log}

写一个shell脚本,放在/usr/local/mysql/backup取名为mysqlbak.sh注意,mysql版本 >=5.6 的,需要在my.cnf文件中指定 mysqldump 的用户和密码,则在mysqldump 中可以把-u${dbuser} 和-p${dbpasswd}去掉

mysql版本 >=5.6 的my.cnf文件中加入:[mysqldump]

#用户名

user=***

#密码

password=***

以下mysql版本为5.5,需要把dbuer和dbpasswd更改为你创建的mysql用户名和密码#!/bin/bash

#注意,以下 PATH 路径中需要把mysql的路径更改到你mysql安装的路径下

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/data/MySQL/mysql/bin

export PATH

#数据库用户名

dbuser='***'

#数据库密码

dbpasswd='***'

#数据库名

dbname='dbname'

#数据库端口

mysql_port='3306'

#备份时间

backtime=`date +%Y%m%d%H%M%S`

#日志备份路径

logpath='/usr/local/mysql/backup/log'

#数据备份路径

datapath='/usr/local/mysql/backup/data'

# 判断MYSQL是否启动,mysql没有启动则备份退出

mysql_ps=`ps -ef |grep mysql |wc -l`

mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l`

if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then

echo "ERROR:MySQL is not running! backup stop!" >> ${logpath}/mysqllog.log

exit

fi

#日志记录头部

echo "备份时间为${backtime},备份数据库表 ${dbname} 开始..." >> ${logpath}/mysqllog.log

#正式备份数据库

source=`mysqldump -u${dbuser} -p${dbpasswd} -h 127.0.0.1 ${dbname}> ${datapath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log;

#备份成功以下操作

if [ "$?" == 0 ];then

cd $datapath

#为节约硬盘空间,将数据库压缩

tar zcf ${dbname}${backtime}.tar.gz ${backtime}.sql > /dev/null

#删除原始文件,只留压缩后文件

rm -f ${datapath}/${backtime}.sql

#删除七天前备份,也就是只保存7天内的备份

find $datapath -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1

echo "数据库表 ${dbname} 备份成功!!" >> ${logpath}/mysqllog.log

else

#备份失败则进行以下操作

echo "数据库表 ${dbname} 备份失败!!" >> ${logpath}/mysqllog.log

fi

docker容器mysql备份

编写mysqlback.sh文件

和上面的基本相同,改变的只是mysqlback.sh文件内容

需更改的地方:dbname、mysql_user、mysql_password、docker_name#!/bin/bash

#数据库名

dbname='dbname'

#数据库用户

mysql_user='***'

#数据库密码

mysql_password='***'

#数据库端口

mysql_port='3306'

#备份时间

backtime=`date +%Y%m%d%H%M%S`

#日志备份路径

logpath='/usr/local/mysql/backup/log'

#数据备份路径

datapath='/usr/local/mysql/backup/data'

#需要备份的mysql容器名字

docker_name='mysql_container'

# 判断MYSQL是否启动,mysql没有启动则备份退出

mysql_ps=`ps -ef |grep mysql |wc -l`

mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l`

if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then

echo "ERROR:MySQL is not running! backup stop!" >> ${logpath}/mysqllog.log

exit

fi

#日志记录头部

echo "备份时间为${backtime},备份数据库表 ${dbname} 开始..." >> ${logpath}/mysqllog.log

#备份数据库

source=`docker exec ${docker_name} mysqldump -u${mysql_user} -p${mysql_password} ${dbname}> ${datapath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log;

#备份成功以下操作

if [ "$?" == 0 ];then

cd $datapath

#为节约硬盘空间,将数据库压缩

tar zcf ${dbname}${backtime}.tar.gz ${backtime}.sql > /dev/null

#删除原始文件,只留压缩后文件

rm -f ${datapath}/${backtime}.sql

#删除七天前备份,也就是只保存7天内的备份

find $datapath -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1

echo "数据库表 ${dbname} 备份成功!!" >> ${logpath}/mysqllog.log

else

#备份失败则进行以下操作

echo "数据库表 ${dbname} 备份失败!!" >> ${logpath}/mysqllog.log

fi配置定时任务vi /etc/crontab

配置每天凌晨3点自动备份,文件内容为:SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

#For details see man 4 crontabs

#Example of job definition:

#.---------------- minute (0 - 59)

#|  .------------- hour (0 - 23)

#|  |  .---------- day of month (1 - 31)

#|  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

#|  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

#|  |  |  |  |

#*  *  *  *  * user-name  command to be executed

0 3 * * * root /bin/sh /usr/local/mysql/backup/mysqlbak.shcrontab /etc/crontab #启动cron执行任务

f96ab365308a630ca1fce09044bbfc21.png↑每天凌晨3点定时备份效果图

89dae8d114a9ee0e26155e8e83858438.png↑crontab -l #查看执行的任务

crontab -r #删除任务

tail -f /var/log/cron #查看执行日志

systemctl enable crond #设为开机启动

systemctl start crond  #启动crond服务

systemctl status crond #查看状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值