鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

部署Mycat负载均衡

  1. 配置Mycat的schema.xml。
    1. 打开文件。
      1
      vim /usr/local/mycat/conf/schema.xml
      
    2. “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>
      

    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  2. 启动Mycat并查看状态。
    1
    2
    3
    mycat stop
    mycat start
    mycat status
    
  3. 执行查询测试。
    1. 打开文件。
      1
      vim /home/read.sh
      
    2. “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
      
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    4. 执行脚本。
      1
      sh /home/read.sh
      

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

      Mycat控制负载均衡主要有两个参数balance和writetype。

      • balance参数设置:

        0:不开启读写分离机制,所有读操作都发送到当前可用的writeHost上

        1:全部的readHost与stand by writeHost参与select语句的负载均衡。

        2:所有读操作都随机在writeHost、readHost上分发。当前测试用例的balance参数为2。

        3:所有读请求随机分发到writeHost对应的readHost执行,writeHost不负担读压力。

      • writetype参数设置:

        0:所有写操作发送到配置的第一个writeHost,当第一个writeHost宕机时,切换到第二个writeHost,重新启动后以切换后的为准,切换记录在配置文件dnindex.properties中。

        1:所有写操作都发送到配置的writeHost。

        2:尚未实现。

  4. 执行写入测试。
    1. 打开文件。
      1
      vim /home/write.sh
      
    2. “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
      
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    4. 执行脚本。
      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"
    

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