MySQL学习笔记22

news2024/12/25 1:26:10

mysqldump+binlog实现增量备份:

1、什么是增量备份的核心思路?

1):先有全量备份;

2):继续有增删改数据;

3):再次需要备份的时候,不需要进行全量备份,只需要备份binlog日志文件即可。(因为binlog日志记录了增删改操作的所有SQL语句。)

增量备份的实验步骤:

第一步:准备数据;

第二步:开启二进制日志,然后做全库备份;

第三步:继续对数据库进行增删改操作;

第四步:突然发生了硬件故障,数据库丢失;

第五步:恢复全量备份导出的数据(数据不完整,可能只有90%)

第六步:备份二进制日志,根据其信息(导入剩余的10%的数据)恢复数据。

增量备份的具体实现:

第一步:准备数据:

use db_itheima;

create table tb_student (
	id int not null auto_increment,
	name varchar(20),
	age tinyint unsigned default 0,
	gender enum('male','female'),
	subject enum('ui','java','yunwei','python'),
	primary key(id)
)engine=innodb default charset=utf8;


insert into tb_student values (null,'刘备',33,'male','java');
insert into tb_student values (null,'关羽',32,'male','yunwei');
insert into tb_student values (null,'张飞',30,'male','python');
insert into tb_student values (null,'貂蝉',18,'female','ui');
insert into tb_student values (null,'大乔',18,'female','ui');


mysql> select * from tb_student;
+----+--------+------+--------+---------+
| id | name   | age  | gender | subject |
+----+--------+------+--------+---------+
|  1 | 刘备   |   33 | male   | java    |
|  2 | 关羽   |   32 | male   | yunwei  |
|  3 | 张飞   |   30 | male   | python  |
|  4 | 貂蝉   |   18 | female | ui      |
|  5 | 大乔   |   18 | female | ui      |
+----+--------+------+--------+---------+
5 rows in set (0.00 sec)

第二步:开启二进制日志,重启服务,然后进行全库备份。

service mysql_3306 restart命令重启mysql。 

再确认下其中的二进制日志:

在做增量备份的时候刷新下二进制日志。

这个场景就是刷二进制日志的一个作用。

[root@mysql-server data]# rm -rf /tmp/sqlbak/*


[root@mysql-server data]# mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > /tmp/sqlbak/all.sql -p
Enter password:


[root@mysql-server data]# ll /tmp/sqlbak
total 872
-rw-r--r-- 1 root root 890067 Sep 29 07:04 all.sql

第三步:继续对数据库进行增删改操作:

mysql> use db_itheima;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed


mysql> insert into tb_student values(null, '小乔', 16, 'female', 'ui');
Query OK, 1 row affected (0.01 sec)


mysql>
mysql> delete from tb_student where id=3;
Query OK, 1 row affected (0.00 sec)


mysql> select * from tb_student;
+----+--------+------+--------+---------+
| id | name   | age  | gender | subject |
+----+--------+------+--------+---------+
|  1 | 刘备   |   33 | male   | java    |
|  2 | 关羽   |   32 | male   | yunwei  |
|  4 | 貂蝉   |   18 | female | ui      |
|  5 | 大乔   |   18 | female | ui      |
|  6 | 小乔   |   16 | female | ui      |
+----+--------+------+--------+---------+
5 rows in set (0.00 sec)

第四步:突然发现了硬件故障,数据库丢失了。

[root@mysql-server data]# mysql -e "drop database db_itheima;" -p
Enter password:

把db_itheima数据库进行了删除。

故障开始了。

第五步:动员运维工程师开始进行数据恢复,马上把最新的二进制文件进行备份。

把最新的二进制日志进行备份。一会儿我们要用到这个二进制日志。这个文件的大小也要关注下,915B,有内容的。

[root@mysql-server data]# cp binlog.000005 /tmp/sqlbak/
[root@mysql-server data]# cd /tmp/sqlbak
[root@mysql-server sqlbak]# ll
total 876
-rw-r--r-- 1 root root 890067 Sep 29 07:04 all.sql
-rw-r----- 1 root root    915 Sep 29 07:14 binlog.000005

现在已经保护了现场。

实际生产环境中,建议将所有的二进制日志进行备份拷贝。

第六步: 先进行一个全库的恢复。

[root@mysql-server sqlbak]# mysql < /tmp/sqlbak/all.sql -p
Enter password:


mysql> select * from tb_student;
+----+--------+------+--------+---------+
| id | name   | age  | gender | subject |
+----+--------+------+--------+---------+
|  1 | 刘备   |   33 | male   | java    |
|  2 | 关羽   |   32 | male   | yunwei  |
|  3 | 张飞   |   30 | male   | python  |
|  4 | 貂蝉   |   18 | female | ui      |
|  5 | 大乔   |   18 | female | ui      |
+----+--------+------+--------+---------+
5 rows in set (0.00 sec)

也可以使用在mysql数据库中使用source命令进行数据库的导入操作。

这个时候,我们看下,是全库备份点的数据。其完整度并不高,其中没有小乔,张飞应该被删除掉的,张飞还在。那这个应该是二进制日志中的内容。

第七步:通过binlog二进制日志的增量备份还原数据到100%。(关键)

学会读二进制日志文件,必须通过专业的工具mysqlbinlog

[root@mysql-server ~]# mysqlbinlog /tmp/sqlbak/binlog.000005

重点找事故的临界点。如drop database这个临界点。确认at位置。

at 805这个临界点,正好就是故障点。我们可以恢复到740这个位置。

[root@mysql-server ~]# mysqlbinlog --start-position=4 --stop-position=740 /tmp/sqlbak/binlog.000005  |mysql -p
Enter password:
[root@mysql-server ~]#

最后,我们再做下检查。

mysql> select * from tb_student;
+----+--------+------+--------+---------+
| id | name   | age  | gender | subject |
+----+--------+------+--------+---------+
|  1 | 刘备   |   33 | male   | java    |
|  2 | 关羽   |   32 | male   | yunwei  |
|  4 | 貂蝉   |   18 | female | ui      |
|  5 | 大乔   |   18 | female | ui      |
|  6 | 小乔   |   16 | female | ui      |
+----+--------+------+--------+---------+
5 rows in set (0.00 sec)

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

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

相关文章

led护眼灯真的能护眼吗?过来人说说led灯是否真的能护眼

为什么需要购买台灯&#xff1f;正常的顶灯不行吗&#xff1f; 正常顶灯的光照射到桌子上时&#xff0c;已经发散的差不多了&#xff0c;无法满足看书写字环境下的需要。 看书写字时人是要低头的&#xff0c;很容易挡住顶灯照射的光&#xff0c;桌上需要光的位置正好被挡住。…

蓝桥杯每日一题2023.9.29

蓝桥杯大赛历届真题 - C&C 大学 B 组 - 蓝桥云课 (lanqiao.cn) 题目描述1 题目分析 看见有32位&#xff0c;我们以此为入手点&#xff0c; B代表字节1B 8b b代表位&#xff0c;32位即4个字节 (B) 1KB 1024B 1MB 1024KB (256 * 1024 * 1024) / 4 67108864 故答案…

map和set的具体用法 【C++】

文章目录 关联式容器键值对setset的定义方式set的使用 multisetmapmap的定义方式insertfinderase[]运算符重载map的迭代器遍历 multimap 关联式容器 关联式容器里面存储的是<key, value>结构的键值对&#xff0c;在数据检索时比序列式容器效率更高。比如&#xff1a;set…

AI类APP能做什么

AI类APP可以实现多种功能&#xff0c;涵盖了各种领域和用途。以下是一些常见的AI类APP示例以及它们主要实现的功能&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.语音助手&#xff08;Voice Assis…

【刷题笔记9.25】LeetCode:环形链表

LeetCode&#xff1a;环形链表 一、题目描述&#xff1a; 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部…

Java编程技巧:文件上传、下载、预览

目录 1、上传文件1.1、代码1.2、postman测试截图 2、下载resources目录中的模板文件2.1、项目结构2.2、代码2.3、使用场景 3、预览文件3.1、项目结构3.2、代码3.3、使用场景 1、上传文件 1.1、代码 PostMapping("/uploadFile") public String uploadFile(Multipart…

CTP:关于cc和bindgen库及rust工程组织

有三个工程目录&#xff0c;cpt-api, ctp-sdk,ctp-strategy 1、ctp-sdk&#xff1a; 主要的目的是基于bindgen库生成与cpp的.h文件相对应一个binding.rs文件&#xff0c;后面供策略使用。 在这个目录下&#xff0c;建一个build.rs,用bindgen库生成cpp.h的头文件相应的rust绑定…

构建个人云存储:本地电脑搭建SFTP服务器,开启公网访问,轻松共享与管理个人文件!

本地电脑搭建SFTP服务器&#xff0c;并实现公网访问 文章目录 本地电脑搭建SFTP服务器&#xff0c;并实现公网访问1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2. 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内…

傻瓜式Java操作MySQL数据库备份

文章目录 前言存储数据库存储数据表 前言 数据库备份是开发工作中经常要做的事情&#xff0c;好处是mysql提供了一个非常好的命令 mysqldump&#xff0c;直接调用它就可以将数据以sql文件的形式备份出来。但是直接写命令非常不方便&#xff0c;遇到定时备份或者指定备份那么就需…

旗舰版企业CRM客户管理系统商业源码(基于Thinkphp内核开发)+无加密无域名限制+可二次开发

注&#xff1a;本资源提供给大家学习及参考研究借鉴美工之用&#xff0c;请勿用于商业和非法用途&#xff0c;无任何技术支持&#xff01; 旗舰版企业CRM客户管理系统商业源码&#xff0c;它无任何加密无域名限制&#xff0c;并且源码可以二次开发&#xff0c;它是基于Thinkph…

【RabbitMQ实战】07 3分钟部署一个RabbitMQ集群

一、集群的安装部署 我们还是利用docker来安装RabbitMQ集群。3分钟安装一个集群&#xff0c;开始。 前提条件&#xff0c;docker安装了docker-compose。如果没安装的话&#xff0c;参考这里 docker-compose文件参考bitnami官网&#xff1a;https://github.com/bitnami/contai…

用Java打印长方形、平行四边形 、三角形、菱形、空心菱形

今天复习使用嵌套for来完成一些任务&#xff0c;于是想着打印一些图形来练习 思考感悟 长方形 行数 和 每行的星星数嵌套遍历即可 平行四边形 核心&#xff1a;每行空格数总行数-行数 行数空格数132231 三角形 核心&#xff1a;每行星星数2*当前行数-1 行数星星数1123…

【每日一题】2769. 找出最大的可达成数字

2769. 找出最大的可达成数字 - 力扣&#xff08;LeetCode&#xff09; 给你两个整数 num 和 t 。 如果整数 x 可以在执行下述操作不超过 t 次的情况下变为与 num 相等&#xff0c;则称其为 可达成数字 &#xff1a; 每次操作将 x 的值增加或减少 1 &#xff0c;同时可以选择将 …

Elasticsearch:使用 Elasticsearch 进行语义搜索

在数字时代&#xff0c;搜索引擎在通过浏览互联网上的大量可用信息来检索数据方面发挥着重要作用。 此方法涉及用户在搜索栏中输入特定术语或短语&#xff0c;期望搜索引擎返回与这些确切关键字匹配的结果。 虽然关键字搜索对于简化信息检索非常有价值&#xff0c;但它也有其局…

【分布式计算】二、架构(Architectures)

1.中心化架构&#xff08;Centralized Architectures&#xff09; 1.1.经典C/S模型 服务器&#xff1a;一个或多个进程提供服务 客户端&#xff1a;一个或多个进程使用服务 客户端和服务器可以在不同的机器上 客户端遵循请求/回复模型 1.2.传统三层视图 用户界面层&#x…

【正点原子】开发板可以ping通电脑,电脑ping不通开发板

Uboot模式下 uboot模式下因为相关服务没有开启&#xff0c;只能uboot ping通电脑&#xff0c;电脑ping不通开发板 note: 电脑需要关闭防火墙 App模式 该模式下&#xff0c;如果已经打开网络还是ping不通开发板 关闭电脑wifi再重试

WebPack-打包工具

从图中我们可以看出&#xff0c;Webpack 可以将多种静态资源 js、css、less 转换成一个静态文件&#xff0c;减少了页面的请求. 下面举个例子 &#xff1a; main.js 我们只命名导出一个变量 export const name"老六"index.js import { name } from "./tset/…

uboot启动流程涉及reset汇编函数

一. uboot启动流程中函数 之前了解了uboot链接脚本文件 u-boot.lds。 从 u-boot.lds 中我们已经知道了入口点是 arch/arm/lib/vectors.S 文件中的 _start。 本文了解 一下&#xff0c;uboot启动过程中涉及的 reset 函数。本文继上一篇文章学习&#xff0c;地址如下&#xff…

外包干了2个月,技术有明显退步...

先说一下自己的情况&#xff0c;本科生&#xff0c;18年通过校招进入广州某软件公司&#xff0c;干了接近3年的功能测试&#xff0c;今年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!可我已经在一个企业干了3年的功能测试&…

ELK 处理 Spring Boot 日志

ELK 处理 Spring Boot 日志&#xff0c;妙啊&#xff01; 来源&#xff1a;ibm.com/developerworks/cn/java /build-elk-and-use-it-for-springboot -and-nginx/index.html ELK 简介 Logstash Elasticsearch Kibana ELK 实现方案 ELK 平台搭建 安装 Logstash 安装 Elas…