4、mysql组复制集群
一主多从的请求通常是读的请求高于写 ,但是如果写的请求很高,要求每个节点都可以进行读写,这时分布式必须通过(多组模式)集群的方式进行横向扩容。
组复制对节点的数据一致性要求非常高,因此要对所有的节点重新进行初始化:
编辑配置文件,根据实际情况修改主机名和网段
在server2上
只修改id和主机名
在server3上
根据实际情况修改id和主机名
在server1上查看组复制中的成员
测试:所有节点都可以写入数据
在server1上
在server2上
在server3上
5、mysql读写分离
延迟复制
如果在master端误操作,可以在slave端进行数据恢复,只需要停掉sql线程;
延迟只是延迟了sql ,IO已经复制过来了 ,数据已经在中继日志里保存起来了,只不过sql没有进行回放。
路由类似于代理 ,此实验组复制集群有三个节点 当外部应用在连接这个集群的时候,如果只连接其中一个节点,如果这个节点挂了,所以就得把它负载到其他节点,mysql 路由器 负责负载后端的节点。
在server4上
routing_strategy= round-robin 第一个访问11,第二个访问12,第三个访问13
routing_strategy=first-available 第一个可用的话就不会后面的,当第一个挂掉之后,才会到后面去
在mysql集群中创建远程测试用户
因为组复制集群,所以server2,server3上也会同步创建远程测试用户
在server1上
在server1,2,3上分别安装软件
7001端口是只读权限,顺序是11,12,13
当在server4上进行第一次执行时
server1与server4建立连接
在server4上进行第二次执行时
server1会与server4断开连接,server2与server4建立连接
7002端口为读写权限,调度列表顺序为13,12,11
在server4上第一次执行
与server3建立连接
当挂掉server3时
在server4上进行第二次执行则会与server2建立连接
6、mysql高可用架构
重新创建一主两从集群,在master端关闭mysql服务 /etc/init.d/mysqld stop ,
删除mysql文件,修改主配置文件重新初始化
master端重新初始化并建立用户
在slave端同样重新进行初始化(其他节点以此类推)
测试
在master端
在slave端
server2
server3
一株两从架构完成,进行MHA部署
做一个管理端在server4上
在server4上安装管理软件
管理端配置ssh免密传输,免密连接所有被控节点
复制客户端软件
在server1,sever2,server3上安装客户端软件
工具包
MHA配置
注释需要删除
每个节点上也必须要有免密连接,检测各节点的ssh免密连接
在master端设置mysql管理员权限,slave节点自动同步
检测主从复制集群状态
实验环境搭建完成。
7、mysql高可用切换
(1)手动切换
master正常时,12会接管11成为master,原始的master会变成新的slave
检测(11和13都指向的master是12)
当停掉server2这个master,slave就无法进行连接
在管理端
11重新变成master,快速变成了一个一主一从的架构
12如何恢复成slave
需要手动修复,重新加入主从集群
(2)自动切换(主从集群正常,一主两从)
故障切换后会生成lock文件,需要手动删除
此时,停掉server1上的mysql
自动切换成功,在13上可查看
修复11,在11上打开服务
此时,又构成了一主两从架构,12是master,11,13是slave
最后,删除管理端因为故障切换生成的的lock文件,以避免影响后面的操作
加入故障切换和在线切换脚本并对其做出相应的修改
测试
查看管理端日志,重新切换成功
恢复12的slave端
手动恢复
再进行一次手动切换
删除自动切换生成的锁定文件
手动切换不会生成锁定文件,VIP会随着master的改变而漂移