mysql数据库完全备份和增量备份与恢复
mysql数据备份:
数据备份方式
- 物理备份:
- 冷备:.冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库
- 热备:一般用于保证服务正常不间断运行,用两台机器作为服务机器,一台用于实际数据库操作应用,另外一台实时的从前者中获取数据以保持数据一致.如果当前的机器熄火,备份的机器立马取代当前的机器继续提供服务
- 冷备常用命令:cp tar scp …
- 逻辑备份:
- mysqldump //备份命令
- mysql /恢复数据命令
1. 物理备份及恢复:
1.1. 备份操作:
实例1:
mkdir -p /data/mysql
cp -r /var/lib/mysql/ /data/mysql/mysql.bak
实例2:
tar -zcvf /data/mysql/mysql.tar.gz /var/lib/mysql
实例3:
#在备份数据库创建备份目录:
mkdir /data
#备份数据
scp -r /var/lib/mysql 192.168.2.20:/data/mysql.bak
2. Mysqldump备份:
- mysqldump备份完成之前,会把所有的表锁住,导致无法写入。
2.1. 只备份表,不备份数据本身:
备份mysql数据库中的所有表,但是不会自动生成创建mysql数据库的语句:
[root@www ~]# mysqldump -uroot -p1234 mysql > /root/mysql.sql
2.2. 备份数据库与表:
备份mysql数据库中的所有表,并且会生成创建mysql数据库的SQL语句,也就是导入时不需要先创建数据库:
[root@www ~]# mysqldump -uroot -p1234 --databases mysql > /root/mysql.sql
2.3. 备份多个数据库:
备份数据库MySQL、ys到/root/ys_mysql.sql
[root@www ~]# mysqldump -uroot -p1234 --databases mysql ys > /root/ys_mysql.sql
2.4. 备份所有数据库:
[root@www ~]# mysqldump -uroot -p1234 --all-databases >/root/all.sql
或者:
[root@www ~]# mysqldump -uroot -p1234 -A >/root/all.sql
2.5. 备份mysql数据库,并且记录pos点:
[root@www ~]# mysqldump -uroot -p1234 --master-data mysql > /root/mysql.sql
2.6. 备份数据库,并刷新日志:
[root@www ~]# mysqldump -uroot -p1234 --master-data --flush-logs mysql > /root/mysql.sql
2.3. 数据库的恢复:
[root@www ~]# mysqldump -uroot -p1234 --databases ys > /root/ys.sql
首先把ys数据库删除
mysql> drop database ys;
Query OK, 31 rows affected, 2 warnings (0.06 sec)mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| performance_schema |
| mysql |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> exit
Bye
## 恢复数据库ys
[root@www ~]# mysql -uroot -p1234 < /root/ys.sql
[root@www ~]# mysql -uroot -p1234
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| performance_schema |
| sys |
| mysql |
| ys |
+--------------------+
4 rows in set (0.00 sec)或者是:mysql> source /root/ys.sql; ---source 命令导入数据库需要先登录到数库终端:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| performance_schema |
| sys |
| mysql |
| ys |
+--------------------+
4 rows in set (0.00 sec)
3. 增量备份与恢复
- 增量备份与恢复的特点
- 增量备份的优点是没有重复数据,备份量不大,时间短。但缺点也很明显,需要建立在上次完全备份及完全备份之后所有的增量才能恢复。
3.1. binlog日志概述:
- 什么是binlog日志?
- 也称作二进制日志
- mysql服务日志文件的一种
- 记录除查询外的所有SQL语句
- 可用于数据备份和恢复
- 配置mysql主从同步的必要条件
3.2. 启动日志
| 配置项 | 用途 |
|---|---|
| server_id=数字 | 指定id值(1-255) |
| log_bin[=目录名/文件名] | 启用binlog日志 |
| max_binlog_size=数值m | 指定binlog日志文件容量(默认1G) |
[root@localhost ~]# vim /etc/my.cnf
修改内容如下:
[mysqld]
.....
log_bin
server_id=100
[root@localhost ~]# systemctl restart mysqld
###查看binlog日志是否开启
登录数据库
mysql> show master status;
+----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| localhost-bin.000001 | 154 | | | |
+----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
- binlog相关文件默认存放在/var/lib/mysql/
- 主机名-bin.index 索引文件
- 主机名-bin.000001 第一个二进制文件
- 主机名-bin.000002 第二个二进制文件
…
- 正常情况下binlog二进制文件默认1G容量,超过重新创建新的binlog二进制文件,想生成新的binlog日志文件方法如下:
1.重启mysql服务
systemctl restart mysqld
或者:
mysql -root -p密码 -e 'flush logs'
或者:
mysqldump --flush-logs
3.3.增量备份
- 定时执行flush logs方法重新创建新的日志,生成二进制文件序列,并及时把这些文件保存到一个安全的地方即完成了一个时间段的增量备份
##创建数据库
create database school default charset=utf8mb4;
##创建表格
use school;
create table stuinfo(-> id int primary key auto_increment,-> name char(20) not null,-> sex enum('boy','girl') not null,-> age int unsigned not null,-> likes set('run','go fishing','Listen to the music','Play basketball') default'run,play basketball');
##往stuinfo表格里插入数据
insert into stuinfo values(1,'bob','boy',25,'run,go fishing');
##查看表格数据:
select * from stuinfo;
+----+------+-----+-----+----------------+
| id | name | sex | age | likes |
+----+------+-----+-----+----------------+
| 1 | bob | boy | 25 | run,go fishing |
+----+------+-----+-----+----------------+
##退出数据库并使用mysqldump完全备份school数据库并重新创建一个binlog文件。
exit ---退出数据库
mkdir /data ---创建存放数据的目录
mysqldump -uroot -p1234 --flush-logs -B school > /data/$(date +%Y-%m-%d)-school.sql
ls /data/
2023-02-14-school.sql
##进入数据库继续往表格里插入数据
use school;
insert into stuinfo values(2,'tom','boy',28,'run,play basketball');
select * from stuinfo;
+----+------+-----+-----+---------------------+
| id | name | sex | age | likes |
+----+------+-----+-----+---------------------+
| 1 | bob | boy | 25 | run,go fishing |
| 2 | tom | boy | 28 | run,Play basketball |
+----+------+-----+-----+---------------------+
##退出数据库生成增量备份文件
exit; ---退出数据库
mysql -uroot -p1234 -e "show master status;flush logs" ----查看当前的binlog文件名称,然后创建一个新的binlog文件
+----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| localhost-bin.000002 | 436 | | | |
+----------------------+----------+--------------+------------------+-------------------+
##把localhost-bin.000002文件拷贝到/data下并修改当前日期作为增量备份文件
cp -r /var/lib/mysql/localhost-bin.000002 /data/
mv /data/localhost-bin.000002 /data/$(date +%Y-%m-%d)-localhost-bin.000002
ls /data/
2023-02-14-localhost-bin.000002 2023-02-14-school.sql
3.4. 数据恢复
##删除school的所有表
drop table stuinfo;
##查看还有其他表格
show tables;
+------------------+
| Tables_in_school |
+------------------+
+------------------+
##退出数据库,恢复数据
quit;
mysql -uroot -p1234 < /data/2023-02-14-school.sql ---先恢复完全备份的文件
mysqlbinlog /data/2023-02-14-localhost-bin.000002 | mysql -uroot -p1234 --恢复增量备份的部分。
3.5.恢复指定范围的数据
- 语法:
mysqlbinlog 选项 binlog日志名称 | mysql -uroot -p密码

3.5.1. 查看binlog日志文件
[root@localhost ~]# mysqlbinlog /data/2023-02-14-localhost-bin.000002
可以看的出来这种日志格式不易看懂
3.5.2. 修改日志记录格式
##查看当前日志记录格式
mysql> show variables like "binlog_format";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW |
+---------------+-------+
1 row in set (0.00 sec)
三种记录格式:
1.statement 报表模式
2.row 行模式
3.mixed 混合模式##修改日志记录格式:
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
....
binlog_format=mixed
[root@localhost ~]# systemctl restart mysqld
###查看是否修改成功
mysql> show variables like "binlog_format";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | MIXED |
+---------------+-------+
1 row in set (0.01 sec)
3.5.3. 恢复指定范围数据:
##往stuinfo表格中插入数据:
insert into stuinfo values(3,'grace','girl',20,'run,play basketball');
insert into stuinfo values(4,'andy','boy',23,'play basketball');
select * from stuinfo;
+----+-------+------+-----+---------------------+
| id | name | sex | age | likes |
+----+-------+------+-----+---------------------+
| 1 | bob | boy | 25 | run,go fishing |
| 2 | tom | boy | 28 | run,Play basketball |
| 3 | grace | girl | 20 | run,Play basketball |
| 4 | andy | boy | 23 | Play basketball |
+----+-------+------+-----+---------------------+
##删除grace这个数据
delete from stuinfo where name='grace';
select * from stuinfo;
+----+------+-----+-----+---------------------+
| id | name | sex | age | likes |
+----+------+-----+-----+---------------------+
| 1 | bob | boy | 25 | run,go fishing |
| 2 | tom | boy | 28 | run,Play basketball |
| 4 | andy | boy | 23 | Play basketball |
+----+------+-----+-----+---------------------+
##查看当前的binlog日志文件名称;
show master status;
+----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| localhost-bin.000006 | 1095 | | | |
+----------------------+----------+--------------+------------------+-------------------+
### 恢复grace的数据信息
[root@localhost ~]# mysqlbinlog /var/lib/mysql/localhost-bin.000006 ---查看binlog日志内容
# at 302 ---起始pos值
#230214 17:27:39 server id 100 end_log_pos 449 CRC32 0x2dbf2580 Query thread_id=3 exec_time=0 error_code=0
use `school`/*!*/;
SET TIMESTAMP=1676366859/*!*/;
insert into stuinfo values(3,'grace','girl',20,'run,play basketball')
/*!*/;
# at 449
#230214 17:27:39 server id 100 end_log_pos 480 CRC32 0x3116b5d3 Xid = 21
COMMIT/*!*/; ---回车操作
# at 480 ---结束pos值
#230214 17:28:12 server id 100 end_log_pos 545 CRC32 0x0b918b41 Anonymous_GTID last_committed=1 sequence_number=2 rbr_only=no
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 545
[root@localhost ~]# mysqlbinlog --start-position=302 --stop-position=480 /var/lib/mysql/localhost-bin.000006 | mysql -uroot -p1234
或者
[root@localhost ~]# mysqlbinlog --start-datetime="2023-02-14 17:27:39" --stop-datetime="2023-02-14 17:28:12" /var/lib/mysql/localhost-bin.000006 | mysql -uroot -p1234
###查看是否恢复:
select * from stuinfo;
+----+-------+------+-----+---------------------+
| id | name | sex | age | likes |
+----+-------+------+-----+---------------------+
| 1 | bob | boy | 25 | run,go fishing |
| 2 | tom | boy | 28 | run,Play basketball |
| 3 | grace | girl | 20 | run,Play basketball |
| 4 | andy | boy | 23 | Play basketball |
+----+-------+------+-----+---------------------+
相关文章:
mysql数据库完全备份和增量备份与恢复
mysql数据备份: 数据备份方式 物理备份: 冷备:.冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库热备:一般用于保证服务正常不间断运行,用两台机器作为服务机器,一台用于实际数据库操作应用,另外…...
CF1667E Centroid Probabilities
题目描述 对于所有点数为 nnn 的树,如果其满足 对于所有 i∈[2,n]i\in [2,n]i∈[2,n],与 iii 相连的 jjj 中有且只有一个点 jjj 满足 j<ij<ij<i ,那么我们称其为好树 对于 1∼n1\sim n1∼n 每个点求出来有多少好树满足重心为 iii …...
全网详细总结com.alibaba.fastjson.JSONException: syntax error, position at xxx常见错误方式
文章目录1. 复现问题2. 分析问题3. 解决问题4. 该错误的其他解决方法5. 重要补充1. 复现问题 今天在JSONObject.parse(json)这个方法时,却报出如下错误: com.alibaba.fastjson.JSONException: syntax error, position at 0, name usernameat com.aliba…...
快速部署个人导航页:美好的一天从井然有序开始
很多人都习惯使用浏览器自带的收藏夹来管理自己的书签,然而收藏夹存在着一些问题。 经过长时间的累积,一些高频使用的重要网站和偶尔信手收藏的链接混在了一起,收藏夹因为内容过多而显得杂乱无章;收藏夹没有什么美观可言…...
【Python】如何在 Python 中使用“柯里化”编写干净且可重用的代码
对于中级Python开发者来说,了解了Python的基础语法、库、方法,能够实现一些功能之后,进一步追求的就应该是写出优雅的代码了。 这里介绍一个很有趣的概念“柯里化”。 所谓柯里化(Currying)是把接受多个参数的函数变换…...
ROS笔记(4)——发布者Publisher与订阅者Subscribe的编程实现
发布者 以小海龟的话题消息为例,编程实现发布者通过/turtle1/cmd_vel 话题向 turtlesim节点发送消息,流程如图 步骤一 创建功能包(工作空间为~/catkin_ws/src) $ cd ~/catkin_ws/src $ catkin_create_pkg learning_topic roscpp rospy s…...
Linux进程概念(一)
文章目录Linux进程概念(一)1. 冯诺依曼体系结构2. 操作系统(Operator System)2.1 考虑2.2 如何理解操作系统对硬件做管理?2.3 操作系统为什么要对软硬件资源做管理呢?2.4 系统调用和库函数概念2.5 计算机体系结构3. 进程的初步理解…...
Leetcode.1124 表现良好的最长时间段
题目链接 Leetcode.1124 表现良好的最长时间段 Rating : 1908 题目描述 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格…...
达梦数据库会话、事务阻塞排查步骤
查询阻塞的事务IDselect * from v$trxwait order by wait_time desc;--单机select * from v$dsc_trxwait order by wait_time desc;–DSC集群查询阻塞事务的会话信息select sf_get_session_sql(sess_id),* from v$sessions where trx_id69667;--单机select sf_get_session_sql(…...
sqlServer 2019 开发版(Developer)下载及安装
下载软件 官网只有2022的,2019使用百度网盘进行下载 安装下崽器 选择自定义安装 选择语言、以及安装位置 点击“安装” 安装 SQL Server 可能的故障 以上步骤安装后会弹出以上界面,如果未弹出,手动去安装目录下点击 SETUP.EXE 文件…...
使用Arthas定位问题
功能概述 首先,Arthas的常用功能大概有以下几个: 解决依赖冲突 sc命令:模糊查看当前 JVM 中是否加载了包含关键字的类,以及获取其完全名称。 sc -d 关键字 注意使用 sc -d 命令,获取 classLoaderHash命令:…...
性能测试之tomcat+nginx负载均衡
nginx tomcat 配置准备工作:两个tomcat 执行命令 cp -r apache-tomcat-8.5.56 apache-tomcat-8.5.56_2修改被复制的tomcat2下conf的server.xml 的端口号,不能与tomcat1的端口号重复,不然会启动报错 ,一台电脑上想要启动多个tomcat,…...
【手写 Vuex 源码】第十一篇 - Vuex 插件的开发
一,前言 上一篇,主要介绍了 Vuex-namespaced 命名空间的实现,主要涉及以下几个点: 命名空间的介绍和使用;命名空间的逻辑分析与代码实现;命名空间核心流程梳理; 本篇,继续介绍 Vu…...
opencv基础知识和绘图图形
大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…...
15- 决策回归树, 随机森林, 极限森林 (决策树优化) (算法)
1. 决策回归树: from sklearn.tree import DecisionTreeRegressor model DecisionTreeRegressor(criterionmse,max_depth3) model.fit(X,y) # X是40个点 y是一个圆 2. 随机森林 稳定预测: from sklearn.ensemble import RandomForestClassifier # model RandomForestC…...
Flink相关的记录
Flink源码编译首次编译的时候,去除不必要的操作,同时install会把Flink中的module安装到本地仓库,这样依赖当前module的其他组件就无需去远程仓库拉取当前module,节省了时间。mvn clean install -T 4 -DskipTests -Dfast -Dmaven.c…...
配置可视化-基于form-render的无代码配置服务(一)
背景 有些业务场景需要产品或运营去配置JSON数据提供给开发去使用(后面有实际业务场景的说明),原有的业务流程,非开发人员(后面直接以产品指代)把数据交给开发,再由开发去更新JSON数据。对于产…...
Java 代理模式详解
1、代理模式 代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。 代理模式的主要作用是扩展目标对象…...
知识付费小程序怎么做_分享知识付费小程序的作用
在线知识付费产业的主要业务逻辑是基于用户的主动学习需求,为其提供以跨领域基础知识与技能为核心的在线知识服务,提升其达到求知目的的效率。公众号和小程序的迅速发展,又为知识付费提供了技术支持,从而促进了行业的进一步发展。…...
14- 决策树算法 (有监督学习) (算法)
决策树是属于有监督机器学习的一种决策树算法实操: from sklearn.tree import DecisionTreeClassifier # 决策树算法 model DecisionTreeClassifier(criterionentropy,max_depthd) model.fit(X_train,y_train)1、决策树概述 决策树是属于有监督机器学习的一种,起源…...
GTE+SeqGPT部署教程:Windows WSL2环境下GTE+SeqGPT全链路运行指南
GTESeqGPT部署教程:Windows WSL2环境下GTESeqGPT全链路运行指南 想自己动手搭建一个能“理解”你问题、还能“回答”你的AI小助手吗?今天,我们就来玩点实在的——在Windows电脑上,通过WSL2(Windows Subsystem for Lin…...
基于单片机的智能路灯控制系统设计 | 附源码
源码:点击获取源码 一、项目背景 本项目是单片机课程设计作品,旨在模拟城市路灯的智能化管理场景。传统的路灯控制方式通常依赖人工开关或简单的定时控制,存在能源浪费、维护困难等问题。随着智慧城市概念的提出,智能路灯系统成…...
OpenClaw技能开发:为千问3.5-9B编写自定义自动化模块
OpenClaw技能开发:为千问3.5-9B编写自定义自动化模块 1. 为什么需要自定义技能? 去年冬天,当我第一次尝试用OpenClaw自动化处理日报时,发现现有的技能库无法满足我的特殊需求——需要从Jira提取数据后,自动生成符合团…...
OpenClaw邮件处理助手:Qwen3-14b_int4_awq分类与自动回复
OpenClaw邮件处理助手:Qwen3-14b_int4_awq分类与自动回复 1. 为什么需要邮件自动化助手 每天早晨打开邮箱,看到堆积如山的未读邮件总是让人头疼。订阅的新闻简报、工作沟通、广告推广混杂在一起,手动分类和回复消耗了大量时间。作为技术从业…...
AI赋能:借助快马平台轻松打造集成大语言模型的智能openclaw飞书助手
最近在尝试给团队开发一个智能化的飞书助手,发现结合大语言模型的AI能力确实能大幅提升工作效率。经过一番摸索,我总结出一套用InsCode(快马)平台快速实现这类需求的方法,整个过程比想象中简单很多。 明确核心需求场景 智能助手主要解决三个高…...
Res-Unet实战:在医学图像分割任务中,为什么以及如何用ResNet50替换普通卷积层?
Res-Unet在医学图像分割中的深度优化实践 医学图像分割一直是计算机视觉领域最具挑战性的任务之一。当我们在处理CT扫描、MRI图像或病理切片时,传统U-Net架构虽然表现出色,但随着网络深度增加,梯度消失和特征退化问题逐渐显现。这时ÿ…...
无痛人流三天能出门吗?术后出行与身体恢复科学指南
很多女性在无痛人流术后都会关心出行与恢复问题,其中 “无痛人流三天能出门吗” 是高频咨询内容。术后恢复不仅关系到短期舒适度,也影响生殖系统长期健康。结合临床护理经验与行业康复标准,本文对术后出行时机、注意事项及科学修护方式进行客…...
XZ8011双节8.4V充电芯片 输入电压8.9-15V
XZ8011是一款完整的双节锂离子电池恒压恒流充电管理芯片。采用ESOP8封装形式,外加很少的外部元件,使其成为便携应用的理想选择。 XZ8011通过外接电流检测电阻即可实现高精度的充电电流。其内部有热反馈电路可以对在充电过程中对芯片温度加以控制。充电截…...
跨境人都在用的TT跨境出海矩阵软件哪个靠谱?
你有没有过这种经历?拍十几条TT营销视频花了整整一周,上线后播放量却寥寥无几,账号矩阵的日更计划完全跟不上?做跨境TT矩阵,核心痛点从来不是多账号登录,而是内容量产、成本控制和合规风险的三重夹击。到底…...
欧洲发布Euro-Office引发OnlyOffice强烈抗议
欧洲企业Ionos和Nextcloud联合推出了Euro-Office,这是基于OnlyOffice云办公套件的分支版本,专为对数字主权有顾虑的组织而设计,此举引发了原开发商的愤怒回应。几天前,以德国自托管云服务商Nextcloud为首的"欧洲企业和社区组…...
