MySQL 是一款最流行的开源关系型数据库,最初由瑞典的 MySQL AB 公司开发,目前已被 Oracle 收购,虽然如此,但是仍然在不断的向前发展。
这里详细介绍概念。
现在比较流行的开源分支包括了 MariaDB 和 Percona。
其中 MariaDB 由 MySQL 创始人 Michael Widenius 主导开发,主要原因之一是:Oracle 收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。为了与原 MySQL 区分,不再使用原来的版本号,而是采用新的 10.0。
Percona 是最接近官方 MySQL Enterprise 发行版的版本,也就是说它提供了一些 MySQL 企业版采用的功能,并且包括了一些比较好用的常用工具。其中的缺点是,为了确保对产品中所包含功能的控制,他们自己管理代码,并不接受社区开发人员的贡献。
基本概念
- 写在开头 整理一些 MySQL 中常用的资源、链接等信息,可以用作参考。
- 部署调试 简单介绍 MySQL 常见的使用方法,包括安装启动、客户端使用、调试等。
- 基本概念 介绍 MySQL 中一些基本的概念,包括 SQL、JOIN 等,以及 MySQL 特有的语法。
- 启动脚本 详细介绍下 mysqld_safe 脚本的执行流程。
- 用户管理 一些用户相关的操作,包括了用户管理、授权、密码恢复等。
- 连接方式 实际上就是线程与链接的处理方式,主要包括了三种。
- 通讯协议 简单介绍 MySQL 的服务器与客户端是如何进行通讯的。
- 语法解析 SQL 的处理过程包括了词法分析、语法分析、语义分析、构造执行树等。
- 执行简介 简单介绍 MySQL 中的查询最终是如何执行的。
- 变量配置 通过变量设置来控制不同的行为,以及进行调优,从不同角度,定义方式各不相同。
- 插件详解 关于 MySQL 中一些插件功能的实现,主要是一些通用插件的介绍。
- 存储引擎 介绍下与存储引擎相关的内容,包括了提供的接口,实现方法等。
- 监控指标 包括了一些 MySQL 常见的监控指标及其含义等,还可以参考 Handler 内容。
- 关闭过程 简单分析下 mysqld 进程关闭的过程,以及关闭过程中执行的操作。
- 常用工具 一些运维过程中常见的三方工具,压测工具可以参考 sysbench,以及 自带工具 的介绍。
- 程序接口 最底层通过 C 实现的代码,很多其它库,例如 Python 的
mysqlclient
就是对该 API 的封装。 - 线上部署 简单记录一些线上部署时常见的配置内容。
- 安全设置 也就是一些对 MySQL 进行加固的方法。
- 常用技巧 简单记录下 MySQL 常见的一些操作,例如密码配置。
事务介绍
- 隔离级别 主要介绍下 InnoDB 中如何使用事务的隔离级别。
高可用
- 日志相关 除了常规的日志介绍,同时也包括了 binlog 的详细介绍。
- GTID 简介 主要介绍下 GTID 配置、实现方式,有那些限制,运维场景等。
- 复制方式 数据复制方法做为高可用解决方案的基础,还可以参考 源码解析、半同步复制 。
- 组复制 也就是基于 Paxos 协议变体实现,提供了一种高可用、强一致的实现。
- 组提交 主要是关于 binlog 的组提交实现,介绍各个阶段的实现原理。
- Crash-Safe 复制 在主备复制时,如何保证数据的一致性,当然主要是备库。
- 主备数据校验 由于各种原因,主从架构可能会出现数据不一致,简单介绍校验方式。
- 高可用 MHA 相对成熟的方案,能做到30秒内自动故障切换,且尽可能保证数据一致性。
- 备份恢复 介绍 MySQL 一些常见的备份方法。
InnoDB
- 简单介绍 介绍一下与 InnoDB 相关的资料。
- 存储空间 通过表空间来组织管理数据,这里详细进行分析。
- 崩溃恢复 简单介绍下在服务器启动的时候执行崩溃恢复的流程。
- Redo Log 介绍 redo log 相关的内容。
- Checkpoint 介绍 InnoDB 中与 checkpoint 相关内容,包括如何写入、何时写入。
- Double Write Buffer 介绍为什么会有 dblwr 机制,以及 InnoDB 中如何实现。
三方工具
- Sandbox 本地搭建多个 MySQL 实例,包括主备、循环复制、一主多备等等,相比如下的工具较老,不过可做参考。
- ProxySQL 强大的 MySQL 代理层,支持读写分离、Query 路由、配置动态加载、故障切换等等。
- DBDeplyer 、Cheatsheet 可以用来快速搭建测试环境,支持多个版本,不同的场景,介绍其基本概念。
其它
- 代码导读 也就是代码脉络的大致导读。
- 时间相关 详细介绍 MySQL 数据库中与时间相关的函数以及基本概念。
- 示例数据 MySQL 中一些常用的示例数据库,实际上也可以迁移到其它数据库。
- localhost VS. 127.0.0.1 在 MySQL 数据库中,使用 localhost 和 127.0.0.1 是有所区别的。