拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Linux学习10-mysql路由器,redis数据库及codis部署

MySQL路由器实现负载均衡安装MySQL router编辑配置文件手动添加读写只读端口重启服务sever1上mysql创建新用户再创建test组sever4连接7001端口三个sever上都安装网络连接查看工具查看负载均衡innoDB Cluster让 MySQL Router自动感知集群内部变化可手动控制读写权和只读权的分配不依靠IP通过角色分配mgr单主模式修改mysql.conf打开单主模式sever1上启动引导模式启动组复制sever2sever3MySQL shell集成了多种功能的数据库交互与开发平台安装主节点sever1接管mgr集群验证集群状态全部onlineinnodb MySQL router自动生成配置此时的mysql router配置文件自动添加新的只读读写端口判断不再依靠IP改为由角色判断传统协议和属于 MySQL shell的X协议重启服务连接6446端口此时连接的是sever1primarydown掉sever1的组复制发现sever3变为primary此时路由器自动连接sever3再启动sever1的组复制sever3依旧为primarysever1变为secondary依旧连接sever3MySQL MHA高可用为 MySQL 主从架构提供自动故障转移MHA部署将集群恢复到一主两从的状态配置文件IO和SQL正常sever4下载所需rpm包安装下载epel依赖manager依赖下载sever4管理端设置ssh免密把密钥复制到各节点复制客户端软件到sever123客户端新建文件夹新建文件参数如图在master上设置mysql 管理员权限slave节点会自动同步检测各节点ssh免密连接成功检测主从复制集群状态通过故障切换master正常时的手动切换脚本后面的时间参数越大越好保证slave的延迟不会影响到数据传输清空内存表缓存开始切换成功笔者这里一直切换失败将原本的master与slave1对调之后成功master故障时的手动切换手动停止master的mysqld服务模拟故障输入脚本注意IP和端口选项依旧全部yes成功切换自动切换再手动把刚才模拟故障的节点启动并加入集群恢复为一主两从,记得将sever3的指向也改回sever1自动切换的前提是一主两从必须正常又将sever1变为master故障切——换后会生成lock文件需要手动删除该文件是为了防止重复切换启动manger程序并打入后台运行完成切换任务后进程会自动退出修改配置文件加入故障切换脚本去掉master那两行的注释,并修改路径关闭master之后会自动发起故障切换切换完成后mha程序自动退出sever3的master已经切换为sever2redis数据库高性能的内存数据结构存储系统redis部署编译安装安装编辑文件注释图中行运行安装脚本选项全部默认修改配置文件*表示监听所有端口重启查看端口redis主从复制将redis的文件拷贝到所需的从节点sever2sever3运行安装脚本选项全部默认修改配置文件监听全部端口复制主节点数据重启服务测试查看sever1上redis信息两个slave正确sever1上设置一个名字查看sever2是否同步只有主节点可以操作从节点只读redis故障切换投票策略当一个slave没有在设定时间内收到master的有效响应则该slave会将master标记为主观下线此时该slave会向其他所有slave发送询问以查看其他slave与master的连接情况如果该slave收到“是”没有收到master的有效响应的个数大于设定值那么此时的master就会被标记为客观下线此时启动故障切换流程master转换为slave时自动连接新master但client可能仍旧连接旧master写入数据但slave会flushall清除数据所以需要添加校验min-slaves-to-write2保证master一定有两个slave配置复制文件切目录编辑文件、设置master和延迟时间复制到sever2和sever3其他sever直接启动服务目前的master为sever1136关闭sever1redist master其他sever上显示master down将sever3切换为新的master147启动sever1的服务查看sever1的状态重新连接的sever1变为slave其他sever显示sever1以slave身份重新连接手动设置最小slave数量down掉一个slave此时master无法写入不满足最小slave数量redis集群将数据自动分片Sharding到多个节点上并结合主从复制实现高可用性从而构建了一个能够处理海量数据和高并发请求的、容错的逻辑数据库在redis中找到cluster启动脚本创建集群这里可以看到master与slave的关系查看集群状态连接集群查看状态这里30001的slave为30006在30001中写入数据重定向到30004关闭redis实例集群实现自动切换重新启动会将关闭的30002重新拉起可以看到原本为master的30002变为slave原本为slave的30004变为master查看刚才写入的数据保存完好添加集群节点修改配置文件将原先的6改为8再启动两个集群节点运行脚本添加节点此时添加的30007为master查看再添加30008将其作为30007的slave查看迁移hash槽迁移3000槽位由30007接收从所有节点中均匀的迁出一部分查看结果迁移成功codis集群分布式 Redis 解决方案使Redis 突破单机内存限制实现水平扩展客户端连接 Codis Proxy像连单机 Redis 一样发起请求Proxy 通过 CRC32(key) % 1024 计算出 key 所属的 Slot 编号再从本地缓存的路由表中查到该 Slot 对应的 Server Group一主多从的 Redis 节点组然后将请求转发到对应的 Redis 节点执行结果原路返回给客户端当需要扩容时通过 Dashboard 将部分 Slot 从旧节点在线迁移到新节点迁移过程中如果有请求命中正在迁移的 keyProxy 会强制先迁移该 key 再转发请求全程业务无感知、不中断服务。github上下载安装包下载GO编译环境下载zookeepercodis依赖解压启动zookeeper服务解压codis包到/usr/local/codis/bin中间的过程笔者整理了word文档还记录了一些可能出现的错误Codis 3.x 单机单节点标准部署指南https://www.kdocs.cn/l/ca0SfEpSNcFfcodis部署成功写入和读取正常
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门