MySQL高可用架构设计方案
6.5.测试场景设计
6.5.1.测试环境
测试环境 硬件环境 1台MySQL主库服务器(2个实例master1、master2) 1台MySQL从库服务器(2个实例slave1、slave2) 1台Zookeeper服务器(1个实例) RedHat6 2.6.32-71 64位 MySQL 5.6.11-log 二进制分发版 Zookeeper 3.4.5 stable版 操作系统 软件环境
6.5.2.测试用例
用例编号 测试场景 场景描述 测试目的 前提条件 ha001 MySQL连接中断 Agent与MySQL之间的连接中断 Agent的自动重连机制及连接失败后的切换处理 1、Agent与Zookeeper之间的通信正常 2、Agent与MySQL之间的通信正常 3、Agent正常运行 4、Zookeeper正常运行 5、MySQL正常运行 在MySQL服务器上杀掉Agent的连接进程 在MySQL中Kill 掉Agent的连接进程 1、Agent在设置的间隔时间内进行自动重连,连续尝试5次,如果没有连接成功,则发起自动切换,重连的间隔和时间是可以设置的 2、Agent如果自动重连成功,则返回成功的消息 3、MySQL的连接如果是被Kill掉了,则需要创建连接 ha002 MySQL连接超时 Agent与MySQL的一次连接超过设置的连接超时时间 Agent的自动重连机制及处理策略 1、Agent与Zookeeper之间的通信正常 2、Agent与MySQL之间的通信正常 测试方法 输入/动作 期望的输出 用例编号 测试场景 场景描述 测试目的 前提条件 MySQL高可用架构设计方案
3、Agent正常运行 4、Zookeeper正常运行 5、MySQL正常运行 测试方法 输入/动作 期望的输出 将MySQL的连接超时时间设置的足够小 设置MySQL的wait_timeout参数 1、Agent在设置的间隔时间内进行自动重连,连续尝试5次,如果没有连接成功,则发起自动切换,重连的间隔和时间是可以设置的 2、Agent如果自动重连成功,则返回成功的消息
用例编号 测试场景 场景描述 测试目的 前提条件 ha003 MySQL主库的单个实例挂掉 MySQL主库上的1个实例直接挂掉了 MySQL主库上的实例挂掉后能否及时切换并提供正常的服务 1、Agent与Zookeeper之间的通信正常 2、Agent与MySQL之间的通信正常 3、Agent正常运行 4、Zookeeper正常运行 5、MySQL正常运行 人为停掉MySQL主库上的1个实例 通过mysqladmin shutdown关闭MySQL实例 通过kill -9杀掉MySQL主库的实例 1、Agent发起自动切换,在较短的时间内将1个从库置为主库,并提供MySQL服务 2、如果在可接受的时间内恢复了MySQL,Agent不发起自动切换 测试方法 输入/动作 期望的输出
用例编号 测试场景 场景描述 测试目的 前提条件 ha004 MySQL服务器挂掉 MySQL主库服务器直接挂掉不可用 MySQL主库服务器挂掉后能否进行正常的MySQL服务 1、Agent与Zookeeper之间的通信正常 2、Agent与MySQL之间的通信正常 3、Agent正常运行 4、Zookeeper正常运行 5、MySQL正常运行 人为关闭MySQL的主库服务器 通过shutdown命令关掉MySQL的主库服务器 1、Agent发起自动切换,在较短的时间内将1个从库置为主库,并提供MySQL服务 2、如果在可接受的时间内恢复了MySQL,Agent不发起自动切换 测试方法 输入/动作 期望的输出
MySQL高可用架构设计方案
用例编号 测试场景 场景描述 测试目的 前提条件 ha005 MySQL主从连接断掉 MySQL主库的1个实例与从库的1个实例主从复制异常中断 MySQL主从复制异常中断能否进行自动切换 1、Agent与Zookeeper之间的通信正常 2、Agent与MySQL之间的通信正常 3、Agent正常运行 4、Zookeeper正常运行 5、MySQL的主库和备库上的1个实例是正常运行的 关闭MySQL主库上的1个实例 停止MySQL从库的复制进程 用mysqladmin shutdown命令关闭MySQL主库上的1个实例 用stop slave关闭从库的复制进程 1、Agent能够在可接受的时间内对MySQL进行切换,并将从库置为新的主库,read-only属性为可写 2、如果在规定的时间内将MySQL主从复制恢复正常,则Agent不需要发起自动切换 测试方法 输入/动作 期望的输出
用例编号 测试场景 场景描述 测试目的 前提条件 ha006 Agent出现异常退出 Agent因为异常或压力过大导致退出 Agent的自动恢复机制是否完善 1、Agent与Zookeeper之间的通信正常 2、Agent与MySQL之间的通信正常 3、MySQL主备状态正常 4、Zookeeper正常运行 人为干涉关闭Agent进程 通过kill -9 命令杀掉Agent的进程 1、Agent在设置的recv_timeout时间内能够自动重启,并恢复正常 2、Agent如果没有在recv_timeout时间内自动重启成功,则进行切换,这 个时候切换无法设置read-only属性,需要第三方去设置 测试方法 输入/动作 期望的输出
用例编号 测试场景 场景描述 测试目的 前提条件 ha007 Agent服务器死机 Agent服务器挂掉了 Agent能否快速恢复 1、Agent与Zookeeper之间的通信正常 2、Agent与MySQL之间的通信正常 3、MySQL主备状态正常 MySQL高可用架构设计方案
4、Zookeeper正常运行 测试方法 输入/动作 期望的输出 关掉Agent服务器 通过shutdown命令关掉Agent服务器 1、Agent服务器在设置的recv_timeout时间内如果恢复正常,则服务器开机后Agent能够自动启动并恢复正常 2、Agent服务器如果没有在recv_timeout时间内恢复正常,则进行切换,这个时候切换无法设置read-only属性,需要第三方去设置
用例编号 测试场景 场景描述 测试目的 前提条件 ha008 Agent与Zookeeper网络异常 Agent与Zookeeper由于网络原因连接不上 Agent在网络中断时的处理机制及恢复后的处理机制 1、Agent本身运行正常 2、Zookeeper本身运行正常 3、MySQL主备库运行正常 人为中断Agent与Zookeeper服务器之间的网络通信 1、中断Agent与Zookeeper服务器网络通信30秒后恢复网络通信 2、中断Agent与Zookeeper服务器网络通信5分钟后恢复网络通信 1、中断网络通信时,Agent在设置的recv_timeout时间内能够自动重连Zookeeper,如果在这个时间内网络恢复正常,则正常连接Zookeeper;如果超出这个时间内网络通信仍然中断,则进行自动切换 测试方法 输入/动作 期望的输出