mysql 集群的一些概念
2024-08-27 15:41:08
读写分离: 主备机有 master-master方式,mysql自己提供两个机器之间的备份 binlog方式,一个机器master 用于写数据,一个用于读数据,写数据的那个机器也应有读读功能,有既有读又有写的操作,需要在第一个机器上完成。但现在MYSQL的跨库有bug,说以所有的库的表结构应该都一样。
垂直分区: 把不同的业务(表)放在不同的数据库节点上,不同区上,假如有两个区,两个数据量特别大的表,把两张表分别放在不同区上。这样数据同步的时候,主从master不同的节点(服务器)到备用master的不同的节点效率就高了,但是这样放在不同的服务器,如果这两个表和其他表存在联表查询,那么就只能把原来的sql语句给拆分了,先查询一个表,在查询另一个,虽然说这个会消耗更过性能,但比起那种大量数据同步,负担还是减轻了不少。
水平分区: 按路由原则将同一个表的不同记录分到不同节点上,路由原则就是用的算法,一般都是动态哈西算法,用表中id取模分配到不同节点上,有4台机器就模4,这样有个问题,如果数据量太大,要增加节点,所有的数据都得重新分区,那么将是一个的很庞大的计算量。新增4个节点,就需要模8了。
查询问题: 把业务相关的数据尽可能放在一个节点上,这样方便关联查询,要不就要扫描整个路由再扫分库,因为不知道在哪个分库上,就得挨个库,全表查。另一种解决方案,是建立搜索引擎,solr,可以在水平分区前将该记录要存在哪个库等信息存起来,建立索引,这样查询就方便了。
最新文章
- Android游戏开发实践(1)之NDK与JNI开发02
- iOS开发笔记1:[转]导航栏里的";Back";按钮显示不出来
- 每天学点GDB14
- sin=in.readLine();
- Skyline学习教程
- [PS] 透明底图片制作
- js获取上传文件扩展名
- [转]tomcat部署(1)
- copy.copy()与copy.deepcopy()的详解
- python学习——读取染色体长度(三、用循环或者函数求总长并获取最长染色体长度)
- socket(套接字)初使用
- mac 下直接给docker容器加映射 mysql 为例
- Johnson算法
- JS--bom对象:borswer object model浏览器对象模型
- googletest--Death Test和Exception Test
- Pairs of Songs With Total Durations Divisible by 60 LT1010
- 上传文件夹+php
- YOLO end-to-end
- 使用 PowerShell 管理 Azure 磁盘
- Linux读书笔记第一周