---
title: 部署Mycat负载均衡
description: "1. 配置Mycat的schema.xml。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmycat_03_0029.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmycat_03_0029.html
indexId: 05dc70045b30822dca67a765ccd0693e05de7c6a05856799dde4692209b8eed569
---
# 部署Mycat负载均衡

1. 配置Mycat的schema.xml。

  a. 打开文件。
    1 vim /usr/local/mycat/conf/schema.xml

  b. 按“i”进入编辑模式，替换成如下内容。
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="sysbench" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> <!-- <table name="sbtest1" dataNode="dn1"/>--> </schema> <dataNode name="dn1" dataHost='dh1' database="sysbench" /> <dataHost name="dh1" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>show slave status</heartbeat> <writeHost host="hostm" url="localhost:3312" user="root" password="123456"> <readHost host="hosts2" url="localhost:3313" user="root" password="123456"> </readHost> </writeHost> </dataHost> </mycat:schema>

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
2. 启动Mycat并查看状态。
  1 2 3 mycat stop mycat start mycat status

3. 执行查询测试。

  a. 打开文件。
    1 vim /home/read.sh

  b. 按“i”进入编辑模式，添加如下内容。
    1 2 3 4 5 #!/bin/bash for i in {1..1000} do /usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "select @@report_host" done

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 执行脚本。
    1 sh /home/read.sh

    查询操作被随机地路由到主库和从库上执行。

    Mycat控制负载均衡主要有两个参数balance和writetype。 balance参数设置： 0：不开启读写分离机制，所有读操作都发送到当前可用的writeHost上。 1：全部的readHost与standby writeHost参与select语句的负载均衡。 2：所有读操作都随机在writeHost、readHost上分发。当前测试用例的balance参数为2。 3：所有读请求随机分发到writeHost对应的readHost执行，writeHost不负担读压力。 writetype参数设置： 0：所有写操作发送到配置的第一个writeHost，当第一个writeHost宕机时，切换到第二个writeHost，重新启动后以切换后的为准，切换记录在配置文件dnindex.properties中。 1：所有写操作都发送到配置的writeHost。 2：尚未实现。

4. 执行写入测试。

  a. 打开文件。
    1 vim /home/write.sh

  b. 按“i”进入编辑模式，添加如下内容。
    1 2 3 4 5 #!/bin/bash for i in {1..20000} do /usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "insert into test1(id,report_hostname) values($i,@@report_host)" done

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 执行脚本。
    1 sh /home/write.sh

5. 确认测试数据。
  1 /usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "select * from test1"

  所有的插入操作都在主库执行。
