MySQL系统化知识概要

不想掌握的MySQL知识停留在【简单】的阶段,那就跟着本文的概要制定学习计划吧!

这是一份MySQL的系统化知识概要,也是一份【学习路线图】,有了路线图,制定目标就轻松了,也就是所谓的【循序渐进】。

今天看完MySQL高可用、分库分表等内容,才清楚MySQL还有这么多【高级知识点】。

本文结合自己使用MySQL的经验和其他网友的书籍、博文编写而来。

 

官文:MySQL Documentation

上面的链接中,有MySQL各个版本的官方文档,可以网页查看,也可以下载PDF(30MB+,孤下载失败了)

 

目录

一、基础知识点

二、高级知识点

参考文档

 

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一

 

一、基础知识点

  • 数据库基础知识

三级模式和二级映像、E-R图、关系模型

SQL语言:DQL、DML、DDL、DCL

  • MySQL安装

Windows、Linux;压缩包安装方式;

  • 用户和权限

root用户,mysql.user表

新建、修改、删除用户

授权、撤回授权、权限类别

  • 图形化工具

MySQL Workbench(免费)、Navicat(商业付费软件,可试用,功能强大)来自博客园

  • 命令

/bin目录下,比如,mysql

  • 数据库 基本操作

创建、查看、删除

  • 数据表 基本操作

创建、查看、修改、删除

查看、修改表结构

  • 数据 基本操作

CRUD(增查改删)

  • 字段

数据类型、约束、字符集和校对集(utf8 vs utf8mb4)来自博客园

  • 单表操作

排序、限量、分组、聚合函数、运算符

  • MySQL内置函数

数学函数、数据类型转换函数、字符串函数、日期和时间函数、加密和散列函数、系统信息函数、JSON函数、

其它常用函数

  • 多表操作

联合、连接、子查询,外键

  • 视图
  • 事务

事务隔离级别、锁

  • 数据库编程

自定义函数、存储过程、变量、流程控制、游标、触发器、事件、预处理SQL语句

  • 存储引擎

MyISAM、InnoDB等(两个主要的,还有很多)

  • 索引

建立、修改

使用原则

索引失效

表级锁、行级锁

  • 数据库优化

最大连接数、缓存、慢查询、数据碎片与维护、日志

  • 数据备份与还原
  • Java开发

JDBC、数据库连接池(Druid、HikariCP等)、MyBatis、Hibernate、Spring Data JPA

 

小结,

掌握以上基础知识,在 单实例(一个MySQL进程) 上使用时是足够了。

但是,随着数据量的增长,单实例 的数据库服务器是不够用的了,此时,就需要用到高级知识了。

 

参考阿里巴巴的MySQL规约(参考文档6):来自博客园

单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表

 

二、高级知识点

  • 二进制日志(binlog)
  • 分表

垂直、水平分表

  • 分区

很少用

  • 分库

多数据库

  • 多实例

单机多实例

  • 主从复制

Replication

  • 高可用-组复制

MySQL Group Replication

主流?待确定

  • 读写分离

master负责读写,slave只负责读

使用 HaProxy、keepalived 等实现

  • 高可用-MHA

MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能。

  • 高可用-MMM

MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制。

  • 高可用-MySQL Cluster

MySQL cluster是官方集群的部署方案,通过使用NDB存储引擎实时备份冗余数据,实现数据库的高可用性和数据一致性。来自博客园

  • 高可用-Galera

Galera Cluster是由Codership开发的MySQL多主集群,包含在MariaDB中,同时支持Percona xtradb、MySQL,是一个易于使用的高可用解决方案,在数据完整性、可扩展性及高性能方面都有可接受的表现。

  • 高可用-PAXOS

Paxos 算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。来自博客园

  • 高可用-ZooKeeper+Proxy
  • Java开发

sharding-jdbc结合mybatis实现分库分表功能

springBoot 整合 sharding-jdbc、Jpa分库分表

mycat——最新版 2.0

  • alibaba/canal

增量同步MySQL数据到ElasticSearch,然后,数据查询通过ElasticSearch来进行,可以大大减轻MySQL服务器的压力。来自博客园

 

小结,

高可用方案有很多,具体使用哪个,孤暂不清楚。从看到的资料来看,组复制 是高可用的主流,可以玩玩。

疑问:

1、单表数据 500W 就是极限,上面各个高可用方案的极限是分别是多少呢?

2、在做分库分表时,数据扩容如何实现?今年分成5个表足够了,明年就 需要50个表,此时,怎么扩容?

3、更多实际问题需要处理(没经验,就不多说了)

高可用集群解决了很多问题,但同时也带来了一些问题,比如,因网络延迟或故障导致的数据不一致、分布式事务等,使用时也需要做好考虑。来自博客园

 

除了上面两部分知识点外,MySQL应该还有更高级别的知识点吧,可以看官方文档、源码获取。

另外,目前孤主要使用MySQL 5.7,MySQL 8和它的区别、优势不是太了解。两者在建立 高可用方案 时有什么不同吗?

 

》》》全文完《《《

 

终于知道MySQL也可以处理亿级数据了,使用 分库分表、MySQL高可用方案 即可,当然,还要结合sharding-jdbc、mycat等第三方软件。来自博客园

MySQL岗位,除了开发、DBA,今天还发现一个 MySQL内核开发工程师

在看集群方案时发现,有一些集群方案时需要更改MySQL内核代码的——C++实现的吧?

关系型数据库,除了MySQL,还有更多的 开源软件 可以选择——比MySQL更棒的——吗?

在阿里云看到了 云数据库RDS MySQL 版,购买实例后,即可通过 简单配置 使用MySQL集群,看起来不错哦!来自博客园

 

参考文档

1、书《MySQL数据库原理、设计与应用》

作者:黑马程序员 (编著)

2、菜鸟:MySQL 教程

3、MySQL的常用高可用方案和分库分表概念

4、mysql各个集群方案的优劣

5、五大常见的MySQL高可用方案

6、阿里巴巴开发秘籍:MYSQL规约

7、MySQL-MMM实现MySQL高可用

8、Galera Cluster for MySQL 详解(一)——基本原理

9、mysql实现高可用架构之MHA

10、Canal——增量同步MySQL数据到ElasticSearch

11、Github:alibaba/canal

12、MySQL8.0简介特性及性能

13、

 

posted @ 2021-10-15 22:26  快乐的欧阳天美1114  阅读(76)  评论(0编辑  收藏  举报