Mysql8的备份脚本 ,基于xtrabackup8.0

2023-10-29

Mysql8的备份脚本 ,基于xtrabackup8.0

注意:xtrabackup8.0与mysql8直接的版本依赖强,安装xtra后可查看支持的Mysql8版本。

xtrabackup8 下载页面:https://centos.pkgs.org/7/percona-x86_64/percona-xtrabackup-80-8.0.13-1.el7.x86_64.rpm.html

脚本建议在测试库测试好之后再上生产

#!/bin/bash

# 备份策略(可以根据需求调整备份策略)
# 周三全量备份
# 周一、周二、周四、周五、周六、周日增量备份
# 全量备份目录
Full=/data/xtr_mysql8/fullbak

# 增量备份目录
Incr=/data/xtr_mysql8/incrbak

# MySQL相关配置信息
DB_HOST='localhost'
DB_PORT=3309
DB_USER='backup'
DB_PASS='backup@2022'
DB_SOCK=/tmp/mysql.sock
DB_CONF=/etc/my.cnf

# 备份的日志文件
baklog=/data/xtr_mysql8/back.log

# 备份开始
echo -e "\n\n" | tee -a ${baklog} 2>&1
echo -e "备份开始...\n" | tee -a ${baklog} 2>&1

# 判断当前日期是周几
Week=`date +%w`

case ${Week} in

3)
# 判断今日为周三则进行全量备份
# 判断主目录是否存在,不存在则创建
if [ ! -d "${Full}" ];then

mkdir ${Full}

fi

# 第一步 创建本次的备份目录
FullBakTime=`date +%Y%m%d-%H%M%S`
mkdir -p ${Full}/${FullBakTime}_${Week}
FullBakDir=${Full}/${FullBakTime}_${Week}

# 第二步 开始全量备份

echo -e "日期: ${FullBakTime}\n" | tee -a ${baklog} 2>&1

echo -e "星期: ${Week}\n" | tee -a ${baklog} 2>&1

echo -e "本次全量备份目录为 ${FullBakDir}\n" | tee -a ${baklog} 2>&1

xtrabackup --defaults-file=${DB_CONF} --host=${DB_HOST} --user=${DB_USER} --password=${DB_PASS} --socket=${DB_SOCK} --backup --target-dir=${FullBakDir} --no-timestamp

dirStorage=`du -sh ${FullBakDir}`

echo -e "本次备份数据 ${dirStorage}\n" | tee -a ${baklog} 2>&1

echo -e "备份完成...\n\n\n" | tee -a ${baklog} 2>&1

exit 0

;;

0|1|2|4|5|6)

# 判断今日为周日、周一、周二、周四、周五、周六时,进行增量备份。由于周四时基于前一天的全量备份进行增量备份的,而周一、周二、周五、周六、周日是基于前一天的增量备份进行增量备份的,所以再进行一次判断。

case ${Week} in

4)

# 基于上一次全量备份的增量备份

# 判断主目录是否存在,不存在则创建

if [ ! -d "${Incr}" ];then

mkdir ${Incr}

fi

# 第一步 获取上一次全量备份

LatestFullDir=`ls -lth ${Full}|grep -v total|head -1|awk -F '[ ]+' '{print $NF}'`

CompliteLatestFullDir=${Full}/${LatestFullDir}

# 第二步 创建备份目录

IncrBakTime=`date +%Y%m%d-%H%M%S`

mkdir -p ${Incr}/${IncrBakTime}_${Week}

IncrBakDir=${Incr}/${IncrBakTime}_${Week}

# 第三步 开始增量备份

echo -e "日期: ${IncrBakTime}\n" | tee -a ${baklog} 2>&1

echo -e "星期: ${Week}\n" | tee -a ${baklog} 2>&1

echo -e "本次备份为基于上一次全量备份${CompliteLatestFullDir}的增量备份\n" | tee -a ${baklog} 2>&1

echo -e "本次增量备份目录为: ${IncrBakDir}\n" | tee -a ${baklog} 2>&1

xtrabackup --defaults-file=${DB_CONF} --host=${DB_HOST} --user=${DB_USER} --password=${DB_PASS} --socket=${DB_SOCK} --backup --parallel=4 --target-dir=${IncrBakDir} --incremental-basedir=${CompliteLatestFullDir} --no-timestamp

dirStorage=`du -sh ${IncrBakDir}`

echo -e "本次备份数据 ${dirStorage}\n" | tee -a ${baklog} 2>&1

echo -e "备份完成...\n\n\n" | tee -a ${baklog} 2>&1

exit 0

;;

0|1|2|5|6)

# 基于上一次增量备份的增量备份

# 判断主目录是否存在,不存在则创建

if [ ! -d "${Incr}" ];then

mkdir ${Incr}

fi

# 第一步 获取上一次增量备份

LatestIncrDir=`ls -lth ${Incr}|grep -v total|head -1|awk -F '[ ]+' '{print $NF}'`

CompliteLatestIncrDir=${Incr}/${LatestIncrDir}

# 第二步 创建备份目录

IncrBakTime=`date +%Y%m%d-%H%M%S`

mkdir -p ${Incr}/${IncrBakTime}_${Week}

IncrBakDir=${Incr}/${IncrBakTime}_${Week}

# 第三步 开始增量备份

echo -e "日期: ${IncrBakTime}\n" | tee -a ${baklog} 2>&1

echo -e "星期: ${Week}\n" | tee -a ${baklog} 2>&1

echo -e "本次备份为基于上一次增量备份${CompliteLatestIncrDir}的增量备份\n" | tee -a ${baklog} 2>&1

echo -e "本次增量备份目录为: ${IncrBakDir}\n" | tee -a ${baklog} 2>&1

xtrabackup --defaults-file=${DB_CONF} --host=${DB_HOST} --user=${DB_USER} --password=${DB_PASS} --socket=${DB_SOCK} --backup --parallel=4 --target-dir=${IncrBakDir} --incremental-basedir=${CompliteLatestIncrDir} --no-timestamp

dirStorage=`du -sh ${IncrBakDir}`

echo -e "本次备份数据 ${dirStorage}\n" | tee -a ${baklog} 2>&1

echo -e "备份完成...\n\n\n" | tee -a ${baklog} 2>&1

exit 0

;;

*)

echo -e "Error\n"

exit 1

;;

esac

;;

*)

echo -e "Error\n"

exit 1

;;

esac
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql8的备份脚本 ,基于xtrabackup8.0 的相关文章

  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • .net-core:ILDASM / ILASM 的等效项

    net core 是否有相当于 ILDASM ILASM 的功能 具体来说 我正在寻找在 Linux 上运行的东西 因此为什么是 net core ildasm 和 ilasm 工具都是使用此存储库中的 CoreCLR 构建的 https
  • 内核的panic()函数是否完全冻结所有其他进程?

    我想确认内核的panic 功能和其他类似kernel halt and machine halt 一旦触发 保证机器完全冻结 那么 所有的内核和用户进程都被冻结了吗 是panic 可以被调度程序中断吗 中断处理程序仍然可以执行吗 用例 如果
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • 绕过 dev/urandom|random 进行测试

    我想编写一个功能测试用例 用已知的随机数值来测试程序 我已经在单元测试期间用模拟对其进行了测试 但我也希望用于功能测试 当然不是全部 最简单的方法是什么 dev urandom仅覆盖一个进程 有没有办法做类似的事情chroot对于单个文件并
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它
  • 将庞大数据库从亚马逊RDS导出到本地mysql

    我在 Amazon RDS 上有一个 mysql 数据库 大约 600GB 数据 我需要将其移回本地专用服务器 但我不知道从哪里开始 每次我尝试初始化 sqldump 时它都会冻结 有没有办法将其移至 S3 甚至可能在开始下载之前将其分成更
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • 如何检测Mysql/innodb中的死锁?

    我知道在 Innodb 中使用事务时不可避免地会发生死锁 并且如果应用程序代码正确处理死锁 它们是无害的 正如手册所说 只需再试一次 所以我想知道 如何检测死锁 死锁是否会发出一些特殊的 mysql 错误号 如果重要的话 我正在使用 PHP
  • 如何通过Elasticsearch模糊匹配电子邮件或电话?

    我想通过 Elasticsearch 对电子邮件或电话进行模糊匹配 例如 匹配所有以以下结尾的电子邮件 gmail com or 匹配所有电话开头136 我知道我可以使用通配符 query wildcard email gmail com
  • MYSQL - 使用逗号分隔字符串作为变量输入的存储过程

    我希望有人能够提供帮助 我已经创建了我的第一个存储过程 没什么花哨的 但是我遇到了问题 我想给它一个字符串输入 例如 1 2 3 4 5 然后它执行一个简单的操作SELECT FROM TABLE WHERE EAN IN VAR 所以存储
  • cdc_acm:无法设置 dtr/rts - 无法与 USB cdc 设备通信

    我试图使用 pic24fj128gb206 枚举 usb cdc 设备 设备似乎已正确枚举 但是当我将设备连接到 Linux PC 时 我从内核收到以下警告消息 cdc acm 1 8 1 6 7 1 0 failed to set dtr
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • 通过触发器应用表的列权限

    现在 我有一个名为 Members 的表 其中包含内容 分为联系人数据 银行数据 现在 管理员应该能够创建 更新 删除用户 这些用户保存在另一个表中 该表只能访问管理员 用户应该获得自己的 mysql 用户帐户 管理员还应该能够设置权限 例
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读

随机推荐

  • 2023.5.14-参加蓝桥杯省赛(一等奖)

    J今天 周日 上午参加了今年的蓝桥杯省赛 这是蓝桥杯进入教育部白名单第一年的省赛 最主要的变化是 参赛免费了 省了不少的银两 感谢ASC老师的提醒 本以为去年 STEAM初赛进入 top1 就像往年一样不再需要参加省赛了 没想到今年必须要参
  • JSONOBject的fluentPut(key,value)方法:可链式设置元素

    一个示例说明 源码并不难懂 public JSONObject fluentPut String key Object value map put key value return this
  • VMware12提示 已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。

    VMware12提示 已将该虚拟机配置为使用 64 位客户机操作系统 但是 无法执行 64 位操作 此主机支持 Intel VT x 但 Intel VT x 处于禁用状态 解决办法 下载LeoMoon CPU V 检查一下CPU VT x
  • Mac系统下一些终端指令的操作

    一 Mac 终端操作命令 1 tab 键可以自动补齐命令 2 命令格式 命令名称 命令选项 命令参数 3 pwd 显示当前目录 文件的路径 4 ls 显示当前文件夹下包含的文件与文件夹信息 5 ls a 显示当前文件夹下所有的文件和文件夹包
  • RSA非对称加密算法详解

    加密概要 加密技术是对信息进行编码和解码的技术 编码是把原来可读信息 又称明文 译成代码形式 又称密文 其逆过程就是解码 解密 加密技术的要点是加密算法 加密算法可以分为三类 1 对称加密 2 非对称加密 3 不可逆加密 对称加密算法 加密
  • ARM驱动开发

    驱动 以来内核编译 依赖内核执行 驱动可以同时执行多份代码 没main 驱动是依赖内核的框架和操作硬件的过程 一 Linux系统组成 app 0 3G 系统调用 软中断 kernel 3 4G 5种功能 进程管理 进程的创建 销毁 调度等功
  • 灰狼算法(GWO)优化xgboost的分类预测模型,多输入单输出模型,GWO-xgboost分类预测。

    清空环境变量 warning off 关闭报警信息 close all 关闭开启的图窗 clear 清空变量 clc 清空命令行 添加路径 addpath xgboost toolbox 读取数据 res xlsread 数据集 xlsx
  • Git的分支结构都有哪些

    主分支 实际开发中 一个仓库 通常只放一个项目 主要存在两条主分支 master与develop分支 这个两个分支的生命周期是整个项目周期 就是说 自创建出来就不会删除 会随着项目的不断开发不断的往里面添加代码 master分支是创建git
  • 最齐全的场景ue4模型素材,速来收藏

    家人们 最近我找到了一个很好用的场景ue4模型免费素材网站 资源贼多 重点是免费 白嫖一时爽 一直白嫖一直爽 嘿嘿嘿 感兴趣的可以进去看看 本人曾经也是废大把时间寻找资源 质量还不咋地 但是通过朋友安利 知道了一个很好的网站 爱给网 里面资
  • 从一个含有特殊的字符长字符串中获取对应字符方式。

    一 将字符串进行字符切割 前言 业务需求是在一个字段里存储一个题目的多个选项的内容分别使用 隔开 比如编制项目建议书 编制项目建设纲要或设计纲要 设计评审 合同洽谈 现在需要将字符串获取之后将选项内容切割出来 使用 符进行切割 思路 1 获
  • 陈关荣

    2019年12月12日 自然 Nature 杂志登出了玛加丽塔 萨拉斯 法尔格拉斯 Margarita Salas Falgueras 1938年11月30日 2019年11月7日 去世的讣告 萨拉斯于11月7日去世 享年80岁 她是把现代
  • java学习之增删改查的客户信息管理软件

    1 MVC的设计模式 模型层 控制层 视图层 2 构建4个包 com ca bean 实体对象 用来封装客户信息 com ca service 对象的管理模块 内部用数组管理一组Customer对象 并提供相应的添加 修改 删除和遍历方法
  • 利用jQuery做tab栏切换

    1 结构布局 div class tab div class tab list ul li class current 商品介绍 li li 规格与包装 li li 售后保障 li li 商品评价 5000 li li 手机社区 li ul
  • 什么是ABI

    复杂度2 5 机密度3 5 最后更新2021 04 24 ABI是Application Binary Interface的缩写 任何写过代码的码农都知道什么是API 这是平台系统为应用程序提供的预先写好的模块 完成一系列的基础功能 那么
  • linux var log目录作用,Linux系统/var/log/journal/垃圾日志清理 - 米扑博客

    CentOS系统中有两个日志服务 分别是传统的 rsyslog 和 systemd journal ls l etc logrotate d rw r r 1 root root 91 Apr 11 2018 bootlog rw r r
  • 李宏毅深度学习-回归

    目录 1 梯度下降 2 bias和variance 1 梯度下降 利用梯度下降寻找最优解是 如果在该点的梯度为负 向下 则需要增加参数大小 如果梯度为正 向上 则需要减小参数大小 计算时 减去学习率 偏导表示和梯度方向反向 即负的就要增加
  • Handler消息传递机制(一)

    1 定义 一套 Android 消息传递机制 2 作用 在多线程的应用场景中 将工作线程中需更新UI的操作信息 传递到 UI主线程 从而实现 工作线程对UI的更新处理 最终实现异步消息的处理 3 意义 问 为什么要用 Handler消息传递
  • python中保存np.save出错

    python中保存np save出错 代码如下 求大神解释一下
  • HTTP(S)协议详解

    1 什么是协议 协议 网络协议的简称 网络协议是通信计算机双方必须共同遵从的一组约定 如怎么样建立连接 怎么样互相识别等 只有遵守这个约定 计算机之间才能相互通信交流 粗俗理解协议就是 比如你的电脑和我的电脑要通信 我们之间的交流为什么互相
  • Mysql8的备份脚本 ,基于xtrabackup8.0

    Mysql8的备份脚本 基于xtrabackup8 0 注意 xtrabackup8 0与mysql8直接的版本依赖强 安装xtra后可查看支持的Mysql8版本 xtrabackup8 下载页面 https centos pkgs org