linux上mysql数据备份(全量备份策略+增量备份策略)

news2024/9/25 17:12:36

执行备份策略前,先做好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 /home

mkdir mysql

cd mysql

mkdir binlog

#为目录设置mysql权限

chown -R mysql.mysql /home/mysql/binlog

chown -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).sql


echo '开始执行 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1026718.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用于无功补偿的固定电容晶闸管控制反应器研究(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

已解决 (org.springframework.beans.factory.BeanCreationException)

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

vue模板语法(下集)

事件处理器 Vue模板语法中的事件处理器是指在Vue组件中绑定DOM事件&#xff0c;当事件发生时执行相应的方法或表达式。常见的事件包括点击事件click、输入事件input、鼠标移入事件mouseover等等。 事件监听可以使用v-on 指令 2.1 事件修饰符 .Vue通过由点(.)表示的指令后缀来调…

近2万签名的句子网络签名ACCESS\EXCEL数据库

虽然已经有《24万QQ伤感签名论坛签名ACCESS数据库》和《2万多条QQ签名论坛签名大全ACCESS数据库》两个论坛签名数据&#xff0c;但是总觉得今天更正经一些&#xff0c;每个句子都可以当作一个好词好句。 分类包含&#xff1a;爱情诗&#xff08;2315&#xff09;、超级拽&#…

IMX6ULL ARM Linux开发板SD卡启动,SD卡的分区与分区格式化创建

一、确定TF卡挂载到ubuntu上的设备名称及分区情况 1. 在ubuntu不接入TF卡的情况下&#xff0c; 使用df -lh /dev/sd*命令查看当前"/dev/sd开头"的设备。 ##输入df -lh /dev/sd*命令&#xff0c;敲回车键 ~$ df -lh /dev/sd* 2.将TF卡接入到ubuntu&#xff0c;再次使…

Compose的一些小Tips - 可组合项的绘制

系列文章 Compose的一些小Tips - 可组合项的生命周期 Compose的一些小Tips - 可组合项的绘制&#xff08;本文&#xff09; Compose的一些小Tips - 列表的优化 前言 本系列介绍Compose的一些常识&#xff0c;了解这些tips并不会让人摇身一变成为大佬&#xff0c;但可以帮助到…

大数据Flink(八十四):SQL语法的DML:窗口聚合

文章目录 SQL语法的DML:窗口聚合 一、滚动窗口(TUMBLE)

R 语言画图中英文字体解决方案

在某些时候&#xff0c;需要在 R 画图中添加中文&#xff0c;但是默认情况下&#xff0c;R 对中文的支持不好。这里推荐一个 showtext 的 R 包。如果需要将含有中文字体的图形保存为 pdf 文件&#xff0c;可以使用下面讲到的方案&#xff0c;最新版的showtext已经支持了 ggplot…

6.1 使用scikit-learn构建模型

6.1 使用scikit-learn构建模型 6.1.1 使用sklearn转换器处理数据6.1.2 将数据集划分为训练集和测试集6.1.3 使用sklearn转换器进行数据预处理与降维1、数据预处理2、PCA降维算法 代码 scikit-learn&#xff08;简称sklearn&#xff09;库整合了多种机器学习算法&#xff0c;可以…

已解决 Bug: SyntaxError - expected expression, got ‘<‘

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

C# ref 学习1

ref 关键字用在四种不同的上下文中&#xff1b; 1.在方法签名和方法调用中&#xff0c;按引用将参数传递给方法。 2.在方法签名中&#xff0c;按引用将值返回给调用方。 3.在成员正文中&#xff0c;指示引用返回值是否作为调用方欲修改的引用被存储在本地&#xff0c;或在一般…

React 全栈体系(十)

第五章 React 路由 三、基本路由使用 7. 代码 - Switch 的使用 7.1 Test /* src/pages/Test/index.jsx */ import React, { Component } from reactexport default class Test extends Component {render() {return (<div><h2>Test....</h2></div>…

拓世AI|轻松涨粉的秘密武器!从选题到配图,AI工具让你事半功倍

2023年的小红书&#xff0c;发展趋势依旧昂扬向上。 最新数据显示&#xff0c;小红书拥有逾3亿的月活用户,且超过80%的用户集中在20-30岁年龄段。这代表什么?广大的年轻用户基数和消费能力!正处于购买力上升期的年轻人,是品牌最想抓住的目标用户。巨大的红利吸引了无数人下场…

自定义开发成绩查询小程序

在当今数字化时代&#xff0c;教育行业借助技术手段提高教学效果。作为老师&#xff0c;拥有一个自己的成绩查询系统可以帮助你更好地管理学生成绩&#xff0c;并提供更及时的反馈。本文将为你详细介绍如何从零开始搭建一个成绩查询系统&#xff0c;让你的教学工作更加高效和便…

MQ - 10 RocketMQ的架构设计与实现

文章目录 导图概述RocketMQ 系统架构协议和网络模块数据存储元数据存储消息数据生产者和消费者生产端消费端HTTP 协议支持和管控操作RocketMQ 从生产到消费的全过程总结导图 概述 RocketMQ 在功能、稳定性、性能层面都比 RabbitMQ 的表现更好 RocketMQ 系统架构 先来看一下 R…

驱动开发练习,platform驱动模型的使用

一.总线模型介绍 linux中将一个挂载在总线上的驱动的驱动模型分为三部分&#xff1a;device、driver和bus&#xff1b; device部分&#xff1a;用来保存设备信息对象&#xff0c;在内核中一个klist_device链表中进行管理&#xff1b; driver部分&#xff1a;用来保存驱动信息对…

Windows:虚拟内存的使用

文章目录 简介如何开启并设置虚拟内存如何查看虚拟内存参考文献 简介 windows里什么是虚拟内存&#xff1f; 其实类似Linux里的交换内存/交换页&#xff0c;即将硬盘上一块空间作为虚拟的内存&#xff0c;当物理内存不足时&#xff0c;则可以将不常用的数据从物理内存中转移到…

如何做到人声和背景音乐分离?记住这个宝藏网站~

在这个短视频盛行的时代&#xff0c;优质的背景音乐会让视频锦上添花&#xff0c;但也会造成类似的问题&#xff1a;想单独使用视频中的某一段人声&#xff0c;但会被背景音乐扰乱视听效果。这时就需要将人声和背景音乐进行分离了&#xff0c;下面来分享一个宝藏网站&#xff0…

CodeArts Check代码检查服务用户声音反馈集锦(5)

作者&#xff1a;gentle_zhou 原文链接&#xff1a;CodeArts Check代码检查服务用户声音反馈集锦&#xff08;5&#xff09;-云社区-华为云 CodeArts Check&#xff08;原CodeCheck&#xff09;&#xff0c;是自主研发的代码检查服务。建立在华为30年自动化源代码静态检查技术…

抖音seo矩阵系统源码分享-技术梳理

抖音seo源码&#xff0c;抖音seo矩阵系统源码技术搭建&#xff0c;抖音seo源码技术开发思路梳理搭建 抖音账号矩阵系统部分源代码分享 if (empty($video_item)) {$this->displayJsonError(参数错误);}$curr_platform json_decode($video_item[dv_platform], 1);$curr_plat…