• 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、

  • 相关阅读:
    pickle模块使用
    Graphviz安装教程
    Redis常用命令
    MongoDB和Redis的区别
    UVA-1572
    poj2352
    poj1195
    Codeforces Round #430 (Div. 2)
    Codeforces Round #431 (Div. 2) B. Tell Your World
    poj3278 【BFS】
  • 原文地址:https://www.cnblogs.com/luo630/p/15412690.html
Copyright © 2020-2023  润新知