摘要: 一、InnoDB架构 InnoDB架构 Memory Buffer Pool 用途 缓存InnoDB表、索引以及其他辅助buffer 组成 Data/Index Page Cache Change Buffer 用途 当受影响的索引页不在BF中时,先缓存对非唯一索引页的更改(DML)到CB\n当其他 阅读全文
posted @ 2020-02-29 23:20 Uest 阅读(380) 评论(0) 推荐(1) 编辑
摘要: 一、事务&锁 MySQL事务&锁 事务 属性 Atomicity:同一个事务里,要么都提交,要么都回滚 Consistency:在事务开始之前和事务结束之后,数据库的完整性约束没有被破坏 Isolation:并发事务之间的数据是彼此隔离的 Durability:事务提交后,所有结果务必被持久化 操作 阅读全文
posted @ 2019-12-18 16:17 Uest 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 一、索引 MySQL索引 索引类型 数据结构 B+树索引,用于InnoDB & MyISAM 哈希索引,用于HEAP,NDB,InnoDB AHI Fractal Tree索引,用于TokuDB;LSM,用于RocksDB;空间索引,很少用 物理存储 聚集索引(clustered index) 非聚 阅读全文
posted @ 2019-11-05 23:12 Uest 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 最近一位同学遇到的案例:凌晨数据库意外宕机,要求在一主两从的基础上,搭建MHA做故障切换。在部署测试中遇到一些问题找到我,交流的过程挖出一些之前忽略的坑,感谢这位同学无私分享!• GTID环境,KILL主库,新主库和从库丢失数据(之前已知)• 在数据库进程挂掉、数据库服务器关机或重启、开启防火墙、关 阅读全文
posted @ 2018-06-28 22:01 Uest 阅读(1169) 评论(0) 推荐(1) 编辑
摘要: 基本环境:PXC 5.7.19 Row+Gtid,3节点 一、Galera GTID vs MySQL GTID 1.1、Galera GTID vs MySQL GTID 我们先来看下PXC环境Galera GTID和MySQL GTID分别指的是什么 # node1的server_uuid my 阅读全文
posted @ 2018-06-05 22:16 Uest 阅读(1068) 评论(0) 推荐(0) 编辑
摘要: 一、备份与恢复 MySQL备份与恢复 备份 备份方式 是否停业务 冷备:停掉业务或DB进行备份(copy、rsync) 热备:不停业务的情况下进行备份 逻辑备份:导出SQL脚本进行备份 mysqldump:只支持单线程工作 mysqlpump:并行的最小粒度是单个数据库对象,对于每张表的导出只能是单 阅读全文
posted @ 2018-05-28 10:17 Uest 阅读(659) 评论(0) 推荐(1) 编辑
摘要: 一、复制框架 开始接触复制时,看到各种各样的复制,总想把不同类型对应起来,结果越理越乱~究其原因就是对比了不同维度的属性,不同维度得出的结果集之间必然存在交集,没有必要将不同维度的属性安插到成对的萝卜与坑 MySQL复制框架 Replication Methods Binary Log File P 阅读全文
posted @ 2018-05-21 22:18 Uest 阅读(546) 评论(0) 推荐(1) 编辑
摘要: 几个月前写过pt-table-checksum 3.0.4检测不出主从差异数据,当时的解决方案是使用旧版本,另一个挫方法是自行设置binlog_format='STATEMENT'。现在已经发布到3.0.9版本,结果又遇到相同的坑~最近几版pt-table-checksum(已核实3.0.4和3.0 阅读全文
posted @ 2018-05-08 11:30 Uest 阅读(1167) 评论(0) 推荐(0) 编辑
摘要: 一、主从数据一致性 1.1、如何保证主从数据一致性 参考叶师傅文章:FAQ系列 | 如何保证主从复制数据一致性 这样配置后,正常情况下主从数据应该是一致的~ 1.2、主从数据不一致,复制状态正常 • binlog_format='STATEMENT'只要复制语句对应的表结构一致,主从数据是否一致不会 阅读全文
posted @ 2018-04-14 16:43 Uest 阅读(1682) 评论(0) 推荐(0) 编辑
摘要: 本文仅梳理手动Failover流程。MHA的介绍详见:MySQL高可用架构之MHA 一、基本环境 1.1、复制结构 VMware10.0+CentOS6.9+MySQL5.7.21 传统复制基于Row+Position,GTID复制基于Row+Gtid搭建的一主两从复制结构:Node1->{Node 阅读全文
posted @ 2018-03-30 17:38 Uest 阅读(1633) 评论(0) 推荐(2) 编辑
摘要: 最近在学习【MySQL事务&锁】这块知识,一不留神和MSSQL乱窜了~.~ 文章最初是想查看MySQL vs MSSQL在下面环境产生的阻塞现象会话1开启事务更新数据尚未提交->会话2读取会话1中修改的行->会话3读取会话1中修改的行MySQL:会话1阻塞会话2,会话1阻塞会话3MSSQL:会话1阻 阅读全文
posted @ 2018-03-23 18:22 Uest 阅读(517) 评论(0) 推荐(0) 编辑
摘要: 基本环境:官方社区版MySQL 5.7.21 Row+Gtid开启sysbench压测,使用mysqldump备份数据库,执行truncate操作,恢复数据到truncate前的时间点1、切换日志,记录当前位置 # 3306切换日志 mydba@192.168.85.132,3306 [sbtest 阅读全文
posted @ 2018-02-01 18:15 Uest 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 一、官方释义 1.1、gtid_executed、gtid_purged https://dev.mysql.com/doc/refman/5.7/en/replication-options-gtids.html#sysvar_gtid_executed• gtid_executedWhen us 阅读全文
posted @ 2018-01-19 22:56 Uest 阅读(9877) 评论(0) 推荐(1) 编辑
摘要: 基本环境:官方社区版MySQL 5.7.19 一、了解Binary Log结构 1.1、High-Level Binary Log Structure and Contents 1.2、Binary Log结构示意图 # Binary Log结构示意图(binlog_version=4) |< Ev 阅读全文
posted @ 2018-01-13 17:34 Uest 阅读(804) 评论(0) 推荐(0) 编辑
摘要: 一、log_timestamps 1.1、官方解释 简单来说log_timestamps变量控制着error log、general log、slow log这些文件中的时间信息。log_timestamps有效的值为UTC(默认)和SYSTEM(本地系统时区) 1.2、使用样例 可以使用下面方式设 阅读全文
posted @ 2018-01-11 21:10 Uest 阅读(3644) 评论(0) 推荐(1) 编辑