前言某个早期技术债务项目线上有一个mongoDB服务,用途很简单,存一些文件而已。不过用户那边突然报个bug说上边的图片丢失了,起初没当回事认为是代码遇到错了,直到后来看了用户详细的bug复现后,登进db一看,发现竟然是被入侵了。还被入侵者留了个Warning数据库,只写了一句: 你丫的数据备份在我们安全服务器上,0.2个比特币就还你。 【入侵分析】当然,根据大家前段时间的比
# MongoDB ## 简介 MongoDB 是一个开源的、高性能、无模式的文档数据库,广泛应用于各种 Web 应用和大数据场景中。在 MongoDB 中,文档以 BSON 格式(Binary JSON)存储,具有灵活的数据模型和强大的查询功能。 在 MongoDB 中,数据的持久化是通过(Flush)操作实现的。是将内存中的数据写入到磁盘的过程,确保数据的持久性和可靠性。本
原创 2024-01-07 08:01:11
186阅读
1评论
谢谢 @北渔 的答案找到了一个更为详细的回答详细分析MySQL事务日志(redo log和undo log)www.cnblogs.comlog buffer中未到磁盘的日志称为脏日志(dirty log)。在上面的说过,默认情况下事务每次提交的时候都会事务日志到磁盘中,这是因为变量 innodb_flush_log_at_trx_commit 的值为1。但是innodb不仅仅只会在有comm
1.MTR(mini-transaction)在MySQL的 InnoDB日志管理机制中,有一个很重要的概念就是MTR。MTR是InnoDB存储擎中一个很重要的用来保证物理写的完整性和持久性的机制。先看下MTR在MysQL架构中的位置。MTR是上面的逻辑层与下面物理层的交互窗口,同时也是用来保证下层物理数据正确性、完整性及持久性的机制。2.日志的触发条件触发条件描述时间线程默认每秒刷新一次。空
1.AOF(Append Only File)Redis每执行一条命令,就把改命令追加到一个文件中,重启的时候执行一遍文件中的命令,就能恢复缓存数据。只有增删改的操作会记录到AOF文件中,查找命令不会记录。默认情况下AOF持久化功能是不开启的。 写操作是会先写到AOF缓冲区,然后在根据一定的策略将缓冲区中的数据更新到硬盘中。因为追加AOF日志这个操作也是主进程完成的,如果直接写入硬盘中,容易阻
转载 2023-12-21 11:42:05
199阅读
---------------------------------------------------------------------------------------------------------------------------------------------------------一、連接遠程數據庫:1、顯示密碼如:MySQL 連接遠程數據庫(192.168.5.116),
这里讨论Mysql(redolog)、Redis(AOF)、RabbitMQ(消息持久化)三者的共同点都是:先在内存缓冲池中追加记录、以一定的频率持久化、批量都存在数据丢失的风险(从内存到磁盘)的过程中可能出现问题,因此中间件需要提供其他的辅助安全方案redolog和AOF的都是同步的(master线程),但RabbitMQ是异步的且不能指定频率,参考官网文档 中间件重启时从磁
前言事情是这样的,在某乎的邀请回答中看到了这个问题:-然后当时我没多想就啪一下写下来这样的答案:这个其实要通过 MySQL 后台线程来的,在 Buffer Pool 中被修改的过的 Page(页)都会被标记成脏页,放到一个链表(Flush 链表)里。然后 MySQL 通过启动后台线程,在满足条件时将 Flush 链表中的脏页入磁盘。满足的条件是:脏页的数量达到了 Buffer Pool 中页数
转载 2024-05-18 23:54:25
92阅读
本篇介绍MYSQL InnoDB的WAL机制带来的小问题——利用WAL技术,数据库将随机写转换成了顺序写,大大提升了数据库的性能,但也带来了内存脏页的问题;脏页会被后台线程自动flush,也会由于数据页淘汰而触发flush,而脏页的过程由于会占用资源,可能会让更新和查询语句的响应时间长一些,表现为像是MySQL"抖了一下";本篇的知识点包含flush、脏页/干净页、flush时机、flu
文章目录缓冲池 Buffer Pool脏页的时机MySQL定时MySQL内存(buffer pool)不足的时候MySQL正常关闭的时候redo log满了的时候脏导致的性能问题控制脏页速度的因素 先了解下前置知识: 缓冲池 Buffer Pool首先,对于InnoDB存储引擎来说,数据都是放在磁盘上的,存储引擎要操作数据,必须先把磁盘里面的数据加载到内存里面才可以操作。   这里就有个
转载 2024-06-22 15:37:06
92阅读
 简介MongoDB是一个开源, 高性能, 无模式的文档型数据库, 当初的设计就是用于简化开发和方便扩展, 是NoSQL数据库产品中的一种.是最 像关系型数据库(MySQL)的非关系型数据库. 它支持的数据结构非常松散, 是一种类似于 JSON 的 格式叫BSON(Binary JSON), 所以它既可以存储比较复杂的数据类型, 又相当的灵活. MongoDB中的记录是一个文档, 它是一
 笔记来源于mysql实战,却高于它  查询语句执行流程MySQL可以分为Server层和存储引擎层两部分。Server层:所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。支持InnoDB、MyISAM、Memory等多个存储引擎。InnoDB从MySQL 5.5.5
在这篇文章中,我将深入探讨如何查看MySQL的策略。这是一个在数据库管理与性能优化中极其重要的话题。在这里,我将从多角度进行分析,涉及协议背景、抓包方法、报文结构、交互过程、异常检测以及性能优化,以帮助大家更好地理解这一过程。 ### MySQL策略的协议背景 策略是指数据库在写入数据时,如何将数据从缓存写入持久存储的策略。MySQL使用InnoDB引擎时,涉及到的常用策略包括
原创 6月前
86阅读
# 实现Redis的策略 ## 一、流程 下面是实现“Redis的策略”的整个流程: | 步骤 | 操作 | | --- | --- | | 1 | 配置Redis的持久化方式为AOF或RDB | | 2 | 设置Redis的策略 | | 3 | 测试策略是否生效 | ## 二、具体操作步骤 ### 步骤1:配置Redis的持久化方式 首先需要在Redis配置文件中设置
原创 2024-06-22 04:08:37
54阅读
记录整理 关于innodb所有涉及的地方
转载 2021-02-03 09:40:42
528阅读
2评论
# MySQL 日志策略实现指南 MySQL 日志策略是保证数据安全和减少数据丢失的重要手段。理解如何实现这一策略是每个开发者的必修课。接下来,我们将逐步实现这一策略,并简要讨论每一步的细节。 ## 流程概述 我们可以将实现过程拆分为以下几个步骤: | 步骤 | 描述 | |---------|---------------
原创 2024-10-04 05:04:25
57阅读
MySQL默认策略是指在数据库执行写操作时,如何将数据持久化到磁盘的策略。默认情况下,MySQL使用“每次提交时”的策略,以确保数据的可靠性和一致性。然而,这种策略会导致性能下降,尤其是在高并发的场景中。因此,优化默认策略显得尤为重要。 ### 背景描述 在数据库操作中,数据持久化的方式对性能和可靠性有着重要影响。MySQL的默认策略往往会在性能与数据可靠性之间形成矛盾。利用四
原创 5月前
34阅读
在今天的很多程序员招聘里,都会要求能够熟练运用Apache Kafka等至少一种消息队列,Apache Kafka也是程序员面试里的常客。在大多数人的印象中,写磁盘都是比较慢的,可是,为什么Apache Kafka在各大MQ性能的评测中,还能够击败众多对手,取得不错的成绩呢?顺序写磁盘在我们的生产环境中,为了节约成本,大部分服务器仍然使用机械磁盘,而非固态硬盘。我们知道,机械磁盘读写数据,首先需要
rocketmq
原创 2023-02-13 09:35:57
127阅读
前言这篇文章是讲述 InnoDB 策略系列文章的第三篇。本文主要讲述 性能调优。另外2篇文章参考https://www.percona.com/blog/2020/01/22/innodb-flushing-in-action-for-percona-server-for-mysql/https://www.percona.com/blog/2019/12/18/give-love-to-yo
  • 1
  • 2
  • 3
  • 4
  • 5