---
title: 验证高可用
description: "1. 模拟停用一台SECONDARY节点后，测试读请求的情况。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengdbsmysqlrouter_03_0020.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengdbsmysqlrouter_03_0020.html
indexId: f02fc3ce6295817d63591e6e9d3f8c4324f303a0340baa21f0b2f8275f4cfdea78
---
# 验证高可用

1. 模拟停用一台SECONDARY节点后，测试读请求的情况。

  a. 登录数据库从库1。
    1 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysqls.sock

  b. 关闭数据库。
    1 shutdown;

  c. 登录主库并查看组成员信息。
    1 2 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysqlm.sock select * from performance_schema.replication_group_members;

  d. 执行读请求脚本。
    1 sh /home/read_6447.sh

    数据库127.0.0.1:3307服务停用了，读端口只路由到127.0.0.1:3308服务上，测试符合预期。

2. 模拟停用两台SECONDARY节点后，测试读路由的情况。

  a. 登录数据库从库2。
    1 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysqls2.sock

  b. 关闭数据库。
    1 shutdown;

  c. 登录主库并查看组成员信息。
    1 2 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysqlm.sock select * from performance_schema.replication_group_members;

  d. 执行读请求脚本。
    1 sh /home/read_6447.sh

    所有SECONDARY服务器停用了，读端口路由到PRIMARY节点服务127.0.0.1:3306上，测试符合预期（round-robin-with-fallback算法实现的）。

3. 模拟PRIMARY节点切换。

  a. 分别启动数据库从库1和数据库从库2。
    1 2 /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf-slave-mgr & /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf-slave-2-mgr &

  b. 分别登录到数据库从库1和数据库从库2。
    1 2 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysqls.sock /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysqls2.sock

  c. 分别在登录到数据库从库1和数据库从库2里执行如下语句启动MGR。
    1 START GROUP_REPLICATION;

  d. 查看组成员信息（可在MGR群组的任意成员中查看）。
    1 select * from performance_schema.replication_group_members;

  e. 将从库2设置为PRIMARY节点，其它为SECONDARY节点。
    1 select group_replication_set_as_primary('从库2的member_id');

  f. 执行读请求脚本。
    1 sh /home/read_6446.sh

  g. 执行写请求脚本。

    1. 编辑文件。
      1 vim /home/write_6446.sh

    2. 替换为如下内容。
      1 2 3 4 5 #!/bin/bash for i in {1001..2000} do /usr/local/mysql/bin/mysql -uroot -p123456 -P6446 -h127.0.0.1 -Dsysbench -e "insert into test1(id,report_serverid) values($i,@@server_id)" done

    3. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
    4. 执行写请求脚本。
      1 sh /home/write_6446.sh

    5. 确认测试数据。
      1 /usr/local/mysql/bin/mysql -uroot -p123456 -P6446 -h127.0.0.1 -Dsysbench -e "select * from test1"

  h. 执行读请求脚本。
    1 sh /home/read_6447.sh

    写端口（6446端口）所有的读写请求都路由到PRIMARY服务127.0.0.1:3308上，读端口（6447端口）所有的读请求都路由到SECONDARY服务127.0.0.1:3306和127.0.0.1:3307上，测试符合预期。
