MySQL和Minio数据备份
文章目录
- 一、MySQL数据备份
- 1. MySQL客户端
- 2. 数据增量备份
- 3. 数据增量还原
- 4. 数据全量备份
- 5. 数据全量还原
- 二、Minio数据备份
- 1. Minio客户端
- 2. 数据备份
- 3. 数据还原
- 三、其他参考
- 1. 设置定时备份
- 2. 数据拷贝到其他服务器
- 3. MySQL其他语句
一、MySQL数据备份
Linux环境:Ubuntu 20.04.6,MySQL版本:8.2,在服务器端操作
1. MySQL客户端
mkdir -p /home/backup/mysql && cd /home/backup/mysql
mkdir day && mkdir week
sudo apt install mysql-client-core-8.0 # 备份需要
sudo apt install mysql-server-core-8.0 # 日志还原需要
- 查询MySQL版本信息
mysqladmin -h127.0.0.1 -P3306 -uroot -p123456 version
- 登录、查询log_bin是否开启(ON)、查询当前使用日志
mysql -h127.0.0.1 -P3306 -uroot -p123456
mysql> show variables like 'log_bin';
mysql> show master status;
2. 数据增量备份
- backup.sh
#!/bin/bash
backupDir=/home/backup/mysql/day # 增量备份目录
backupLogFile=$backupDir/backup.log # 增量备份日志
mysqlDir=/home/mysql/data # mysql-bin.*日志存放目录
binFile=/home/mysql/data/mysql-bin.index # mysql-bin.index位置mysqladmin -h127.0.0.1 -P3306 -uroot -p123456 flush-logs
echo `` >> $backupLogFile
echo `date +"%Y-%m-%d %H:%M:%S"` backup >> $backupLogFile
count=`wc -l $binFile |awk '{print $1}'`
num=0
for file in `cat $binFile`
dobase=`basename $file`num=`expr $num + 1`if [ $num -ne $count ] && (! test -e $backupDir/$base)thencp $mysqlDir/$base $backupDirecho $base >> $backupLogFilefi
done
3. 数据增量还原
- 数据库客户端操作
mysql> flush logs; # 刷新日志
mysql> show binlog events in 'mysql-bin.000023'; # 分析需要还原的日志数据
- Shell环境操作
mysqlbinlog --stop-position=509 mysql-bin.000023 | mysql -h127.0.0.1 -P3306 -uroot -p123456
- 参数说明
--start-position= 起始pos点
--stop-position= 结束pos点
--start-datetime= 起始时间点
--stop-datetime= 结束时间点
-d 指定数据库
4. 数据全量备份
- backupAll.sh
#!/bin/bash
backupDir=/home/backup/mysql/week # 备份目录
backupLogFile=$backupDir/backup.log # 备份日志
dbName=manage # 需要备份的数据库
day=3 # 保留几天的备份mysqldump -h127.0.0.1 -P3306 -uroot -p123456 --single-transaction $dbName|gzip > $backupDir/$dbName-`date +%Y%m%d%H%M%S`.sql.gz
echo `` >> $backupLogFile
echo "backup $dbName-`date +%Y%m%d%H%M%S`.sql.gz" >> $backupLogFilefind $backupDir -type f -name "$dbName-*" -mtime +$day -exec rm {} \;
5. 数据全量还原
- Shell环境操作
gzip -d 数据库名-20231211121350.sql.gz
mysql -h127.0.0.1 -P3306 -uroot -p123456
mysql> drop database 数据库名;
mysql> create database 数据库名;
mysql> use 数据库名;
mysql> source 数据库名-20231211121350.sql;
二、Minio数据备份
Linux环境:Ubuntu 20.04.6,Minio版本:2023-12-13T23-28-55Z,在服务器端操作
1. Minio客户端
mkdir -p /home/backup/minio && cd /home/backup/minio && mkdir day
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
- 设置别名、查询桶
./mc alias set minio_backup http://127.0.0.1:9000 admin 123456
./mc ls minio_backup
2. 数据备份
- backup.sh
#!/bin/bash
backupDir=/home/backup/minio/day # 备份目录
backupLogFile=$backupDir/backup.log # 备份日志
bucket=test # 存储桶名称
directory= # 存储桶中的目录, 例如 $(date +%Y%m), 空为桶
day=3 # 保留几天的备份
backupFile=$bucket$directory-$(date +%Y%m%d%H%M%S).tar.gz # 备份文件名mkdir $backupDir/tmp
/home/backup/minio/mc alias set minio_backup http://127.0.0.1:9000 admin 123456
/home/backup/minio/mc cp --recursive minio_backup/$bucket/$directory $backupDir/tmpcd $backupDir/tmp
tar -zcf $backupDir/$backupFile *
rm -rf $backupDir/tmp
echo `` >> $backupLogFile
echo "backup $backupFile" >> $backupLogFilefind $backupDir -type f -name "$bucket$directory-*" -mtime +$day -exec rm {} \;
3. 数据还原
tar -xzvf 备份文件.tar.gz -C 数据文件夹
/home/backup/minio/mc cp --recursive 数据文件夹 minio_backup/桶或目录
三、其他参考
1. 设置定时备份
- /etc/crontab
0 1 * * * root bash /home/backup/minio/backup.sh # 每天1点执行
0 2 * * * root bash /home/backup/mysql/backup.sh # 每天2点执行
0 3 ** 1 root bash /home/backup/mysql/backupAll.sh # 每周一3点执行
0 4 * * * root bash /home/backup/copyData.sh # 每天4点执行
- 使crontab生效
crontab /etc/crontab
2. 数据拷贝到其他服务器
- 安装expect, 自动输入密码
sudo apt install expect
- copyData.sh
#!/usr/bin/expect
# 只传输变化部分、支持断点续传、同步服务器都需要安装rsyncset timeout -1
spawn rsync -auxvLP -e "ssh -p 22" /home/backup root@192.168.6.213:/home/
expect "*password*"
send "密码\r"
expect eof
- 执行
expect copyData.sh
3. MySQL其他语句
show variables like 'long_query_time'; # 慢查询时间阈值
show variables like '%slow_query_log%'; # 慢查询是否开启
show global status like '%Slow_queries%' # 查询慢查询记录条数
# 记录集最多的10个SQL
mysqldumpslow -s r -t 10 /home/mysql/data/0be775e9b5ed-slow.log | more
# 访问次数最多的10个SQL
mysqldumpslow -s c -t 10 /home/mysql/data/0be775e9b5ed-slow.log | more
# 时间排序的前10个SQL
mysqldumpslow -s t -t 10 /home/mysql/data/0be775e9b5ed-slow.log | more
相关文章:
MySQL和Minio数据备份
文章目录 一、MySQL数据备份1. MySQL客户端2. 数据增量备份3. 数据增量还原4. 数据全量备份5. 数据全量还原 二、Minio数据备份1. Minio客户端2. 数据备份3. 数据还原 三、其他参考1. 设置定时备份2. 数据拷贝到其他服务器3. MySQL其他语句 一、MySQL数据备份 Linux环境&#…...
在Go中过滤范型集合:性能回顾
在一个真实的 Golang 场景中使用泛型,同时寻找与 Stream filter(Predicate<? super T> predicate)和 Python list comprehension 等同的函数。我没有依赖现有的包,而是选择自己写一个过滤函数,以达到学习的目的 func filterStrings(c…...

MATLAB 最小二乘直线拟合方法二 (36)
MATLAB 最小二乘直线拟合方法二 (36) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 这里介绍另一种拟合直线点云的方法,更为简单方便,结果与前者一致,主要内容直接复制代码使用即可,原理简单看代码即可,下面是具体的实现和拟合结果展示 二、算法实现 1.代码 代…...

Python 实现:OCR在图片中提取文字(基于Gradio实现)
Paddle OCR PaddleOCR 基于深度学习技术实现的,使用十分简单。 先看效果 可以看出来识别效果还是不错的,里面的“湿”字识别成了繁体字。如果不是连体字,就不会出现这个问题。 1.测试环境 操作系统:Win10 Python:3…...
idea插件开发报错: ZipException opening “slf4j.jar“: zip END header not found
错误信息 E:\idea-workspace\#idea-plugin\JSON2Object\src\main\java\com\hgy\plugin\json2object\GenerateAction.java:1: 错误: 无法访问com.hgy.plugin.json2object package com.hgy.plugin.json2object; ^ZipException opening "slf4j.jar": zip END header no…...

【Linux】多线程编程
目录 1. 线程基础知识 2. 线程创建 3. 线程ID(TID) 4. 线程终止 5. 线程取消 6. 线程等待 7. 线程分离 8. 线程互斥 8.1 初始化互斥量 8.2 销毁互斥量 8.3 互斥量加锁和解锁 9. 可重入和线程安全 10. 线程同步之条件变量 10.1 初始化条件变…...

【Mysql】InnoDB的表空间(九)
概述 表空间是一个在 InnoDB 中比较抽象的概念,对于系统表空间来说,对应着文件系统中一个或多个实际文件;而对于每个独立表空间来说,对应着文件系统中一个名为表名.ibd 的实际文件。可以把表空间想象成由很多个页组成的池子&…...
【09】ES6:Set 和 Map 数据结构
一、Set 1、基本语法 定义 Set 是一系列无序、没有重复值的数据集合。数组是一系列有序(下标索引)的数据集合。 Set 本身是一个构造函数,用来生成 Set 数据结构。 const s new Set() [2, 3, 5, 4, 5, 2, 2].forEach(x > s.add(x))fo…...
Java通过documents4j和libreoffice把word转为pdf
文章目录 word转pdf的相关第三方jar说明Linux系统安装LibreOffice在线安装离线安装word转pdf验证 Java工具类代码 word转pdf的相关第三方jar说明 docx4j 免费开源、稍微复杂点的word,样式完全乱了,且xalan升级为2.7.3后会报错。poi 免费开源、官方文档少…...

物联网时代的访问控制研究综述
A survey on Access Control in the Age of Internet of Things 文章目录 A B S T R A C T引言A. Comparison Between This Paper and Existing SurveysB. Contributions II.ACCESS CONTROL BACKGROUNDIII. ACCESS CONTROL CHALLENGES IN IOT SEARCHA. Characteristics of IoT …...

【产品经理】需求池和版本树
在这个人人都是产品经理的时代,每位入行的产品人进阶速度与到达高度各有不同。本文作者结合自身三年产品行业的经历,根据案例拆解产品行业的极简研发过程、需求池、版本树、产品自我优化等相关具体方法论。 一、产品研发的极简过程 1. 产品概述 产品就…...
Qt图像处理-OpenCv中Mat与QImage互转
Qt图像处理时需要OpenCv中Mat与QImage互转,具体代码如下 创建EditPhoto,头文件,使用前需要配置好opencv #include <QObject> #include <QImage> #include <QDebug>#include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> …...

构建外卖小程序:技术代码实践
在这个数字化的时代,外卖小程序已经成为餐饮业的一项重要工具。在本文中,我们将通过一些简单而实用的技术代码,向您展示如何构建一个基本的外卖小程序。我们将使用微信小程序平台作为例子,但这些原理同样适用于其他小程序平台。 …...

IDEA中显示方法、类注释信息
目录 一、IDEA测试版本及环境二、操作步骤2.1 鼠标悬停在某一个方法上,从而显示方法的注释信息2.2 调用方法时同步显示方法注释信息2.3 在new一个对象时,这个对象有很多重载的构造方法,想要重载的构造函数都显示出来 一、IDEA测试版本及环境 …...
《数据结构、算法与应用C++语言描述》- 堆排序 - 借助priority_queue的C++实现
堆排序 完整可编译运行代码见:Github::Data-Structures-Algorithms-and-Applications/_27HeapSort 定义 借助堆进行排序。先用n个待排序的元素初始化一个小根堆,然后从堆中逐个提取(即删除元素)元素。初始化的时间复杂度为O(n),大根堆中每…...

10.CSS浮动
CSS浮动 1.介绍 在最初,浮动是用来实现文字环绕图片效果的,现在浮动是主流的页面布局方式之一 2.作用 让元素脱离标准流,同一级的浮动的元素可以并排在一排显示 3.元素浮动后的特点 脱离文档流不管浮动前是什么元素,浮动后&…...
Angular 2 学习笔记
Angular 2 应用主要由以下 几个部分组成: 1、模块 (Modules): 2、组件 (Components): 3、模板 (Templates): 4、元数据 (Metadata): 5、数据绑定 (Data Binding) 6、指令 (Directives) 7、服务 (Servic…...

xcode 修改 target 中设备朝向崩溃
修改xcode的target中的设备朝向导致崩溃。 从日志上看好像没有什么特别的信息。 之后想了想,感觉这个应该还是跟xcode的配置有关系,不过改动的地方好像也只有plist。 就又翻腾了半天plist中的各种配置项,再把所有的用户权限提示相关的东西之…...

ZLMediaKit 编译以及测试(Centos 7.9 环境)
文章目录 一、前言二、编译器1、获取代码2、编译器2.1 编译器版本要求2.2 安装编译器 3、安装cmake4、依赖库4.1 依赖库列表4.2 安装依赖库4.2.1 安装libssl-dev和libsdl-dev4.2.2 安装 ffmpeg-devel依赖和ffmpeg依赖 三、构建和编译项目(启用WebRTC功能)…...

汽车清除积碳和清洗节气门
汽车清除积碳和清洗节气门 汽车需要清除积碳的部位检查积碳方法: 清除积碳和清洗节气门风险:燃油宝 第一次清除积碳1万公里2万公里3万公里--5万公里6万公里以上 汽车需要清除积碳的部位 节气门喷油嘴进气道燃烧室 检查积碳方法: 建议每3到5…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...

FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...

jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
JavaScript 标签加载
目录 JavaScript 标签加载script 标签的 async 和 defer 属性,分别代表什么,有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...
手动给中文分词和 直接用神经网络RNN做有什么区别
手动分词和基于神经网络(如 RNN)的自动分词在原理、实现方式和效果上有显著差异,以下是核心对比: 1. 实现原理对比 对比维度手动分词(规则 / 词典驱动)神经网络 RNN 分词(数据驱动)…...

NineData数据库DevOps功能全面支持百度智能云向量数据库 VectorDB,助力企业 AI 应用高效落地
NineData 的数据库 DevOps 解决方案已完成对百度智能云向量数据库 VectorDB 的全链路适配,成为国内首批提供 VectorDB 原生操作能力的服务商。此次合作聚焦 AI 开发核心场景,通过标准化 SQL 工作台与细粒度权限管控两大能力,助力企业安全高效…...