全面备份:自动化MySQL服务器上所有数据库的备份策略

这篇博客提供了一个批量备份MySQL数据库的Shell脚本,并包含了详细的注释和使用说明。这个脚本能够自动化地备份服务器上所有的数据库,排除系统数据库,并在备份完成后压缩和清理旧文件。

脚本内容及注释

下面是脚本的内容,其中包括了详细的注释说明:

#!/bin/sh# 定义数据库用户和密码
DBUser='root'
DBPass='your_password'# 定义MySQL和Mysqldump的路径
Mysql_path='/usr/local/mysql/bin/mysql'
Mysqldump_path='/usr/local/mysql/bin/mysqldump'# 定义备份日期和当前工作目录
Back_date=$(date +%Y%m%d)
Curr_dir=$(cd $(dirname $0);pwd)# 定义备份存放的目录
Backup_dir='/opt/dbbak'# 检查备份目录是否存在,不存在则创建
if [ ! -d ${Backup_dir} ]; thenmkdir -p ${Backup_dir}
fi# 创建当天的备份目录
mkdir ${Backup_dir}/mysql_backup_${Back_date}# 获取数据库列表,排除系统数据库
DBS=$(${Mysql_path} -u${DBUser} -p${DBPass} -e "show databases;" | egrep -vw "Database|performance_schema|information_schema" 2>/dev/null)
if [ $? -ne 0 ]; thenecho "login failed,exit"exit 1
fi# 遍历数据库列表,执行备份操作
for i in ${DBS}; doecho -e "\033[32m Backup $i \033[0m"${Mysqldump_path} -u${DBUser} -p${DBPass} --single-transaction --hex-blob -B ${i} | gzip > ${Backup_dir}/mysql_backup_${Back_date}/${i}_${Back_date}.sql.gz
done# 切换到备份目录,打包并删除原备份文件夹
cd ${Backup_dir}
tar zcvf mysql_backup_${Back_date}.tar.gz mysql_backup_${Back_date} --remove-files# 删除3天前的备份文件
cd ${Backup_dir} && find ${Backup_dir} -type f -name "*.tar.gz" -mtime +3 -exec rm -f {} \;

脚本解释

  1. 脚本头#!/bin/sh 指明这个脚本应该使用shell来执行。
  2. 数据库访问信息DBUserDBPass 变量存储用于访问数据库的凭据。
  3. 工具路径Mysql_pathMysqldump_path 指向mysql和mysqldump工具的路径。
  4. 备份时间和目录:使用日期生成备份文件名,并定义备份文件存放的目录。
  5. 创建备份目录:检查并创建今天的备份目录。
  6. 获取数据库列表:列出除系统数据库外的所有数据库。
  7. 备份过程:对每个数据库执行备份,备份文件以.sql.gz格式保存。
  8. 压缩备份文件:将所有备份文件打包成一个.tar.gz文件,并删除原备份目录。
  9. 清理旧备份:删除3天前的备份文件。

使用方法

1. 将上述脚本保存到一个文件中,例如命名为mysql_backup.sh

2. 给脚本文件赋予执行权限:

chmod +x mysql_backup.sh

3. 执行脚本进行备份:

./mysql_backup.sh

4. (可选)将脚本加入到crontab中,实现定期自动备份。

如果希望脚本定时执行,可以将其添加到crontab中。编辑当前用户的crontab文件:

crontab -e

添加一行定时任务,例如每天凌晨2点执行备份:

0 2 * * * /path/to/mysql_backup.sh

确保将/path/to/mysql_backup.sh替换为脚本实际的存储路径。

保存并退出编辑器。这样,脚本将按照设定的时间自动运行并执行数据库备份。

结论

通过使用这个脚本,系统管理员可以轻松地自动化MySQL数据库的备份过程。这不仅提高了备份任务的效率,也确保了数据的安全性和及时恢复的可能性。通过定期执行备份并清理旧文件,可以有效管理备份数据的存储空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/799701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

烤羊肉串引来的思考--命令模式

1.1 吃羊肉串! 烧烤摊旁边等着拿肉串的人七嘴八舌地叫开了。场面有些混乱,由于人实在太多,烤羊肉串的老板已经分不清谁是谁,造成分发错误,收钱错误,烤肉质量不过关等。 外面打游击烤羊肉串和这种开门店做烤…

基于Springboot4S店车辆管理系统

采用技术 基于Springboot4S店车辆管理系统的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringBootMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 页面展示效果 管理员功能 首页 销售员管理 维修员管理 客户管理 供应…

服务器挖矿病毒查杀排查手册

生产紧急问题可私信博主 背景 好几个朋友都找过我说自己的服务或者网站异常的慢,甚至于无法访问 分析 拿到服务器权限登录服务器,执行top命令,发现存在100%cpu占用进程,cpu idle为0 看到此时基本很明确服务器存在挖矿程序 查…

Altair®(澳汰尔)Inspire™ Extrude Metal 专为进行高效金属挤压设计

所有挤压公司都希望消除成本高昂的原型设计,缩短重新设计周期。现在,各种规模的企业组织均可获得高等物理特性仿真技术。Inspire Extrude Metal 易于掌握,让所有工程师或设计师都能通过仿真,更好地了解任何特定金属合金的型材特性…

【问题处理】银河麒麟操作系统实例分享,银河麒麟高级服务器操作系统mellanox 网卡驱动编译

1.Mellanox 网卡源码驱动下载链接: https://www.mellanox.com/downloads/ofed/MLNX_EN-5.7-1.0.2.0/MLNX_EN_SRC-5.7-1.0.2.0.tgz 2.系统及内核版本如下截图: 3.未升级前 mellanox 网卡驱动版本如下: 4.解压 “MLNX_EN_SRC-5.7-1.0.2.0.tg…

2020 年 12 月青少年软编等考 C 语言一级真题解析

目录 T1. 字符三角形思路分析 T2. 计算 (a b) (c - b) 的值T3. 晶晶赴约会思路分析 T4. 角谷猜想思路分析 T5. 求满足条件的 3 位数思路分析 T1. 字符三角形 给定一个字符,用它构造一个底边长 5 5 5 个字符,高 3 3 3 个字符的等腰字符三角形。 时间…

未来AI技术方面的创业机会

私信博主,加入有前途的行业。 人工智能(AI)技术的快速发展和广泛应用为创业者提供了丰富的机会。随着技术的不断进步,AI的应用领域正在不断拓展,为创业者提供了广阔的创新空间。以下是一些未来AI技术方面的创业机会&a…

JavaWeb后端——Mybatis

概述 Mybatis:Java程序来对数据库进行操作,一款优秀的持久层框架,用于简化JDBC的开发 SSM:SpringMVC、Spring、Mybatis 快速入门 步骤2:注意数据库连接的四要素 application.properties:springboot 的默…

【leetcode】动态规划::前缀和

标题:【leetcode】前缀和 水墨不写bug 正文开始: (一)简单前缀和 描述 给定一个长度为n的数组a1​,a2​,....an​. 接下来有q次查询, 每次查询有两个参数l, r. 对于每个询问, 请输出al​al1​....ar​ 输入描述: 第一…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑灵活爬坡产品的虚拟电厂两阶段分布鲁棒优化运营策略》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

轨迹规划 | 图解最优控制LQR算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 最优控制理论2 线性二次型问题3 LQR的价值迭代推导4 基于差速模型的LQR控制5 仿真实现5.1 ROS C实现5.2 Python实现5.3 Matlab实现 0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全…

ccf201712-2游戏

队列应用 import java.util.LinkedList; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);LinkedList<Integer> queue new LinkedList<>();int total scanner.nextInt();int k …

硬件标准化之道:Linux社区与硬件厂商的协同创新

在Linux的广阔世界中&#x1f30c;&#xff0c;与各式各样的硬件设备进行互动和协作是一项不断进行的挑战&#x1f527;。硬件厂商和Linux社区的紧密合作&#xff0c;通过制定一系列标准和协议&#x1f4dc;&#xff0c;使得从键盘&#x1f3b9;和鼠标&#x1f5b1;到复杂的网络…

Transformer介绍

一、Transformer概述 Transformer模型是一种基于自注意力机制的神经网络架构&#xff0c;主要用于处理序列数据&#xff0c;如自然语言文本。它由编码器&#xff08;Encoder&#xff09;和解码器&#xff08;Decoder&#xff09;两部分组成&#xff0c;通过多层的自注意力机制…

七、Ajax(Django开发)

Ajax&#xff08;Django开发&#xff09; 知识点的回顾&#xff1a;1.Ajax请求2.订单小结3.图表4.关于文件上传4.1基本操作案例&#xff1a;批量上传数据案例&#xff1a;混合数据&#xff08;Form&#xff09;4.2启用media案例&#xff1a;混合数据&#xff08;form&#xff0…

2024-简单点-python单例模式-__call__和__new__-线程安全版本

单例属性可变 先看一个版本&#xff0c;这版本虽然能控制成一个单实例&#xff0c;但是实例的值却可以变。。 import threading class Singleton: _instance None _lock threading.Lock() def __new__(cls, *args, **kwargs): # 加锁以确保线程安全 with cls._lock: …

C++设计模式:桥模式(五)

1、定义与动机 桥模式定义&#xff1a;将抽象部分&#xff08;业务功能&#xff09;与实现部分&#xff08;平台实现&#xff09;分离&#xff0c;使他们可以独立地变化引入动机&#xff1a; 由于某些类型的固有的实现逻辑&#xff0c;使得它们具有两个变化的维度&#xff0c;…

【华为OD机试】游戏分组、王者荣耀【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 部门准备举办一场王者荣耀表演赛,有 10 名游戏爱好者参与, 分 5 为两队,每队 5 人。 每位参与者都有一个评分,代表着他的游戏水平。 为了表演赛尽可能精彩,我们需要把 10 名参赛者分为…

git环境切换

文章目录 一. 操作步骤&#xff1a;1.查看全局设置3.Git 切换本地git设置4.切换仓库并推送 一. 操作步骤&#xff1a; 1.查看全局设置 $ Git config --global --list credential.https://codeup.aliyun.com.providergeneric user.namebiejiahao user.emailxxxxxxxxqq.com3.Gi…