Mycat的常见面试题(全)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 目录前言1. 主从复制的原理2. 分库分表是什么3. 全局表,ER表是什么4. 分片的规则有什么5. 全局ID有什么6. mycat的核心配置文件有哪些7. 高可用方案前言主要讲解mycat框架的面试题关于mycat的知识框架可看我之前的文章Mycat框架从入门到精通(全)1. 主从复制的原理这里所运用到的主从复制主要还是mysql的master将数据的改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;当数据发生改变时,则将其

前言

主要讲解mycat框架的面试题
关于mycat的知识框架可看我之前的文章
Mycat框架从入门到精通(全)

1. 主从复制的原理

这里所运用到的主从复制主要还是mysql的

  1. master将数据的改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;当数据发生改变时,则将其改变写入二进制日志中;
  2. slave会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件
  3. 同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

更加详细的了解可看我之前的文章
还有和之前框架的主从复制进行对比
关于主从复制的超详细解析(全)

2. 分库分表是什么

垂直分库是指按照业务将表进行分类,分布到不同的数据库上面

具体原则:
分库,分到不同的主机上,各个主机的数据库不能联表
有紧密关联关系的表应该在一个库里,相互没有关联关系的表可以分到不同的库里

优点:
拆分后业务清晰,系统之间整合或扩展容易。

缺点:
部分业务表无法join,只能通过接口方式解决,提高了系统复杂度。

由于垂直切分是按照业务的分类将表分散到不同的库,所以有些业务表会过于庞大,存在单库读写与存储瓶颈,所以就需要水平拆分来做解决。


水平分表:
将数据的水平切分理解为是按照数据行的切分,是将表中的某些行切分到一个数据库,而另外的某些行又切分到其他的数据库中

优点:
不存在单库大数据,高并发的性能瓶颈。
提高了系统的稳定性跟负载能力。

缺点:
拆分规则难以抽象。分片事务一致性难以解决。
数据多次扩展难度跟维护量极大。
跨库join性能较差。

3. 全局表,ER表是什么

全局表:数据量少改动少,不需要拆分可当全局表。每个分片都会有一张相同的表,一个字典类数据的表,每个表都有可能用到的数据。在进行插入、更新、删除操作时,会将sql语句发送到所有分片上进行执行,在进行查询时,也会把sql发送到各个节点。这样避免了跨库JOIN操作,直接与本分片上的全局表进行聚合操作。

ER表:ER表将子表的存储位置依赖于主表,并且物理上紧邻存放,因此彻底 解决了 JOIN 的效率和性能问题。子表的记录与其关联的父表的记录保存在同一个分片上

补充全局表:
① 全局表的插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性
② 全局表的查询操作,只从一个节点获取
全局表可以跟任何一个表进行 JOIN 操作

字典表具有以下几个特性:
① 变动不频繁
② 数据量总体变化不大
③ 数据规模不大,很少有超过数十万条记录

4. 分片的规则有什么

有取模、分片枚举、范围约定、按日期分片

5. 全局ID有什么

在实现分库分表的情况下,数据库自增主键已无法保证自增主键的全局唯一。为此,Mycat 提供了全局 sequence

  • 本地文件

优点:本地加载,读取速度较快
缺点:抗风险能力差,Mycat 所在主机宕机后,无法读取本地文件

  • 数据库方式

利用数据库一个表 来进行计数累加。但是并不是每次生成序列都读写数据库,这样效率太低。Mycat 会预加载一部分号段到 Mycat 的内存中,这样大部分读写序列都是在内存中完成的。如果内存中的号段用完了 Mycat 会再向数据库要一次

  • 时间戳方式

全局序列ID= 64 位二进制 (42(毫秒)+5(机器 ID)+5(业务编码)+12(重复累加) 换算成十进制为 18 位数的
long 类型,每毫秒可以并发 12 位二进制的累加。
优点:配置简单
缺点:18 位 ID 过长

6. mycat的核心配置文件有哪些

  • schem.xml 逻辑库,逻辑表,数据节点
  • rule.xml:分片规则
  • server.xml:连接mycat的用户名和密码

7. 高可用方案

在这里插入图片描述

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
SQL 存储 数据库
sql数据库面试题
以下是一些SQL数据库的面试题: 1. 什么是SQL?你能简要描述一下它的特点吗? 2. SQL中的主键和外键是什么?它们有什么作用? 3. 你能解释一下什么是索引吗?索引在数据库中的作用是
|
SQL cobar 关系型数据库
02MyCat - Cobar与MyCat
02MyCat - Cobar与MyCat
152 0
|
SQL 存储 关系型数据库
04MyCat - MyCat概述
04MyCat - MyCat概述
113 0
|
SQL 关系型数据库 MySQL
MySQL分库分表面试知识点
MySQL分库分表面试知识点
104 0
|
SQL 关系型数据库 MySQL
MySQL数据库面试题
MySQL数据库面试题
72 0
|
SQL 存储 算法
MySQL数据库面试题3
MySQL数据库面试题3
124 2
|
存储 SQL 算法
MySQL数据库面试题1
MySQL数据库面试题
180 1
|
存储 SQL 机器学习/深度学习
MySQL数据库面试题2
MySQL数据库面试题2
171 1
|
SQL 存储 缓存
MySQL数据库面试题4
MySQL数据库面试题4
1024 0