@TOC
1. 三高简介
1.1 什么是三高

1.2 实现三高的手段
1. 复制

2. 扩展

- 如果一个扩展的数据库挂了,会有数据不完整的风险
3. 切换

- 为了解决扩展的问题,当一个数据库不可用,能够切换到从数据库(备份数据库),但有丢失切换时期的数据风险
1.3 三高实现


2. 三高实现1-复制

2.1 复制的基本原理

binlog传送,先保存到relay log, 然后,进行重放,重新生成binlog,这样,下次可以继续同步slave
2.2 复制的类型

1. 异步复制


2. 半同步复制

- 客户端需要接收到
ACK通知,即确定从库同步到relay log,就可以提交了,剩下的交给从库异步做 - 即,只关心日志同步过来没有,但执行结果如何不做强要求

- 有一定等待时间,如果一直没有同步到从库,超过一定时间,会脱库,主库不再阻塞,继续执行提交,切换成异步复制状态,保证主库的可用性
3. 组复制

- 保证强一致性
- 从库也可以执行事务,地位同步

3. binlog格式





4. 备库延迟问题

4.1 延迟的原因和解决办法




4.2 并行复制的策略


难点是如何分配中继日志,比如前一条是插入数据,后一条是修改这条数据,这样,不能同时并发执行
1.按库分发

2.按照事务组并行分发
事务组概念
binlog刷盘步骤
- 事务组概念

优化:
- 因为,1,2,3三个事务操作的是同一个
binlog文件,第一步都是刷到内存中,最终只有一个事务将最终内存中的日志保存到磁盘中,这三个事务属于一个事务组
参数设置



4.3. 备库如何读到最新数据

1 强制走主库
- 一种思路是,如果想读到实时最新的数据,查询主库的数据一定是最新的
2 如何判断备库已经追上

GTID:事务的id,在从库上查询是否中继日志重放好了


5. 实现简单的高可用架构
主-主复制架构



配置测试

主-主架构的问题



版权声明:本文为xingzhes_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。