随笔分类 - MySQL
摘要:前言 所谓全文索引,就是一种通过建立倒排索引,快速匹配文档内容的方式。和B+树索引一样,倒排索引也是一种索引结构,一个倒排索引是由文档中所有不重复的分词和其所在文档的映射组成。倒排索引一般有两种不同的结构,一种是inverted file index,另一种是full inverted index。
阅读全文
posted @ 2021-12-14 22:32
屠魔的少年
摘要:背景 在日常的使用过程中,时不时会遇到个别,或者大量的连接堆积在 MySQL 中的现象,这时一般会考虑使用 kill 命令强制杀死这些长时间堆积起来的连接,尽快释放连接数和数据库服务器的 CPU 资源。 问题描述 在实际操作 kill 命令的时候,有时候会发现连接并没有第一时间被 kill 掉,仍旧
阅读全文
posted @ 2021-12-14 22:29
屠魔的少年
摘要:前言 在日常工作中,发现 MySQL 的状态不太对劲的时候,一般都会看看监控指标,很多时候会看到熟悉的一幕:CPU 使用率又爆了。本文会简单介绍一下 MySQL 和 CPU 之间的关系,对此有一些了解之后可以更准确的判断出问题的原因,也能够提前发现一些引发 CPU 问题的隐患。 怎么看懂 CPU 使
阅读全文
posted @ 2021-12-14 22:28
屠魔的少年
摘要:问题交代 在Linux下,SWAP的作用类似Windows系统下的“虚拟内存”。当物理内存不足时,拿出部分硬盘空间当SWAP分区(虚拟成内存)使用,从而解决内存容量不足的情况。 SWAP意思是交换,顾名思义,当某进程向OS请求内存发现不足时,OS会把内存中暂时不用的数据交换出去,放在SWAP分区中,
阅读全文
posted @ 2021-12-14 21:55
屠魔的少年
摘要:1、问题现象 我的网站前段时间经常时不时就抽风一下,提示数据库无法连接,提示: 建立数据库连接时出错 本想反正是个人网站,挂就挂了,无所谓啦;也可能是VPS配置太低,访问量一大就容易出问题,忍忍算啦。 后来启荣大师说了一句话:看那木匠做的烂门 😓(⊙﹏⊙)b 于是下决心解决问题,不能再被鄙视啦,作
阅读全文
posted @ 2021-12-14 21:47
屠魔的少年
摘要:首先我们来看下官方文档对 alter table 语句的解释。alter table 语句有七个不同的阶段事件,每个事件在其不同的阶段执行,具体如下: stage/innodb/alter table (read PK and internal sort):当 ALTER TABLE 处于读取主键阶
阅读全文
posted @ 2021-12-12 11:47
屠魔的少年
摘要:# 只打印-查杀select大于30s的会话 pt-kill --host=127.0.0.1 --port=3306 --user=root --password=rootpwd --match-db='machine' --match-info "select|SELECT" --busy-ti
阅读全文
posted @ 2021-12-12 11:44
屠魔的少年
摘要:大数据时代的到来,数据成为企业最重要的资产之一,数据加密的也是保护数据资产的重要手段。本文主要在结合学习通过MySQL函数及Python加密方法来演示数据加密的一些简单方式。 01准备工作 为了便于后面对比,将各种方式的数据集存放在不同的表中。 创建原始明文数据表 /* 创建原始数据表 */ CRE
阅读全文
posted @ 2021-12-12 11:36
屠魔的少年
摘要:简介 用过MySQL数据库朋友一定对“ERROR 1040 (HY000): Too many connections”,这个报错不陌生,出现这个报错的原因有两种情况,一种是单个用户的连接数超过“max_user_connections”参数定义值,另外一种情况是,所有应用的连接数超过“max_co
阅读全文
posted @ 2021-12-12 11:35
屠魔的少年
摘要:pt-archiver功能介绍 pt-archiver有以下几个功能 按照过滤条件,将线上数据导出成归档文件 按照过滤条件,清理线上过期的历史数据 按照过滤条件,清理过期数据,并把数据归档到本地归档表,或者远端归档服务器的历史表 pt-archiver使用限制 使用pt-archiver工具,只有一
阅读全文
posted @ 2021-12-12 11:34
屠魔的少年
摘要:1.假如变量参数在column_list.txt中 cat column_list.txt 1111 1111 2222 2222 3333 4444 2.假如要生成批量查询test表中id等于上述列表值的select语句。可以使用如下命令: cat column_list.txt | awk '{
阅读全文
posted @ 2021-12-12 11:33
屠魔的少年
摘要:什么情况下会出现数据不一致▼ 首先我们来谈一谈在什么情况下可能会引起主从数据的不一致性;在这一部分我会介绍几种常见的场景,可能会有没考虑到的场景,欢迎大家补充。 复制过程中实例宕机 复制过滤参数配置 Binlog非row格式 主从延迟过高 人为操作 从库发生写入操作 双主双写 MySQL主从版本不一
阅读全文
posted @ 2021-12-12 11:31
屠魔的少年
摘要:1. Recycle_bin简介 recycle_bin是一款MySQL插件,可以在不修改任何MySQL代码的情况下,自动备份MySQL中被Drop的数据库/表,在出现人为误操作删表时,可以快速的进行恢复。实现灵感来源于Oracle flashback的功能,但是从功能完整性上来讲,还有较大的差距,
阅读全文
posted @ 2021-12-12 11:28
屠魔的少年
摘要:默认情况下,我们的 MySQL 实例是可读写的。但有些情况下,我们可以将整个实例设置为只读状态,比如做迁移维护的时候或者将从库设为只读。本篇文章我们来看下 MySQL 设置只读相关知识。 1.关于 read_only 参数 MySQL系统中,提供有 read_only 和 super_read_on
阅读全文
posted @ 2021-12-12 11:23
屠魔的少年
摘要:业务报错”Column ‘create_time’ cannot be null”,从字面意思可以理解为表字段’create_time’想插入null值,但报错该字段不能为null。由此引发了对explicit_defaults_for_timestamp这个有关时间参数的思考。 概念概述 1. T
阅读全文
posted @ 2021-12-12 00:31
屠魔的少年
摘要:0. 背景 在业务低峰通过pt-osc在线做DDL期间出现死锁,导致业务的SQL被回滚了,对应用不友好。本案例死锁发生的场景:pt-osc拷贝最后一个chunk-size并且期间其它事务有对原表做insert操作,才会出现本案例的死锁。 1. 先简单介绍一下pt-osc的工作原理 创建一个跟原表表结
阅读全文
posted @ 2021-12-12 00:30
屠魔的少年
摘要:对crash的数据库进行故障分析并不是一件快乐的事情,尤其是 MySQL 的日志中没有提供 crash 原因的情形。比如当 MySQL 内存耗尽。在 2012年 Peter Zaitsev 写了一篇文章 分析MySQL如何使用内存 该文章中有很多有用的技巧。使用新版本的 MySQL (5.7+) 和
阅读全文
posted @ 2021-12-12 00:27
屠魔的少年
摘要:TwinDB是一款专门用于InnoDB数据恢复的工具,它还有一个名字叫undrop for InnoDB。 安装方法 使用下面的命令进行下载: $ wget https://github.com/chhabhaiya/undrop-for-innodb/archive/master.zip 或者:
阅读全文
posted @ 2021-12-12 00:17
屠魔的少年
摘要:一、锁类型介绍: MySQL有三种锁的级别:页级、表级、行级。 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度
阅读全文
posted @ 2021-12-12 00:07
屠魔的少年
摘要:MySQL 索引及优化实战 索引概念和作用 索引是一种使记录有序化的技术,它可以指定按某列/某几列预先排序,从而大大提高查询速度(类似于汉语词典中按照拼音或者笔画查找)。 索引的主要作用是加快数据查找速度,提高数据库的性能。 MySQL 索引类型 从物理存储角度上,索引可以分为聚集索引和非聚集索引。
阅读全文
posted @ 2021-12-12 00:00
屠魔的少年