Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux下MySQL定时自动完整备份(mysqldump+crontab)

Linux下MySQL定时自动完整备份(mysqldump+crontab)

作者头像
KenTalk
发布于 2018-09-11 03:39:32
发布于 2018-09-11 03:39:32
4.6K02
代码可运行
举报
文章被收录于专栏:Ken的杂谈Ken的杂谈
运行总次数:2
代码可运行

一、前言

1、本文主要内容

  • 实现数据库全量备份
  • 实现定时执行备份
  • 实现定时清理7天之前的备份

2、环境信息

环境/工具

说明

MySQL

v5.7.x

mysqldump

MySQL自带的数据导出工具

crontab

功能相当于Windows的任务计划工具

二、备份准备&备份测试

1、备份目录准备

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#mysql专用目录
mkdir /mysql
#mysql备份目录
mkdir /mysql/backup
#mysql备份脚本
mkdir /mysql/backup/scripts
#mysql备份文件
mkdir /mysql/backup/files
#mysql备份日志
mkdir /mysql/backup/logs

2、备份脚本准备

  • 新建完整备份脚本
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi /mysql/backup/scripts/backup_full.sh
  • 脚本内容
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

#备份目录
BACKUP_ROOT=/mysql/backup
BACKUP_FILEDIR=$BACKUP_ROOT/files
BACKUP_LOGDIR=$BACKUP_ROOT/logs

#当前日期
DATE=$(date +%Y%m%d)

######备份######

#查询所有数据库
#-uroot -p123456表示使用root账号执行命令,且root账号的密码为:123456
DATABASES=$(mysql -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema")
#DATABASES=$(mysql -uroot -p123456 -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN ('sys','mysql','information_schema','performance_schema');" | grep -v "SCHEMA_NAME","ken.io") 
echo $DATABASES
#循环数据库进行备份
for db in $DATABASES
do
echo
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
mysqldump -uroot -pRoot@1024 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
echo
done

echo "done"

3、备份测试&验证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#执行备份脚本
sh /mysql/backup/scripts/backup_full.sh

#查看备份文件
ll /mysql/backup/files -h

#解压指定文件({file}自己替换成备份的文件)
gunzip /mysql/backup/files/{file}

三、定时任务

  • 安装crontab
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install -y crontab

1、定时执行MySQL完整备份

  • 创建定时备份任务
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#添加定时任务
crontab -e

#每天凌晨3点执行
00 3 * * * sh /mysql/backup/scripts/backup_full.sh

#查看定时任务
crontab -l

2、定时清理7天以前的备份

  • 创建文件清理脚本
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#创建脚本文件
vi /mysql/backup/scripts/backup_full_clean.sh

#写入以下内容
#!/bin/bash
find /mysql/backup/files -mtime +7 -name "*.gz" -exec rm -rf {} \;
  • 创建定时清理任务
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#添加定时任务
crontab -e

#每天凌晨1点执行
00 1 * * * sh /mysql/backup/scripts/backup_full_clean.sh

#查看定时任务
crontab -l

四、备注

1、crontab命令示例

命令

说明

* * * * * command

每1分钟执行一次command

30 * * * * command

每30分钟执行一次command

3,59 * * * * myCommand

每小时的第3和第59分钟执行

3,59 9-18 * * * myCommand

在上午9点到18点的第3和第59分钟执行

3,59 9-18 */2 * * myCommand

每隔两天的上午9点到18点的第3和第59分钟执行

3,59 9-18 * * 1 myCommand

每周一上午9点到18点的第3和第59分钟执行

2、附录

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/03/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
mysql每天定时自动全库备份、灾备、docker
之前没有意识,在ECS上自己安装的mysql没有自动备份,偶然发现,服务器被黑客入侵,把我的mysql数据库全部删除后,勒索我要比特币,当时也很无语,因为完全么有备份,也没有开启日志,所以只能认倒霉了,然后就研究了怎么进行定时备份,有的是docker环境下运行的,有的是宿主机直接安装。
码农笔录
2020/08/24
2.4K0
mysql每天定时自动全库备份、灾备、docker
Linux单机MySQL数据库自动备份
有一只柴犬
2024/01/25
5020
Mysql数据库定时备份
在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:
码客说
2019/10/21
9.7K0
MySQL 定时备份数据库(非常全)
在操作数据过程中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库。本篇文章主要讲述了几种方法进行 MySQL 定时备份数据库。
良月柒
2021/09/27
3.7K0
MySQL 定时备份数据库(非常全)
在操作数据过程中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库。本篇文章主要讲述了几种方法进行 MySQL 定时备份数据库。 一. mysqldump命令备份数据
猫头虎
2024/04/07
1.8K0
Linux-MySQL数据备份和定时清理
最近接了个新需求,需要将我们经常使用的几个数据库,MySQL、influxdb在Linux系统上实现定时自动备份,比如每天备份一次,间隔31天清理31天之前备份的数据,研究了一下,准备先从MySQL实现。
框架师
2021/08/05
2.1K0
Linux定时任务完全指南:crontab命令从入门到精通
在Linux系统中,crontab命令堪称自动化运维的瑞士军刀。作为系统管理员和开发者的必备工具,它允许用户创建定时任务计划,精确到分钟级别的自动化脚本执行能力,为服务器维护、数据备份、日志清理等重复性工作提供了完美的解决方案。
是山河呀
2025/07/10
2780
Crontab 定时任务
crontab命令可以帮助我们在固定的间隔时间执行指定的系统指令或者shell脚本,时间间隔的顺序为:秒,分,时,日,月,周及以上的任意组合,这个命令适合周期性的日志分析或数据备份的工作
公众号: 云原生生态圈
2021/11/15
1.1K0
CentOS下使用crontab+mysqldump实现定时自动备份数据库
最主要的原因:尽可能地减少损失,包括时间上、精神上和金钱上的损失。很多人都不注意备份数据,以致在发生问题后丢失大量的重要数据。要知道,在地球上网是很危险的,即使做好安全预防措施,也难免会发生不可预想的问题。因此,数据备份是日常必不可少的操作。数据库的备份用mysqldump
用户1214487
2018/07/31
5150
mysql 数据库 定时自动备份
我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。
挑战者
2019/11/18
4.7K0
定时任务 crontab + Shell 脚本组合大法,让你的数据库自动化无压力(教程+代码)
如果你看到 bash: command: 未找到命令,说明系统中没有安装对应命令:
IT咸鱼
2025/06/09
1380
定时任务 crontab + Shell 脚本组合大法,让你的数据库自动化无压力(教程+代码)
Mysql自动备份脚本并自动删除2周前备份内容
mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 路径/脚本名;
Lcry
2022/11/29
1.7K0
Linux命令之Crontab——定时任务
rontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
浩Coding
2020/03/04
1.3K0
Linux下实现MYSQL数据库的定时备份
这里使用MYSQL自带的备份命令mysqldump,所以首先保证你的服务器正确安装了MySQL数据库,然后配置了如下MySQL环境变量。
小明互联网技术分享社区
2023/11/19
1.5K0
Linux下实现MYSQL数据库的定时备份
mysql分库备份与分表备份
要求:将mysql数据库中的用户数据库备份,备份的数据库文件以时间命名 脚本内容如下:
仙人技术
2020/04/29
2.9K0
Linux下MySQL自动备份、定期删除、恢复
注意:在/etc/my.cnf配置mysqldump就不会提示:Warning: Using a password on the command line interface can be insecure.
JaneYork
2023/10/11
6870
Linux下MySQL自动备份、定期删除、恢复
服务器定时备份数据库
在9月份的时候,心血来潮考了考 swoole苦工"滑稽园扛把子" 一下 :  在服务器中,你是如何定时备份数据库的? 发现他答的并不好,只说了如何操作宝塔备份数据库,所以只能本人自己写一篇了 宝塔备份
仙士可
2019/12/19
4.4K0
服务器定时备份数据库
MySQL定时备份方案
本片文章介绍的方案是利用Linux自身的crontab定时任务功能,定时执行备份数据库的脚本。
Mshu
2020/07/21
2K0
Linux Crontab 定时任务(转载非原创)
转载来源:https://www.cnblogs.com/mrwhite2020/p/15313228.html
xlj
2021/09/23
4550
MySQL——定时备份,保留最新31天的数据
概述: 对于我们的生产数据库,都需要定时做备份,以免数据丢失。比如每日备份,同时也需要将以前的进行清理。此处我展示的是只保留最新的 31 天数据。
凡人飞
2020/09/20
1.3K0
相关推荐
mysql每天定时自动全库备份、灾备、docker
更多 >
LV.1
这个人很懒,什么都没有留下~
作者相关精选
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验