【专题】MySQL 数据库

2010-07-22 topic database mysql

MySQL 是一款最流行的开源关系型数据库,最初由瑞典的 MySQL AB 公司开发,目前已被 Oracle 收购,虽然如此,但是仍然在不断的向前发展。

这里详细介绍概念。

mysql logo

现在比较流行的开源分支包括了 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 路由、配置动态加载、故障切换等等。
  • DBDeplyerCheatsheet 可以用来快速搭建测试环境,支持多个版本,不同的场景,介绍其基本概念。

其它

  • 代码导读 也就是代码脉络的大致导读。
  • 时间相关 详细介绍 MySQL 数据库中与时间相关的函数以及基本概念。
  • 示例数据 MySQL 中一些常用的示例数据库,实际上也可以迁移到其它数据库。
  • localhost VS. 127.0.0.1 在 MySQL 数据库中,使用 localhost 和 127.0.0.1 是有所区别的。