首页 > 数据库 >定时备份mysql数据库数据--mysqldump版

定时备份mysql数据库数据--mysqldump版

时间:2024-03-27 23:32:23浏览次数:21  
标签:-- 备份 crontab month mysqldump mysql backup 数据库 dir

前言:mysqldump是MySQL自带的逻辑备份工具,可以将整个数据库或者指定的表格导出为一个SQL脚本文件,可以用于数据库备份。

1、编写shell脚本
# 备份文件保存路径
backup_dir=/data/mysqlbackup
# 当前时间
current_time=`date +%Y-%m-%d-%H-%M-%S`
# 当前年份
year=`date +%Y`
# 当前月份
month=`date +%m`
# 当前日
day=`date +%d`
# 备份工具
tool=mysqldump
# mysql数据库用户名
username=root
# mysql数据库密码
password='123456'
# 对将要备份的多个数据库用数组分开
database_names=(database1 database2 database3)

# -d用来判断目录是否存在,存在返回真,不存在则
if [ ! -d $backup_dir/$year/$month/$day ]
then
    #不存在则用mkdir命令来创建目录, -p选项确保指定的整个目录路径都会被创建,创建的目录为/data/mysqlbackup/年份/月份/日
    mkdir -p $backup_dir/$year/$month/$day
fi
 
# 循环需要备份的数据库数组
for i in ${database_names[@]}
do
    #--single-transaction这个选项保证了通过将导出操作封装在一个事务(隔离级别为REPEATABLE READ)内来使得导出的数据是一个一致性快照
    #| gzip意思是利用管道命令连接gzip命令然后把sql文件直接压缩为gz压缩文件
    $tool -u $username -p $password --single-transaction $i | gzip > $backup_dir/$year/$month/$day/$i-$current_time.sql.gz
    # 把备份情况写进日志
    echo "成功创建备份:$backup_dir/$year/$month/$day/$i-$current_time.sql.gz" >> $backup_dir/mysqlbackup.log
done 

2、打开Linux的定时任务管理器crontab

输入以下命令进入crontab任务编辑

crontab -e


第一次使用crontab会弹出类似以下这样的描述,这时候选/usr/bin/vim.basic所在的数字2即可(就是选择vim为crontab的编辑模式) 

no crontab for root - using an empty one

Select an editor.  To change later, run 'select-editor'.  
 1. /bin/nano        <---- easiest
 2. /usr/bin/vim.basic     
 3. /usr/bin/vim.tiny
 4. /bin/ed

Choose 1-4 [1]: 2

3、设置定时任务,定时执行备份脚本

进入到crontab任务编辑页面后输入i进入编辑模式,然后在末尾加上定时corn表达式,最后按Esc退出编辑模式,输入:wq保存退出即可,当指定的时间到了就会自动执行shell脚本

#表示每天0点执行mysqlbak.sh脚本
0 0 * * * /home/mysqlbak.sh

标签:--,备份,crontab,month,mysqldump,mysql,backup,数据库,dir
From: https://blog.csdn.net/m0_64284147/article/details/133764617

相关文章

  • vue3背景下,el-input嵌套在弹出框中,自动聚焦“失效”?如何实现自动聚焦
    情景:在一个弹出框中,有一个el-input输入框,想要实现当弹出框出现时,input会自动聚焦。使用input的原生属性autofocus去自动获取焦点失效;使用ref获取el-input元素也显示undefined!!!<el-dialogv-model="dialogFormVisible"width="300">.......<el-input......
  • 动态规划(一)
    文章目录1、建造房屋2、破损的楼梯3、可构造的序列总数4、最快洗车时间5、安全序列6、地图7、电影放映计划1、建造房屋#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;constllp=1e9+7;intn,m,k;lldp[50][5000];//前i个街道花了j元的......
  • 毕业设计:基于深度学习的电影属性抽取及情感分析系统
    前言  ......
  • 力扣:回文数判断 java
    给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例1:输入:x=121输出:true示例2:输入:x=-121输出:false解释:从左向右读,为-121。从右向左读,......
  • 力扣:移除元素 java
    给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回......
  • C++枚举类型
    枚举类型枚举类型使我们可以将一组整型常量组织在一起。和类一样,每个枚举类型定义了一种新的类型。枚举属于字面值常量类型。C++包含两种枚举:限定作用域的和不限定作用域的。限定作用域的枚举类型C++11新标准引入了限定作用域的枚举类型。定义限定作用域的枚举类型的一......
  • 毕业设计:基于深度学习的农作物病虫害识别系统 深度卷积 人工智能 机器视觉
    目录前言设计思路一、课题背景与意义二、算法理论原理2.1卷积神经网络2.2YOLOv5s算法三、检测的实现3.1数据集3.2实验环境搭建3.3实验及结果分析最后前言    ......
  • gopher伪协议
    基础知识基本格式基本格式:URL:gopher://<host>:<port>/<gopher-path>web也需要加端口号80gophert协议默认端口为70gopheri请求不转发第一个字符get请求问号(?)需要转码为URL编码,也就是%3f回车换行要变为%0d%0a,但如果直接用工具转,可能只会有%0a在HTTP包的最后要加%0d%......
  • 【剑指offer】73. 数组中只出现一次的两个数字(超详解)
    题目链接acwingleetcode题目描述给你一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。找出只出现一次的那两个元素。你可以按任意顺序返回答案。你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题。输入:nums=[1,2,......
  • Mybatis-获取参数值的两种方式
    1.${}和#{}MyBatis获取参数值的两种方式:${}和#{}对于初学者来说,理解MyBatis中获取参数值的两种方式——#{}和${},关键在于明白它们如何影响SQL语句的构建以及为何在安全性、灵活性上有显著差异。下面我将用简单易懂的语言来解释这两者的本质、工作原理及使用注意......