MySQL使用Xtrabackup备份到AWS存储桶
1.安装Xtrabackup
cd /tmp
wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.33-28/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm
yum -y localinstall percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm
xtrabackup --version

2.安装AWS CLI
2.1 安装
yum -y install python3-pip
pip3 install awscli
2.2设置 AWS CLI 配置信息
aws_access_key_id="AKI............................" ##AWS密钥
aws_secret_access_key="JF.................................." ##AWS密钥
aws_default_region="sa-east-1" #这个是S3桶的区域,根据你开通的区域修改
aws_output_format="json" #这个是默认的
2.3使用 aws configure 命令设置 AWS CLI 配置信息
aws configure set aws_access_key_id $aws_access_key_id
aws configure set aws_secret_access_key $aws_secret_access_key
aws configure set default.region $aws_default_region
aws configure set default.output $aws_output_format
2.4验证是否配置成功
aws s3 ls

3.mysql授权备份用户
外部终端执行,不需要进入库
#mysql授权建立一个授权函数
check() {mysql=/opt/lucky/apps/mysql/bin/mysqlsock=/opt/lucky/data/data_16303/mysql.sockpasswd='123456' #改成自己本地的mysql密码sql_command="GRANT BACKUP_ADMIN ON *.* TO 'root'@'localhost'; FLUSH PRIVILEGES;"$mysql -uroot -p$passwd -S $sock -e "$sql_command"
}
##执行授权函数
check
4.写入备份脚本
4.1创建一个放备份脚本的目录
脚本有两个地方需要修改的,一个是桶名字,一个是你的mysql密码
mkdir -p /data/backup/
vim /data/backup/backup_script.sh
#!/bin/bash
## --------------------- start config --------------------- ##
## xtrabackup安装目录
XTRABACKUP_DIR="/usr/bin"
## 备份存放目录
BACKUP_DIR="/opt/backup"
## mysql安装目录
MYSQL_DIR="/opt/lucky/apps/mysql"
## 配置文件目录
MYSQL_CNF="/opt/lucky/conf/my_16303.cnf"
## 数据库用户
MYSQL_USER="root"
## 数据库密码
MYSQL_PASSWORD="密码"
## 数据库端口
MYSQL_PORT=16303
## 数据库sock文件
MYSQL_SOCK="/opt/lucky/data/data_16303/mysql.sock"## S3存储桶名称
S3_BUCKET="awx的桶名"## --------------------- end config --------------------- ## ## 如果任何语句的执行结果不是true则应该退出。
set -e## 当前天
CURRENT_DATE=$(date +%F)## 当前小时(以24小时制表示)
CURRENT_HOUR=$(date +%H)## AWS CLI 命令路径
aws_cmd=$(find / -name aws)function full_backup(){## 描述:xtrabackup 全库备份PARA1=$1## 开始时间START_TIME=$(date +"%s")## 当前日期作为备份文件名后缀BACKUP_SUFFIX=$(date +"%Y%m%d%H")if [ ! -d "$BACKUP_DIR/$PARA1/full" ]; thenmkdir $BACKUP_DIR/$PARA1/full -p## 全库备份echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> Starting full backup."$XTRABACKUP_DIR/xtrabackup --defaults-file=$MYSQL_CNF -u$MYSQL_USER -p$MYSQL_PASSWORD -S$MYSQL_SOCK --backup --target-dir=$BACKUP_DIR/$PARA1/full > $BACKUP_DIR/$PARA1/full/full_backup_$BACKUP_SUFFIX.log 2>&1 echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> Backup logs in $BACKUP_DIR/$PARA1/full/full_backup_$BACKUP_SUFFIX.log."echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> Backup complete, size: $(du $BACKUP_DIR/$PARA1 --max-depth=1 -hl | grep 'full' | awk '{print $1}')."echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> Backup complete, using time: "$(($(date +"%s") - $START_TIME))" seconds."## 打包全量备份tar -zcf $BACKUP_DIR/$PARA1/full_$BACKUP_SUFFIX.tar.gz $BACKUP_DIR/$PARA1/full## 把打包好的压缩包上传到AWS S3$aws_cmd s3 cp $BACKUP_DIR/$PARA1/full_$BACKUP_SUFFIX.tar.gz s3://$S3_BUCKET/echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> Full backup has been compressed to $BACKUP_DIR/$PARA1/full_$BACKUP_SUFFIX.tar.gz."## 上传成功后删除备份目录和备份压缩包rm -rf $BACKUP_DIR/$PARA1/fullrm -f $BACKUP_DIR/$PARA1/full_$BACKUP_SUFFIX.tar.gzecho ''elseecho $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> Full backup directory already exists for the current hour."echo ''fi
}function delete_seven_days_ago(){## 描述:使用AWS命令删除S3桶内7天前的备份文件# 7天前的日期seven_days_ago=$(date -d "7 days ago" +%Y%m%d)# 列出存储桶中的文件files=$($aws_cmd s3 ls s3://$S3_BUCKET/)while read -r line; do# 获取文件名file_name=$(echo "$line" | awk '{print $4}')# 提取文件名中的日期部分(full_2023091207.tar.gz -> 2023091207)date_part=$(echo "$file_name" | grep -oE '[0-9]{10}')# 检查文件日期是否早于7天前if [[ -n "$date_part" && "$date_part" < "$seven_days_ago" ]]; thenecho "Deleting $file_name..."# 删除文件$aws_cmd s3 rm "s3://$S3_BUCKET/$file_name"echo "File $file_name deleted."fidone <<< "$files"}
## 每小时执行一次全量备份
full_backup $CURRENT_DATE
## 删除7天前的备份文件
delete_seven_days_ago
4.2赋予执行权限
chmod +x /data/backup/backup_script.sh
5.设定定时任务
0 * * * * /bin/bash /data/backup/backup_script.sh >> /data/backup/crontab_backup.log 2>&1

相关文章:
MySQL使用Xtrabackup备份到AWS存储桶
1.安装Xtrabackup cd /tmp wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.33-28/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm yum -y localinstall percona-xtrabackup-80-8.0.33-28.1.el7.x86…...
(高阶)Redis 7 第11讲 BIGKEY 优化篇
面试题 问题答案如何在海量数据中查询某一固定前缀的Keyscan生产环境如何限制 keys */FLUSHDB/FLUSHALL 等危险命令,防止误删误用# 修改配置文件 rename-command keys "" rename-command flushdb "" rename-command flushall ""如何使用MEMORY U…...
一阶差分和二阶差分概念及其举例
一阶差分和二阶差分概念及其举例 目录 一阶差分和二阶差分概念及其举例1、一阶差分1.1 概念1.2 举例 2、二阶差分2.1 概念2.2 举例 1、一阶差分 1.1 概念 一阶差分是指对一个数列中的每个元素,计算其与其前一个元素之差的操作。 1.2 举例 举例来说,对…...
使用自定义注解和SpringAOP捕获Service层异常,并处理自定义异常
目录 一 自定义异常二 自定义注解三 注解切面处理类四 使用 一 自定义异常 /*** 自定义参数为null异常*/ public class NoParamsException extends Exception {//用详细信息指定一个异常public NoParamsException(String message){super(message);}//用指定的详细信息和原因构…...
Kotlin(六) 类
目录 创建类 调用类 类的继承------open 构造函数 创建类 创建类和创建java文件一样,选择需要创建的目录New→Kotlin File/Class Kotlin中也是使用class关键字来声明一个类的,这一点和Java一致。现在我们可以在这个类中加入字段和函数来丰富它的功…...
蓝桥杯官网练习题(灌溉)
题目描述 小蓝负责花园的灌溉工作。 花园可以看成一个 n 行 m 列的方格图形。中间有一部分位置上安装有出水管。 小蓝可以控制一个按钮同时打开所有的出水管,打开时,有出水管的位置可以被认为已经灌溉好。 每经过一分钟,水就会向四面扩展…...
数据结构:树的概念和结构
文章目录 1. 树的概念2. 树的结构3. 树的相关概念4. 树的表示孩子表示法双亲表示法孩子兄弟表示法 5. 树在实际中的应用5. 树在实际中的应用 1. 树的概念 树是一种非线性的数据结构,它是由 n (n > 0)个有限结点组成一个具有层次关系的. 把它叫做树是因为它看起来像一棵倒挂的…...
【GIS】栅格转面报错:ERROR 000864输入栅格: 输入不在定义的属性域内。 ERROR 000863: 无效的 GP 数据类型
问题: 栅格转面(矢量)时,ArcGIS窗口显示:ERROR 000864输入栅格: 输入不在定义的属性域内。 ERROR 000863: 无效的 GP 数据类型. 原因: 栅格转面时输入的栅格数据集的字段必须是整型. 解决办法: 使用Spatial Analyst中的转为整型工具,将栅格数据转为整型后再进行栅格转面的操作…...
32 WEB漏洞-文件操作之文件下载读取全解
目录 介绍利用获取数据库配置文件文件名,参数值,目录符号 涉及案例:Pikachu-文件下载测试-参数Zdns-文件下载真实测试-功能点小米路由器-文件读取真实测试-漏洞RoarCTF2019-文件读取真题复现-比赛百度杯2017二月-Zone真题复现-比赛拓展 下载和读取都差不…...
Linux之history、tab、alias、命令执行顺序、管道符以及exit
目录 Linux之history、tab、alias、命令执行顺序、管道符以及exit history历史命令 格式 参数 修改默认记录历史命令条数 案例 案例1 --- 显示history历史记录中出现次数最高的top10 案例2 --- 增加history显示的时间信息 命令与文件名补全 --- tab 命令别名 格式 案…...
vcomp100.dll丢失怎样修复?5个靠谱的修复方法分享
VCOMP100.DLL 是由微软打造的动态链接库,它对于一些图形密集型应用,例如Photoshop,以及多款知名游戏如巫师3的运行至关重要。 如果操作系统在启动应用程序时无法找到此vcomp100.dll,则会出现vcomp100.dll丢失或未找到错误。 如果D…...
Vue3自定义指令(directive)
文章目录 前言一、Vue3指令钩子函数二、自定义指令的两种方式1.局部使用例子1:鉴权例子2:拖拽 2.全局使用例子1:监听宽高指令例子2:监听是否出现在视口 总结 前言 此文章主要讲了vue3中自定义指令的使用,以及一些WebA…...
大数据课程L9——网站流量项目的实时业务处理代码
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握网站流量项目的SparkStreaming代码; ⚪ 掌握网站流量项目的HBaseUtil代码; ⚪ 掌握网站流量项目的MysqlUtil代码; ⚪ 掌握网站流量项目的LogBean代码; ⚪ 掌握网站流量项目的To…...
【2023最新B站评论爬虫】用python爬取上千条哔哩哔哩评论
文章目录 一、爬取目标二、展示爬取结果三、爬虫代码四、同步视频五、附完整源码 您好,我是 马哥python说,一枚10年程序猿。 一、爬取目标 之前,我分享过一些B站的爬虫: 【Python爬虫案例】用Python爬取李子柒B站视频数据 【Pyt…...
mysql设置max_sp_recursion_depth,sql_mode
mysql 中设置 @@max_sp_recursion_depth select @@max_sp_recursion_depth; 今天在mysql 写存储过程递归调用时,发现老是报错(recovery limit 0(as set by the max_sp_recursion_depth));后来百度下发现 max_sp_recursion_depth设置不对; 这个修改涉及到全局和session级修…...
论文阅读:SERE: Exploring Feature Self-relation for Self-supervised Transformer
Related Work Self-supervised 学习目的是在无人工标注的情况下通过自定制的任务(hand-crafted pretext tasks)学习丰富的表示。 Abstract 使用自监督学习为卷积网络(CNN)学习表示已经被验证对视觉任务有效。作为CNN的一种替代…...
遥感数据与作物模型同化应用:PROSAIL模型、DSSAT模型、参数敏感性分析、数据同化算法、模型耦合、精度验证等主要环节
查看原文>>>遥感数据与作物模型同化实践技术应用 基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具,可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系,为不同条件下作物生长发育及…...
Navicat15工具连接PostgreSQL15失败
1.错误现象及原因 错误现象: 错误原因: postgresql 15版本中 pg_database 系统表把 datlastsysoid 列删除了,所以造成了此错误。 2.解决方法 (1)将Navicat工具更新到官网最新版本。 (2)更换…...
开源AI家庭自动化助手-手机控制家庭智能家居服务
产品简介 将本地控制和隐私放在首位的开源家庭自动化。由全球开发者和 DIY 爱好者社区提供支持。非常适合在 Raspberry Pi 或本地服务器上运行。 功能介绍 1. 控制面板在控制面板,你可以查看家庭的灯光,温度,门铃,音响…...
解决CSS定位错乱/疑难杂症的终极绝招==》从样式污染开始排查
我们接手他人或者第三方项目的时候,有时候会遇到一些莫名其妙的问题: 明明自己的样式写的没有问题,但是网页上却显示的乱七八糟的,或者效果完全出不来。 案例如下: 这里只用了很典型的flex弹性布局,并没有…...
硬核盘点|2026年好用AI论文写作工具榜单,毕业论文免费写还合规
2026 年实测 10 款主流 AI 论文工具,千笔AI以全流程覆盖 语义级降重 免费查重领跑综合榜;ThouPen 稳坐留学生毕业全流程工具头把交椅;免费工具中DeepSeek Scholar、豆包学术版表现亮眼,30 分钟即可生成万字高质量初稿࿰…...
VS Code终端切换全攻略:从PowerShell到CMD的保姆级教程(含常见问题解决)
VS Code终端切换全攻略:从PowerShell到CMD的保姆级教程(含常见问题解决) 在开发者的日常工作中,终端是不可或缺的工具。VS Code作为最受欢迎的代码编辑器之一,其内置终端功能强大且高度可定制。然而,许多开…...
不止于搭建:用DVWA靶场在Kali上复现SQL注入与文件上传漏洞实战
不止于搭建:用DVWA靶场在Kali上复现SQL注入与文件上传漏洞实战 当你第一次在Kali Linux上成功运行DVWA靶场时,那种成就感就像解锁了新世界的大门。但真正的乐趣才刚刚开始——这个看似简单的靶场,其实是网络安全爱好者最好的实战训练场。本文…...
别再只懂概念了!用JSEncrypt库5分钟搞定前端RSA密码加密实战
前端RSA加密实战:用JSEncrypt保护用户密码传输安全 1. 为什么前端需要加密? 在Web应用开发中,用户登录是最基础也最敏感的操作之一。传统表单提交直接将密码以明文形式发送到服务器,这在网络传输过程中存在被截获的风险。即使使…...
别再手动搬虚拟机了!vSphere DRS全自动负载均衡保姆级配置指南(附规则避坑)
别再手动搬虚拟机了!vSphere DRS全自动负载均衡保姆级配置指南(附规则避坑) 想象一下这样的场景:凌晨三点,你被监控告警惊醒——某台ESXi主机CPU负载飙升至95%,而同一集群内其他主机资源利用率不足30%。你不…...
Anaconda Prompt卡在solving environment?别慌,三步搞定清华镜像源配置(附.condarc文件)
Anaconda环境配置卡顿?清华镜像源优化全指南 刚接触Python数据科学的新手们,十有八九会在Anaconda环境配置这一步栽跟头。特别是当看到命令行窗口里"solving environment"的提示一直转圈却迟迟没有进展时,那种等待的煎熬简直让人抓…...
构建大规模数据导入系统:技术选型与工程实践
在现代数据密集型应用中,将海量数据高效、可靠地导入目标存储系统是一项基础但极具挑战的任务。表面上看,“写入数据库”只是一个简单的操作;然而,当数据规模达到TB级、业务逻辑涉及合并去重、系统架构包含多个存储引擎时…...
Qwen3.5-35B-A3B-AWQ-4bit镜像技术亮点:服务重启自动恢复+模型热加载+无状态前端设计
Qwen3.5-35B-A3B-AWQ-4bit镜像技术亮点:服务重启自动恢复模型热加载无状态前端设计 1. 平台核心能力介绍 Qwen3.5-35B-A3B-AWQ-4bit是一款专为视觉多模态理解设计的量化模型,它将强大的图文理解能力与高效的部署特性完美结合。这个模型特别适合需要分析…...
机器人手臂相机 vs 抓手相机:5个关键区别与选型指南(附避坑技巧)
机器人手臂相机 vs 抓手相机:5个关键区别与选型指南(附避坑技巧) 在工业自动化领域,视觉引导系统如同机器人的"眼睛",而相机安装位置的选择往往决定了整个系统的精度与可靠性。当工程师面对手臂相机…...
bully使用教程
bully是一款用于破解Wi-Fi Protected Setup(WPS)的工具,主要通过暴力破解WPS PIN码来获取无线网络的访问权限。WPS是一种简化Wi-Fi设备连接的协议,由于其设计缺陷,使得通过暴力破解PIN码来获取网络密钥成为可能。bully…...
