编写shell脚本,利用mysqldump实现mysql数据库分库分表备份

摘要:本文介绍了如何使用 Shell 脚本和 mysqldump 工具实现 MySQL 数据库的分库分表备份。通过编写脚本,我们可以自动化备份多个数据库以及每个数据库中的所有表,并将备份文件按照数据库和表的层次结构进行存储。

一、准备工作

        在开始编写 Shell 脚本之前,请确保已经安装了 MySQL 数据库和 mysqldump 工具。同时,你需要创建一个用于存储备份文件的目录。

二、编写shell脚本

创建一个新的文件,例如 bak_v1.sh

#!/bin/bash

# 定义备份目录和连接选项
BAK_DIR="/backup/db"
CMD_OPT="-uroot -p030429"
EX_DB="information_schema|mysql|performance_schema|sys"

# 获取所有数据库(排除系统数据库)
DBS=$(mysql ${CMD_OPT} -N -e 'show databases' | egrep -v ${EX_DB})

# 备份每个数据库及其表
for db in $DBS
do
  # 获取数据库中的所有表
  TABS=$(mysql ${CMD_OPT} -N -e "show tables from $db")

  # 创建数据库备份目录(如果不存在)
  [ -d ${BAK_DIR}/$db ] || mkdir -p ${BAK_DIR}/$db

  # 备份整个数据库
  mysqldump ${CMD_OPT} -B $db | gzip > ${BAK_DIR}/$db/${db}_$(date +%F).sql.gz

  # 备份每个表
  for tab in $TABS
  do
    mysqldump ${CMD_OPT} $db $tab | gzip > ${BAK_DIR}/$db/${db}_${tab}_$(date +%F).sql.gz
  done
done

三、解释脚本代码

  • BAK_DIR:指定备份文件存储的目录路径。
  • CMD_OPT:指定 MySQL 连接选项,包括用户名和密码。
  • EX_DB:指定要排除的系统数据库,例如 information_schemamysqlperformance_schema 和 sys
  • DBS:使用 mysql 命令获取所有非系统数据库的列表。
  • 对于每个数据库 db
    • TABS:使用 mysql 命令获取该数据库中的所有表的列表。
    • 如果备份目录不存在,则创建一个新的备份目录。
    • 使用 mysqldump 命令备份整个数据库,并将备份文件压缩并存储到相应的备份目录中。
    • 对于每个表 tab
      • 使用 mysqldump 命令备份该表,并将备份文件压缩并存储到相应的备份目录中。

四、运行脚本

[root@master node1]# sh bak_v2.sh 

脚本将自动备份每个数据库和它们的表,并将备份文件按照数据库和表的层次结构存储在指定的备份目录中。

五、验证

用tree命令查看,已完成备份

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HMDD 4.0:miRNA-疾病关系数据库

拥有多项自主专利技 术和软件著作权,具 有丰富的数据库平台 搭建经验。 凌恩-盈飞团队 MicroRNA(miRNA)是一类重要的小非编码RNA,在疾病诊断和治疗中发挥着重要作用。人类 MicroRNA 疾病数据库 (HMDD) 为 miRNA 相关医学提供了…

【云原生基础】了解云原生,什么是云原生?

📑前言 本文主要讲了云原生的基本概念和原则的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句&#x…

人工智能师求职面试笔试题及答案汇总

人工智能师求职面试笔试题及答案汇总 1.如何在Python中实现一个生成器? 答:在Python中,生成器是一种特殊类型的迭代器。生成器允许你在需要时才生成值,从而节省内存。生成器函数在Python中是通过关键字yield来实现的。例如&…

leetCode 137. 只出现一次的数字 II(拓展篇) + 模5加法器 + 真值表(数字电路)

leetCode 137. 只出现一次的数字 II 有其他的题解可看我的往期文章: leetCode 137. 只出现一次的数字 II 位运算 模3加法器 真值表(数字电路) 有限状态机-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/134138112?sp…

生成带分表和水印的excel压缩文件

功能描述 将查询结果生成带分表和水印的excel压缩文件 功能点 1、将查询结果导出为excel文件 2、每个表格存放50万条数据&#xff0c;超过50万条数据&#xff0c;生成新的分表 3、生成的表格需要添加水印 4、将生成的全部分表&#xff0c;打包成zip压缩文件 引入依赖 <…

【LeetCode】每日一题 2023_11_2 环和杆(题目质量不错)

文章目录 刷题前唠嗑题目&#xff1a;环和杆题目描述代码与解题思路看看别人的题解 结语 刷题前唠嗑 今天是简单&#xff0c;我快乐了 题目&#xff1a;环和杆 题目链接&#xff1a;2103. 环和杆 题目描述 代码与解题思路 func countPoints(rings string) (ans int) {num…

强化学习的动态规划二

一、典型示例 考虑如下所示的44网格。 图1 非终端状态为S {1, 2, . . . , 14}。在每个状态下有四种可能的行为&#xff0c;A {up, down, right, left}&#xff0c;这些行为除了会将代理从网格上移走外&#xff0c;其他都会确定性地引起相应的状态转换。因此&#xff0c;例如&…

java入门,程序=数据结构+算法

一、前言 在学习java的时候&#xff0c;我印象最深的一句话是&#xff1a;程序数据结构算法&#xff0c;对于写java程序来说&#xff0c;这就是java的入门。 二、java基本数据结构与算法 1、数据类型 java中的数据类型8种基本数据类型&#xff1a; 整型 byte 、short 、int…

32 mysql in 的实现

前言 这里我们主要是来探讨一下 mysql 中 in 的使用, find_in_set 的使用 这两者 在我们实际应用中应该也是 非常常用的了 测试数据表如下 CREATE TABLE tz_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,field1 varchar(16) DEFAULT NULL,field2 varchar(16) DEFAU…

macOS 下 starUML 软件激活方案

starUML每次打开都弹出提示其实挺烦的&#xff0c;于是研究了一下如何 po 解(激活)它。记录一下方法以便以后使用。 我觉得这个软件很好用&#xff0c;大型项目的所有图我都是用这个软件画的。 直接上步骤&#xff01;先关掉starUML 1、安装 asar&#xff0c;以便可以打开 asa…

4+1视图的理解和使用

软件架构 原文&#xff1a; Architectural Blueprints—The “41” View Model of Software Architecture 老外的原文还是很值得一看的&#xff0c;互联网上的很多文章理解得都比较粗浅 什么是软件架构&#xff1f;面试的时候很多面试官可能会问你最近在做的项目的架构。其实这…

通讯录(C语言文件版本)(超详细过程)

❇️❇️❇️❇️❇️❇️❇️❇️❇️❇️❇️❇️❇️ ❇️❇️❇️❇️ 不同的信念 ❇️❇️❇️❇️ ❇️❇️❇️ 决定不同的命运 ❇️❇️❇️ ❇️❇️❇️❇️❇️❇️❇️❇️❇️❇️❇️❇️ &#x1f4d6;通讯录 ✅具备的功能 ℹ️需要的头文件名 #include<…

警惕Mallox勒索病毒的最新变种mallox,您需要知道的预防和恢复方法。

尊敬的读者&#xff1a; 在这个数字时代&#xff0c;恶意软件不再是仅限于技术领域的威胁&#xff0c;而是每个人都可能面临的潜在风险。其中&#xff0c;.mallox勒索病毒崭露头角&#xff0c;它不仅能够以不可思议的方式加密您的数据&#xff0c;还能要求您支付赎金以获取解密…

基于饥饿游戏算法的无人机航迹规划-附代码

基于饥饿游戏算法的无人机航迹规划 文章目录 基于饥饿游戏算法的无人机航迹规划1.饥饿游戏搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用饥饿游戏算法来优化无人机航迹规划。 …

运维基础-Docker容器命令部署

Docker基础知识 安装问题-有podmanCentos8使用yum install docker -y时&#xff0c;默认安装的是podman-docker软件安装docker yum list installed | grep dockeryum -y remove xxxxDocker安装配置下载安装docker启动docker&#xff0c;并设置开机启动下载所需镜像 centos镜像进…

红海云签约澳森集团,为钢铁行业人力资源数字化转型注入新动能

辛集市澳森特钢集团有限公司&#xff08;以下简称“澳森集团”&#xff09;是集钢铁冶炼、轧钢及钢材深加工、新型建材、国际贸易、房地产开发、酒店餐饮、热力供应于一体的大型钢铁联合企业&#xff0c;是华北地区最具品牌影响力和核心竞争力的综合性大型企业集团。 近日&…

批量剪辑:高效处理视频文件的图文解析,AI智剪方法

随着视频文件的数量和种类不断增加&#xff0c;传统的视频剪辑方法往往效率低下且费时费力。为了解决这个问题&#xff0c;批量剪辑和AI智剪技术应运而生。在剪辑过程中&#xff0c;AI智剪可自动调整画面质量、音效、色彩等参数&#xff0c;以保证视频质量。它们可以帮助我们高…

C++定义一个 Student 类,在该类定义中包括:一个数据成员 score(分数)及两个静态数据 成员 total(总分)和学生人数 count

完整代码&#xff1a; /*声明一个Student类&#xff0c;在该类中包括一个数据成员score&#xff08;分数&#xff09;、两个静态数据成员total_score&#xff08;总分&#xff09;和count&#xff08;学生人数&#xff09;&#xff1b;还包括一个成员函数account&#xff08;&…

Sqoop的安装和使用

目录 一.安装 二.导入 1.全量导入 一.MySQL导入HDFS 二.MySQL导入Hive 2.增量导入 一.过滤导入hdfs/hive 二.导出 一.安装 1.下载地址&#xff1a;sqoop下载地址 2.解压 tar -zxvf ./sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C ../module/ 3.改名和配置归属权限 #改名…

IDEA在service面板中不显示微服务的项目

在.idea文件夹下的workspace文件中的project标签内添加如下代码段&#xff0c;&#xff0c;重启idea即可看到所有服务出现在了service面板中 <component name"RunDashboard"><option name"configurationTypes"><set><option value&q…