6.1 分布式关系数据库 (上)
MySQL 复制
1.主从复制
2.MySQL-一主多从复制
优点:1.分摊负载
2.专机专用
3.便于冷备
4.高可用(读高可用,写不能高可用--只有一台主服务器,不能写入从服务器)
高可用是互联网应用追求的主要目标。所以应该保证写的高可用。
3.MySQL-主主复制
解析:两个主服务器。A 服务器的 Binlog 同步到 B 的 RelayLog,写入 B 服务器数据库;
B 服务器的 Binlog 同步到 A 的 RelayLog,写入 A 服务器数据库;
要点:同一时间,只能向一台服务器写入。如果同时写入,导致数据冲突(AB 同时对同一条数据进行修改)
优点:提高主服务器的高可用。
4.MySQL-主主失效恢复
MySQL 复制注意事项:
1.主主复制的两个数据库不能并发写入。
2.复制只是增加了数据的读并发处理能力,没有增加写并发能力和存储能力。
3.更新表结构会导致巨大的同步延迟(实践中,关闭表结构的自动同步,采用人工方式同步)。
问题: 如何提高写并发能力和存储能力?
方法:数据分片。
5.数据分片
10 亿条记录分摊存储在 100 台服务器上,每台存储 1000W 条记录。
分片目标:
分片特点:
分片原理:
6.硬编码实现数据分片
缺点:1.代码要实现分片逻辑,对业务有侵入性。管理不方便。
7.映射表外部存储
优点:代码中不需要在硬编码分片逻辑。查数据表,找到数据对应的服务器,然后获取对应服务器的连接。读取数据。相对硬编码,管理和可维护性更好。
8.数据分片的挑战
1.需要大量的额外代码,处理逻辑因此变得更加复杂。(分片代码,业务代码耦合)
2.无法执行多分片的联合查询。(join 操作无法执行)
3.无法使用数据库的事务。(事务日志如法使用)
4.随着数据的增长,如何增加更多的服务器。(增加新服务器 B,B 是空的,怎么进行数据迁移)
===>生产环境中,硬编码+映射表外部存储,不常用。
===>解决方法:分布式数据库中间件。分布式数据库中间件如何设计?原理是什么?
评论