ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL系统化知识概要

2021-10-15 22:32:10  阅读:299  来源: 互联网

标签:分库 概要 可用 数据库 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、

 

标签:分库,概要,可用,数据库,MySQL,分表,博客园,系统化
来源: https://www.cnblogs.com/luo630/p/15412690.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有