linux上mysql数据备份(全量备份策略+增量备份策略)
执行备份策略前,先做好scp命令的准备
解决思路:
生成SSH公钥/私钥后,您需要将公钥添加到服务器上,从而使服务器可以使用该公钥来验证您的身份。
生成SSH公钥/私钥的命令为
ssh-keygen -t rsa -b 4096
什么都不用输入,直接下一步即可
生成SSH公钥/私钥后,您需要将公钥添加到服务器上,从而使服务器可以使用该公钥来验证您的身份。-p指定端口
ssh-copy-id -p85 root@112.94.31.288
添加成功后,您可以使用以下命令测试身份验证是否成功:
ssh -p85 root@112.94.31.288
出现一下截图表示成功
mysql数据备份
先查看my.cnf是在哪个目录
locate my.cnf
二.mysql数据备份
先查看my.cnf是在哪个目录
locate my.cnf
查看mysql默认读取的my.cnf
mysql --help|grep 'my.cnf'
1.增量备份(本地服务器+正式环境)
1.1 开启二进制并配置my.cnf
查看是否开启二进制日志,输入一下命令
show variables like 'log_bin';
如果出现一下截图的话,表示二进制日志未开启。
vi /etc/my.cnf目录下开启二进制日志
ps:自己定义二进制日志存存放的路径,默认是放在/var/lib/mysql 路径
先新建目录
cd /homemkdir mysqlcd mysqlmkdir binlog#为目录设置mysql权限chown -R mysql.mysql /home/mysql/binlogchown -R mysql.mysql /home/mysql/
在/etc/my.cnf增加配置
#二进制存放的文件格式
log-bin=/home/mysql/binlog/mysql-bin
#当前机器的服务ID
server-id=254
#二进制日志的格式
binlog_format = MIXED
#设置binlog清理时间
expire_logs_days = 30#看到我们写入的sql语句格式
binlog_rows_query_log_events = 1
#binlog缓存大小
binlog_cache_size = 4m
#binlog每个日志文件大小 默认大小,如果超过该值,则产生新的二进制文件,后缀名+1
max_binlog_size = 1024m
二进制日志的格式
A) binlog_format 在mysql5.7默认是row, 不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨
例如:update a < 10 的数据,statement模式会记录这一条sql,而row模式的话,会记录a=1,a=2到a=9所有的记录的更改
B) STATEMENT模式 每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题
C) MIXED模式 以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。
重启mysql
systemctl restart mysqld
可能会出现报错
解决方案:
执行一下命令
setenforce 0
然后再进行重启即可
查看mysql状态
systemctl status mysqld
查看日志
tail -2000f /var/log/mysqld.log
去查配置是否生效,可以看出,已经生效了
1.2 bin日志的备份和还原演示
(1) 首先我们先建立一个test数据库,并且里面有temp_test 表
这时候我们执行下命令 可以输出二进制日志
mysqlbinlog --no-defaults --base64-output=decode-rows -v /home/mysql/binlog/mysql-bin.000002
可以看到,对应的sql语句都记录下来了
- 根据时间点增量进行备份还原
然后再把temp_test这张表给删除
然后我们看一下bin日志
mysqlbinlog --no-defaults --base64-output=decode-rows -v /home/mysql/binlog/mysql-bin.000002
根据时间点进行恢复
mysqlbinlog --no-defaults --start-datetime='2023-09-06 09:21:13' --stop-datetime='2023-09-06 09:26:37' mysql-bin.000002 | mysql -u root -p
输入mysql密码
可以看到这段时间范围的数据已恢复,注意,开始时间和结束时间要大于日志记录的时间,比如结束时间记录的是 2023-09-06 09:26:36 你要写成 2023-09-06 09:26:37
1.3 定时执行备份脚本(本地服务器+正式环境)
本地服务器要新建目录脚本,以时间进行命名
在目录/home/backups/mysql/binlogdata 下新建 date.sh(本地服务器)
#!/bin/bash
echo '开始新建binlogdata 目录'
DATE=`date +%Y%m%d` #定义时间的格式,注意需要反引号。
DIR=/home/backups/mysql/binlogdata #这里定义创建文件夹的地址。
mkdir -p $DIR/$DATE #创建文件夹的语句,把上面两个变量引用进来。
echo '新建binlogdata 目录完成'
赋值权限
chmod 777 date.sh
并且也设置脚本执行的时间
crontab -e
输入备份的时间(每天23:59都进行备份作业)
58 23 * * * /home/backups/mysql/binlogdata/date.sh> /tmp/load.log 2>&1
在/home/mysql/binlogdata目录下新建脚本(正式服务器)
新建binlog.sh脚本
touch binlog.sh#并赋予权限
chmod 777 binlog.sh
添加下面脚本内容
#!/bin/bash
DATE=`date +%Y%m%d` #定义时间的格式,注意需要反引号。
REMOTEDIR=/home/backups/mysql/binlogdata #远程本地服务器地址路径localData=/home/mysql/binlog/ #本机数据地址路径
echo "开始进行数据迁移到本地服务器"
expect << EOF
set timeout -1
spawn scp -P 85 -r $localData root@112.94.31.288:$REMOTEDIR/$DATE
expect eof
exit
EOF
echo "数据迁移到本地服务器结束"
执行备份策略
crontab -e
输入备份的时间(每天23:59都进行备份作业)
59 23 * * * /home/mysql/binlog.sh> /tmp/load.log 2>&1
查看任务列表
crontab -l
2.全量备份(只需正式环境部署脚本)
增量备份策略:每周六凌晨1点执行备份策略
在 /home/mysql/allsql 目录下新建脚本
touch backupsql.sh
输入一下内容
#!/bin/bash
echo '开始新建目录'
DATE=`date +%Y%m%d` #定义时间的格式,注意需要反引号。
NYSQLDIR=/home/mysql/allsql #这里定义创建文件夹的地址。
mkdir -p $NYSQLDIR/$DATE #创建文件夹的语句,把上面两个变量引用进来。
REMOTEDIR=/home/backups/mysql/allsql #远程本地服务器配置路径
echo '新建目录完成'echo '开始执行 smkj-pro-backend备份操作'
mysqldump -u dev -pPassword@hwgy01dev --databases smkj-pro-backend > $NYSQLDIR/$DATE/smkj-pro-backend_$(date +%Y%m%d_%H%M).sqlecho '开始执行 smkj-pro-backend备份操作'
echo '=================================='echo '开始执行 smkj-pro-base备份操作'
mysqldump -u dev -pPassword@hwgy01dev --databases smkj-pro-base > $NYSQLDIR/$DATE/smkj-pro-base_$(date +%Y%m%d_%H%M).sql
echo '开始执行 smkj-pro-base备份操作'
echo '=================================='echo '开始执行 smkj-pro-shop备份操作'
mysqldump -u dev -pPassword@hwgy01dev --databases smkj-pro-shop > $NYSQLDIR/$DATE/smkj-pro-shop_$(date +%Y%m%d_%H%M).sql
echo '开始执行 smkj-pro-shop备份操作'
echo '=================================='echo '开始执行 smkj-pro-user备份操作'
mysqldump -u dev -pPassword@hwgy01dev --databases smkj-pro-user > $NYSQLDIR/$DATE/smkj-pro-user_$(date +%Y%m%d_%H%M).sql
echo '开始执行 smkj-pro-user备份操作'
echo '=================================='echo '开始执行 smkj-pro-job备份操作'
mysqldump -u dev -pPassword@hwgy01dev --databases smkj-pro-job > $NYSQLDIR/$DATE/smkj-pro-job_$(date +%Y%m%d_%H%M).sql
echo '开始执行 smkj-pro-job备份操作'echo '======全部备份结束========='echo "开始进行数据迁移到本地服务器"
expect << EOF
set timeout -1
spawn scp -P 85 -r $NYSQLDIR/$DATE root@112.94.31.288:$REMOTEDIR/
expect eof
exit
EOF
echo "数据迁移到本地服务器结束"
执行定时任务启动脚本
crontab -e
输入 (意思是每天凌晨20份执行脚本,考虑到目前数据库数据整体大小不大,后续数据库量大再进行策略调整)
20 0 * * * /home/mysql/allsql/backupsql.sh > /tmp/load.log 2>&1
查看任务列表
crontab -l
相关文章:

linux上mysql数据备份(全量备份策略+增量备份策略)
执行备份策略前,先做好scp命令的准备 解决思路: 生成SSH公钥/私钥后,您需要将公钥添加到服务器上,从而使服务器可以使用该公钥来验证您的身份。 生成SSH公钥/私钥的命令为 ssh-keygen -t rsa -b 4096什么都不用输入,…...
PHP实现DFA算法,查找关键词
# 添加关键词 到全局字典dict里面 protected function addWord($strWord) {$len mb_strlen($strWord,UTF-8);$curNode &$this->dict;for ($index 0; $index < $len; $index) {$word mb_substr($strWord, $index, 1, UTF-8);if (!isset($curNode[$word])) {$curNo…...

JTS:08 JTS图形相交
这里写目录标题 版本JTS disjoint intersects俩个图形不相交俩个图形 边相交俩个图形 内部相交俩个图形 点相交 版本 org.locationtech.jts:jts-core:1.19.0 链接: github JTS disjoint intersects 不相交的 九交模型FF*FF**** 相交的 九交模型 [T********] [*T*******] [**…...

深挖 ThreadLocal 底层原理?它有什么用?学会之后手撕面试官
目录 1. ThreadLocal 的主要功能? 2. ThreadLocal 代码举例 3. ThreadLocal 源码分析 3.1 ThreadLocal 的 get 方法源码解析 3.2 ThreadLocal 的 set 方法源码解析 3.3 ThreadLocal 的 createMap 方法源码解析 3.4 ThreadLocal 的 set 方法总结 4. 为什么En…...
sort()排序函数(c++)
文章目录 sort()排序函数(c)一、原理二、使用方法(一)头文件(二)使用语法1.方式一(默认)2.方式二:定义升序或降序3.方式三:自定义 sort()排序函数(…...

如何评估测试用例的优先级?
评估测试用例的优先级,有助于我们及早发现和解决可能对系统稳定性和功能完整性产生重大影响的问题,助于提高测试质量,提高用户满意度。 如果没有做好测试用例的优先级评估,往往容易造成对系统关键功能和高风险场景测试的忽略&…...

510758-28-8,用于标记蛋白质和酶的配体TBTA
产品简介:Tris(benzyltriazolylmethyl)amine (TBTA)是一种配体,能作为生化工具用于标记蛋白质和酶。 CAS号:510758-28-8 中文名:三[(1-苄基-1H-1,2,3-三唑-4-基)甲基]胺 英文名:TBTA 化学式:C30H30N10…...
Jtti:云服务器ftp不能访问端口如何解决
如果您的云服务器上的FTP服务无法访问端口,可能有多种原因导致这种情况。以下是一些可能的解决方法: 检查FTP服务状态: 首先,请确保您的FTP服务器正在运行。您可以使用以下命令来检查FTP服务器的状态,具体命令可能因FT…...

云服务器租用价格表概览_阿里云腾讯云华为云
云服务器租用价格多少钱一年?阿腾云分享阿里云、腾讯云和华为云的云服务器租用价格表:阿里云2核2G服务器108元一年起、腾讯云2核2G3M带宽轻量服务器95元一年、华为云2核2G3M云耀L实例89元一年起,阿腾云分享更多关于云服务器租用价格明细&…...
E. Iva Pav -前缀和 + 二分 +位运算
题面 分析: 赛时一直纠结于与运算前缀和不可逆,导致没有思路,但是发现行不通并没有及时思考别的解决办法导致一条路走到黑,阻碍了自己的思维,在今年的网络赛赛时也是一样,行不通的时候就没心思去重新想其…...

新手学习:ArcGIS对shp文件裁剪
新手学习:ArcGIS对SHP文件裁剪 新手学习 记录每个步骤,因为有很多控件可能刚开始还不熟悉,根本不知道在哪里,所以写的比较详细。 1.添加要裁剪的shp文件 2.查看shp文件的地理坐标系 双击shp文件,就可以查看shp文件的…...

Java 设计模式——抽象工厂模式
目录 1.概念2.结构3.实现4.优缺点5.使用场景6.模式扩展7.JDK源码解析——Collection.iterator方法 1.概念 (1)Java 设计模式——工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机等。这些工厂只生产同种类产品…...

如何使用ChatGPT构建一个Web应用程序?
围绕ChatGPT的最大卖点之一是它可以成为一种有效的编程工具。其想法是这样的:你用自然语言描述需求,该聊天机器人生成满足该需求的代码。但是ChatGPT在这方面到底有多好呢? 还有什么比亲自测试一下更好的方法呢?我们让ChatGPT从头…...

关闭手机广告的步骤
关闭手机广告的步骤 小米 1.设置→小米账号→声明与条款→系统广告→系统工具广告→关闭 2.设置→应用设置→应用管理→右上角三个点→设置→关闭“应用升级提醒”&“资源推荐” 3.桌面左滑打开负一屏→划到底部→设置→服务管理→选择关闭项目 4.桌面→打开任意文件夹…...

【Verilog 教程】6.6Verilog 仿真激励
关键词:testbench,仿真,文件读写 Verilog 代码设计完成后,还需要进行重要的步骤,即逻辑功能仿真。仿真激励文件称之为 testbench,放在各设计模块的顶层,以便对模块进行系统性的例化调用进行仿真…...

Win/Mac版Scitools Understand教育版申请
这里写目录标题 前言教育版申请流程教育账号申请 前言 上篇文章为大家介绍了Scitools Understand软件,通过领取的反馈来看有很多朋友都想用这个软件,但是我的网盘里只存了windows的pojie版,没有mac版的,我没有去网上找相关的资源…...

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 C: 班级活动
[蓝桥杯 2023 国 B] 班级活动 【问题描述】 小明的老师准备组织一次班级活动。班上一共有 n n n 名( n n n 为偶数)同学,老师想把所有的同学进行分组,每两名同学一组。为了公平,老师给每名同学随机分配了一个 n n …...
YOLOv8改进新颖的Gather-and-Distribute机制,低阶高阶新颖融合,增强了多尺度特征融合能力,实现了延迟和准确性的理想平衡
💡本篇内容:YOLOv8改进新颖的Gather-and-Distribute机制,低阶高阶新颖融合,增强了多尺度特征融合能力,实现了延迟和准确性的理想平衡 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,YOL…...

面试算法13:二维子矩阵的数字之和
题目 输入一个二维矩阵,如何计算给定左上角坐标和右下角坐标的子矩阵的数字之和?对于同一个二维矩阵,计算子矩阵的数字之和的函数可能由于输入不同的坐标而被反复调用多次。例如,输入图2.1中的二维矩阵,以及左上角坐标…...
Vue安装插件时候中遇到冲突依赖解决方案
错误如下: npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: vue/eslint-config-standard6.1.0 npm ERR! Found: eslint-plugin-vue8.7.1 npm ERR! node_modules/eslint-plugin-vue npm ERR! dev eslint-pl…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...