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 的相关文章

  • mysqldb接口错误

    我对 mysqldb python 的 mysql 模块 有一个非常奇怪的问题 我有一个文件 其中包含用于在表中插入记录的查询 如果我从文件中调用函数 它就可以正常工作 但是当尝试从另一个文件调用其中一个函数时 它会抛出一个 mysql e
  • 更改“Mysql 行大小太大”的限制

    我如何更改限制 行大小太大 gt 8126 将某些列更改为 TEXT 或 BLOB 或使用ROW FORMAT DYNAMIC or ROW FORMAT COMPRESSED可能有帮助 在当前行格式中 BLOB768 字节的前缀内联存储
  • VB.NET 和 MySql UPDATE 查询

    我的代码在这里没有错误 至少在我调试它时没有错误 我使用VS 2010 但我希望发生的是 当我单击添加按钮时 文本框 txtQty 中的数字将添加到当前保存在 数量 列中的数字中 例如 txtQty 100 该列上的当前值为 200 我想将
  • 从sourceforge下载最新版本

    我正在尝试在 bash 脚本中从 Sourceforge 下载最新版本的graphicsmagick wget q https sourceforge net projects graphicsmagick files latest dow
  • MySQL:为什么 IN 子句中的第 5 个 ID 会极大地改变查询计划?

    给出以下两个查询 Query 1 SELECT log id FROM log WHERE user id IN 188858 188886 189854 203623 204072 and type in 14 15 17 ORDER B
  • mysqldump创建空sql文件? [Windows 上的 php 和 mysql]

    我尝试转储数据库 我尝试了指定 mysqldump exe 的完整路径或仅使用 mysqldump 它仍然给我一个 0kb dumpfile sql 细节 编程语言 PHP 数据库 MySql 5 XX 操作系统 服务器 Windows S
  • 搜索多个表 (SQL)

    我需要能够有一个 SQL 查询来使用简单的搜索来搜索我的数据库 这是我的表格现在的样子 Table artists id name Table albums id artistID name Table songs id albumID n
  • PDO 连接字符串:最好的方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想使用 php pdo 制作一个后端应用程序 我发现了很多不同的方法来处理 PDO 连接字符串 我想知道使用 pdo 执行连接字符串的最佳方法
  • 有什么方法可以在MySQL中的表名位置使用变量吗?

    我想在表名称位置使用变量 例如 SELECT FROM targetTableName 然而它会出错 有什么方法可以在MySQL中的表名位置使用变量吗 您显示的查询不起作用有两个原因 插入到查询中的用户定义变量将被视为使用字符串文字 而不是
  • Yii2 从 MySQL 中的表登录的分步指南

    我开始在 Yii2 中迈出第一步 到目前为止 我已经能够编写一个应用程序并将数据库中的表连接到它 就像我在 Yii1 中学到的那样 该表是contacts我的创建视图中的表单将数据发送到数据库 没有任何问题 问题是我只能在 Yii2 内置的
  • mysql:谁阿米?

    有没有whoami类似mysql中的函数 我正在从远程主机连接到 mysql 命令行 我不确定我的 IP 地址是否解析为域名 我想看到类似的东西 mysql gt whoami User Host username resolved hos
  • MySQL中如何重置表的自增列

    我有一张桌子 它的第一列sl是自动递增的 填充表格后 我删除了前两行 第一个条目有sl1 是否可以重置为1维持AI 我正在使用 PHP MyAdmin ALTER TABLE tablename AUTO INCREMENT 1
  • 保护存储过程

    我想知道是否有一种方法可以对某些用户隐藏存储过程的文本 我正在使用 MySQL 5 1 48 和 Net Connector 6 2 3 以及 Visual Studio 2008 SP1 我在 MySQL 中有两个用户 一个是 root
  • 导入mysql数据库出错

    我导出我的数据库并导出到另一台计算机使用 phpmyadmin 但它错误 静态分析 分析过程中发现2处错误 意想不到的角色 靠近位置 53 的 无法识别的语句类型 位置 1 的 div 附近 SQL查询 div class error h1
  • 表被指定两次作为 INSERT 的目标和单独的数据源

    我做了这个查询 但它给了我错误 就像标题中一样 INSERT INTO data waktu vaksinasi id binatang id vaksin tanggal vaksin status vaksin VALUES 1 1 S
  • Navicat 中的 MySQL 视图 - 如何定义“主键”?

    当我在 Navicat 中定义视图时 经常会收到以下消息 xxx 没有主键 对此表的更新将使用以下伪语句完成 UPDATE xxx SET ModifiedFieldsAndValues WHERE AllFieldsAndOldValue
  • 在评论中查找不同风格的日期

    我还有一个问题要问preg match 我有一个表 其中评论的日期写在评论本身内 手动 现在我需要提取该日期并将其放置在不同的列中 我发现评论和日期的样式如下 id warning sent warning date 6109 2011 0
  • CMake:使用其他平台的生成器。如何?

    如何使用 CMake 在 Linux 上生成 Visual Studio 项目文件 你不能 您必须在 Windows 上运行 CMake 才能为 Visual Studio 生成
  • MySQL max_allowed_pa​​cket 参数有什么问题?

    我需要增加 max allowed pa cket 参数 以适应一些理论上非常大的项目 如果我将此参数设置为 10M 那么与设置为 1M 或 4M 相比 我要支付什么价格 如果有的话 感谢您的任何意见 托马斯 我找到了这个解释 http w
  • Python 线程与 Linux 中的多处理

    基于此question https stackoverflow com questions 807506 threads vs processes in linux我假设创建新流程应该几乎和创造新线程在Linux中 然而 很少的测试显示出截

随机推荐

  • 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