首页 > 数据库 >MySQL定时自动备份及自动删除老的备份

MySQL定时自动备份及自动删除老的备份

时间:2022-10-13 11:46:51浏览次数:55  
标签:备份 cap db sh 自动 MySQL home referral backup

1.背景       目前接触的项目中,发现大部分项目开发环境和测试环境的数据库都没有自动备份,如果误删可能导致一系列问题,虽然有些项目有数据迁移工具,但是迁移工具里面仅仅包含种子数据,对于开发测试来说,最重要的是已产生的数据,项目复杂程度不同,重新造数据可能费时费力,故分享下自动备份(含仅保留最近10天的备份,防止备份文件无限增大)


2.方式

2..1 关于mysql备份,本文使用mysqldump实现,由于使用到了mysqldump,故需要在mysql数据库所在的服务器执行

2.2 新建一个备份的shell文件:touch /home/cap.backup/referral.db.backup.sh,然后vi /home/cap.backup/referral.db.backup.sh 按i进入编辑写入下述内容(路径及名称根据项目自己指定,mysqldump命令执行时,目录可能不同,具体根据安装时确定,本文示例在:/usr/bin/mysqldump 可执行)

 

#!/bin/bash
 
#1.数据库信息
db_user="root"
db_passwd="Ben@123"
db_name="referral"
db_backpath="/home/cap.backup/$db_name.dbbackup/"
 
#2.处理备份路径及备份时间
echo "ready to backup database, the folder is $db_backpath"
mkdir $db_backpath -p && cd $db_backpath
backup_time=$(date "+%Y%m%d-%H%M")
 
#3.执行mysql备份
/usr/bin/mysqldump -u$db_user -p$db_passwd $db_name  > "$db_backpath/$db_name"-"$backup_time.sql"
echo "database $db_name backup success"
 
#删掉当前目录10天之前的备份文件
find . -mtime +10  -name "*.sql" -exec rm -rvf {} \;

 

2.3 对此 referral.db.backup.sh 赋予执行权限,方可执行,可使用chmod命令:

chmod +x /home/cap.backup/referral.db.backup.sh #或者 chmod 777 /home/cap.backup/referral.db.backup.sh

2.4 使用 crontab -e 命令,在打开的文件中,按 i 插入下述命令(以下)

 

#每天早上5点10分执行一次cap_referral库备份
10 05 * * * /[/color][color=#000]home/cap.backup/referral.db.backup.sh[/color][color=#000]
#每天早上5点15分执行一次cap库备份
15 05 * * * [/color][color=#000][color=#000]/[/color][/color][color=#000]home/cap.backup/referral.db.backup.sh[/color][color=#000]

 

附:一般不需要重启crond服务,如果不执行的话,可以尝试手工重启下crond服务:service crond restart  或者  /sbin/service crond restart


附:如果要验证编写的脚本,可以手工执行下referral.db.backup.sh,看是否会产生备份文件





关于crondtab实现定时执行的常规使用



#进入 crontab 定时任务编辑界面:
#crontab -e

#每分钟执行一次备份脚本:
#* * * * * sh /home/cap.backup/referral.db.backup.sh

#每五分钟执行 :
#*/5 * * * * sh /home/cap.backup/referral.db.backup.sh

#每小时执行:
#0 * * * * sh /home/cap.backup/referral.db.backup.sh

#每天执行:
#0 0 * * * sh /home/cap.backup/referral.db.backup.sh

#每周执行:
#0 0 * * 0 sh /home/cap.backup/referral.db.backup.sh

#每月执行:
#0 0 1 * * sh /home/cap.backup/referral.db.backup.sh

#每年执行:
#0 0 1 1 * sh /home/cap.backup/referral.db.backup.sh

 

标签:备份,cap,db,sh,自动,MySQL,home,referral,backup
From: https://www.cnblogs.com/liuxiaoji/p/16787642.html

相关文章

  • 【博学谷学习记录】超强总结,用心分享 | MySQL锁简单介绍
    目录全局锁表级锁表级锁-表锁表级锁-元数据锁表级锁-IS(意向共享锁)与IX(意向排他锁)行级锁间隙锁例子临键锁和记录锁例子全局锁概念:全局锁就是对整个数据库实例加......
  • 事务基本演示和事务默认自动提交&手动提交
    1.事务的基本介绍 1.概念: *如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败2.操作: 1.开启事务:startt......
  • 事务-默认自动提交&手动提交和事务-事务四大特征
    事务-默认自动提交&手动提交MySQL数据库中事务默认自动提交事务提交的两种方式:自动提交:mysql就是自动提交的一条DML(增删改)语句会自动提......
  • mysql语句-----函数使用
    总结常用函数及使用方法1.字符串相关函数  --返回字符串字符集CHARSET(str)selectcharset(ename)fromemp;--连接字符串CONCAT(string[,…])selectc......
  • springboot配置多数据源mysql,presto,hive等
    下面案例是配置多数据源,两个及以上,但是主数据源只能是一个,默认mybatis使用的是主数据源下面配置mysql为主数据源,通过注解@Primary标注yaml文件配置:spring:datasource......
  • sqoop将hive数据导出到mysql
    sqoop的安装和使用教程参考博客:https://blog.csdn.net/qq_42502354/article/details/106727502,sqoop连接mysql:bin/sqooplist-databases--connectjdbc:mysql://linux-c......
  • mysql中timestamp和datetime类型的区别
    一、MySQL中表示当前时间的方法:CURRENT_TIMESTAMPCURRENT_TIMESTAMP()NOW()LOCALTIMELOCALTIME()LOCALTIMESTAMPLOCALTIMESTAMP()二、关于TIMESTAMP和DATETIME的比较一个完......
  • MySQL事务隔离级别
    事务隔离级别概述mysql中,innodb所提供的事务符合ACID的要求,而事务通过事务日志中的redolog和undolog满足了原子性、一致性、持久性,事务还会通过锁机制满足隔离性,在innodb......
  • windows系统,自动设置--shutdown命令了解
     参考:https://baike.baidu.com/item/shutdown/10469108?fr=aladdin 比如你的电脑要在24:00关机,可以选择“开始运行”,输入“at24:00Shutdown-s”,这样,到了24点,电脑就......
  • mysql的sql是先分组还是先排序?
    一、实验准备  实验对象:mysql5.7.36-log实验环境:  1、MicrosoftWindows版本21H2(操作系统内部版本19044.2006)  2、一张有一个字段可供排序有一个字段可供分组......