自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

转载 MySQL事务实现

一个事务提交的时候,必须把它的redo log都刷入到磁盘文件里去,只有这样,才能保证事务的持久性,才算事务提交成功了(这就是force log at commit机制,即在事务提交的时候,必须先将该事务的所有事务日志写入到磁盘上的日志文件中进行持久化)。这种情况下,如果机器宕机了,而系统缓冲区中的数据还没同步到磁盘的话,就会丢失数据。代表的LSN值排序的,链表尾部的脏页就是最早修改的,它所对应的oldest_modification就是最小的一个LSN值,那这个LSN之前的脏页就是已经刷入磁盘的。

2022-11-23 18:21:12 1554

原创 DB存储结构&内存结构

表空间可以看做是InnoDB存储引擎逻辑结构的最高层,所有的数据都存放在表空间中。在默认情况下 InnoDB存储引擎有一个共享表空间 ibdata1,即所有数据都存放在这个表空间内。如果用户启用了参数 innodb_file_per_table,则每张表内的数据可以单独放到一个表空间内。表空间是由各个段组成的,常见的段有数据段、索引段、回滚段等。InnoDB下的都是索引组织表,因此数据即索引,索引即数据。存放叶子节点的区 的集合就算是一个段 (segment) .存放非叶子节点的区的集合也算是一个段.也就是

2022-11-02 21:31:53 1212

原创 DBA的实用操作汇总(更新中~)

数据库日常操作提升dba的工作效率初入dba必看sql连接、权限管理、主从不一致处理、db压力分析等等

2022-02-17 22:42:36 1012

原创 Redis Q&A

在Redis中,常见的缓冲区有下面两类:1、C-S架构中的输入输出缓冲区2、主从复制架构中的缓冲区其中:C-S架构中的缓冲区主要分为客户端输入缓冲区和客户端输出缓冲区;主从复制架构中的缓冲区主要指复制缓冲区和复制积压缓冲区。

2023-09-20 11:08:11 145

原创 Go 入门学习笔记(一)

切片的三个参数的切片截取的意义为 low 为截取的起始下标(含), high 为窃取的结束下标(不含 high),max 为切片保留的原切片的最大下标(不含 max);当命名(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:SetupRouter,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出。使用append函数后开始绑定底层数组,但是每增加一个元素,如果底层数组容量不够,数组的容量都会按照变化,而且每次都是原数组长度的2倍。

2023-05-19 16:55:17 207

原创 Ubuntu MySQL 8.0.32调试环境搭建

【代码】Ubuntu MySQL 8.0.32调试环境搭建。

2023-05-18 11:08:32 312

原创 【MySQL 8.0】标准配置文件详解(下)

relay_log指定中继日志的名称默认基本名称是指定relay log的索引名称开启后,服务器启动后立即启用自动中继日志恢复。恢复过程创建一个新的中继日志文件,将 SQL(应用程序)线程位置初始化到这个新的中继日志,并将 I/O(接收方)线程初始化到应用程序线程位置。然后继续从源读取中继日志用于决定允许哪些事务在副本上并行执行的策略1.:基于复制源写入二进制日志的时间戳,事务在副本上并行应用2.DATABASE:更新不同数据库的事务是并行应用的。

2023-04-12 11:05:31 808

原创 深入浅出之MVCC原理

MVCC原理浅析

2023-04-10 10:44:33 97

原创 mysql故障信息快照

在DB遇到故障如DB服务重启、不可用、服务器或者数据库无法登录、服务器负载出现异常、DBhang住等情况下,恢复业务后,DBA需要进一步排查问题的根本原因;在很多情况下,故障发生时的各类信息获取会很麻烦,需要定位到具体时间点,有些信息可能已经无法搜集到,给DBA的排障带来了不便;因此,需要部署一个程序定时收集或者在DB出现异常时可以被触发进行收集,从而收集现场的各类信息,供DBA排查问题。

2023-04-06 10:18:42 167

原创 【MySQL 8.0】标准配置文件详解(上)

将按照不同的模块介绍配置项:文末附上参考配置文件。

2023-04-04 11:28:08 3107

原创 关于GTID不一致的分析

分析gtid不一致的原因以及处理方法

2023-03-24 19:27:02 901

原创 数据库开发规范(MySQL)

TIMESTAMP 比数值型时间戳可读性更好DATETIME 的存储上限为 9999-12-31 23:59:59,如果使用 TIMESTAMP,则 2038 年需要考虑解决方案DATETIME 由于不需要时区转换,所以性能比 TIMESTAMP 好如果需要将时间存储到毫秒,TIMESTAMP 要 7 个字节,和 DATETIME 8 字节差不太多。

2023-02-02 18:57:43 184

转载 MySQL并发update在不同隔离级别下的问题

这个时候更新语句通过二级索引定位更新后,二级索引上的数据并不会发生变化,从而避免了上面的问题。在这个场景中session2和session3在发起update的时候都会等rec3上的LOCK_ORDINARY锁,session2获得锁后,继续插入其插入意向锁又会被session3阻塞,导致死锁发生。这里session1和session2更新后,user_id的balance明明是998,session3 Update的where条件是balance > 1,但却没有匹配到数据行,也没有更新。

2023-01-11 19:16:42 998

原创 MySQL在线ddl汇总

由于采用触发器方式,需要解决增量回放与全量拷贝乱序问题。pt-osc通过如下方式解决:在拷表select时需要进行当前读(lock in shared mode)并与insert组成一个事务,避免快照读导致增量的delete操作丢失。场景如下:如果是快照读,且在读id=x之前,业务执行了delete操作,则触发器先执行了空操作,导致新表中仍存在需删除掉的id=x记录;如果与insert不是一个事务,存在相似问题;

2022-11-03 20:51:02 499

原创 MySQL Shell dump&load

导入时,注意 max_allowed_packet 的限制。导入之前,需将目标实例的 local_infile 设置为 ON。命令中的 /data/backup/full 是备份目录,目标必须为空,compression: “none” 指的是不压缩。该工具属于客户端工具,生成的文件在客户端。导出的时候,导出路径下不能有文件。

2022-11-02 21:33:26 564

原创 MySQL主从复制原理学习

master 服务器将数据的改变记录二进制 binlog 日志,当 master 上的数据发生改变时,则将其改变写入二进制日志中;slave 服务器会在一定时间间隔内对 master 二进制日志进行探测其是否发生改变,如果发生改变,则开始一个 I/OThread 请求 master 二进制事件;

2022-10-25 10:09:09 670

原创 DBA技能-全链路定位DB服务器性能瓶颈

一、CPU1.定位高负载线程top -p [pid] Hcpu使用率低,但负载高cpu id%高,也就是空闲,比如90%。但 load average非常高,比如4核达到10。分析:load average高,说明其任务已经排队,许多任务正在等待。出现此种情况,可能存在大量不可中断的进程。2.检测cpu上下文切换$ vmstat 5procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

2022-10-12 18:34:50 288

原创 mysql异常重启后表crash的问题

myisam表损坏问题

2022-09-06 18:26:27 165

原创 TiDB 6.x基础

tidb基础知识

2022-09-05 18:04:16 183

原创 redis cluster知识

redis cluster基础知识

2022-08-30 16:25:15 936

原创 TiDB索引

一.TiDB索引设计1.索引设计原则TiDB最初的设计目的是在兼容MySQL的前提下,提供横向扩展能力,以解决分库分表的问题。在后续不断的发展中,需要满足高并发读写,多副本的一致性与高可用,支持分布式事务等。依据上述条件,选择合适的索引数据结构。2.LSM-Tree(Log Structured Merge Tree)数据分为两部分,一部分在内存,一部分在磁盘中内存部分由Memtable和Immutable Memtable磁盘部分由多层的SSTable组成,从 上到下,级数level越大,

2022-05-10 17:13:15 3402

原创 MongoDB activeSessionsCount超出阈值问题

1.问题描述发现mongodb-exporter与mongo主节点连接断开报错日志如下:登录mongodb主节点,无法连接,日志中未发现报错登录从节点,副本集各成员状态正常2.解决方法maxSessions达到100万的阈值,此时需要修改配置文件setParameter: maxSessions: 2000000进行主从切换,然后重启原主节点,可以重新连接上该节点3.问题原因该集群为普通副本集,发现配置文件中包括sharding:clusterRole: shardsvr

2022-04-22 12:04:05 1489

原创 mysql分区表使用

1.定义分区表通过分区函数,把物理表结构相同的多张表组成逻辑上的一张大表,分区函数包括RANGE、LIST、HASH、KEY、COLUMNS。2.设计分区表的主键一定要包含分区函数的列,每张表有自己的索引,从逻辑上看是一张表,但物理上存储在不同文件中。分区表的索引都是局部,而非全局。也就是说,索引在每个分区文件中都是独立的,所以分区表上的唯一索引必须包含分区列信息,否则创建会报错。唯一索引使用全局唯一的字符串来保证全局唯一。3.性能分区表技术不是用于提升 MySQL 数据库的性能,而是方便数据

2022-04-08 17:45:52 1108

原创 MongoDB必知必会(更新中)

1.用户管理db.createUser( { user: "", pwd: "", roles: [ { role: "root", db: "admin" } ] } )mongo --port 27017 -u'garena_mongo' -p'3fwe*&3ojd' --authenticationDatabase 'admin' --eval "use admin;db.createUser({user:\"mongo_exporter\",p

2022-03-16 18:59:07 1177

原创 MySQL内存突增问题

1.问题说明线上一台从库内存使用率从83%增加到了90% 如下图:期间无慢查询,cpu】磁盘负载没有明显波动,db也没有什么压力,qps很低。机器总内存128G,buffer pool分配80G。2.问题定位select event_name, SUM_NUMBER_OF_BYTES_ALLOC from performance_schema.memory_summary_global_by_event_name order by SUM_NUMBER_

2022-03-07 16:56:05 1674

原创 DBA-Linux常用命令(更新中)

1.查看进程的最大文件描述符cat /proc/${PID}/limits | grep “Max open files”2.查看进程当前打开的文件描述符数lsof -p ${PID} | wc -l3.df命令卡住strace df -h4.加密文件解压openssl des3 -d -salt -in ‘file_name’ | tar xzf -5.磁盘ext4格式转为xfsumount /data1mkfs.xfs -f /dev/nvme0n1p1#按实际name定义mou

2022-03-04 13:43:03 650

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除