mysql的高可用相关内容
主从复制
节点说明
-
主节点
- Binary Log 线程。负责将主服务器上的数据更改写入二进制日志中
-
从节点
- I/O 线程。负责连接主服务器,并读取主服务器发送过来的二进制日志,然后写入从服务器的中继日志中
- SQL 线程。负责读取中继日志并重放其中的 SQL 语句
主从复制类型
- STATEMENT
- 基于语句的复制。在服务器上执行sql语句,在从服务器上执行同样的语句,mysql默认采用基于语句的复制,执行效率高
- ROW
- 基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍
- MIXED
- 混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制
读写分离
为什么要读写分离
- 主从服务器负责各自的读和写,极大程度缓解了锁的争用
- 从服务器可以使用 MyISAM,提升查询性能以及节约系统开销
- 增加冗余,提高可用性
原理
- 让主数据库处理事务性增、删、改操作(INSERT、DELETE、UPDATE),让主数据库处理事务性操作
- 从数据库处理SELECT查询操作
读写分离方案
基于程序代码内部实现
代码中根据 select、insert 进行路由分类,这类方法也是目前生产环境应用最广泛的
- 优点
- 性能较好,因为在程序代码中实现,不需要增加额外的设备为硬件开支
- 缺点
- 需要开发人员来实现,运维人员无从下手
基于中间代理层实现
- 代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库
- 常见的中间件
- MySQL-Proxy
- Atlas
- Amoeba