下载

安装

  • 解压即可

编辑

  • conf 文件 | 文件 | 作用 | 修改内容 | | —- | —- | —- | | rule.xml | 切分算法 | 修改算法,比如修改 mod-long 分片数量为 2 | | server.xml | 虚拟为一个 MySQL | 修改访问用户名,密码和逻辑库 | | schema.xml | 数据库连接、读写分离、负载均衡、数据表映射 | 定义数据库连接、读写分离、负载均衡、数据表映射 |

  • rule.xml

    1. <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
    2. <!-- how many data nodes -->
    3. <property name="count">2</property>
    4. </function>
  • server.xml ```xml

    Root666. test test
  1. - schema.xml
  2. ```xml
  3. <?xml version="1.0"?>
  4. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
  5. <mycat:schema xmlns:mycat="http://io.mycat/">
  6. <!--
  7. 定义MyCat的逻辑库,逻辑库的概念与MySQL中的 database 概念相同
  8. 可配置多个
  9. -->
  10. <!-- 其中checkSQLschema 表明是否检查并过滤SQL中包含schema的情况,
  11. 如逻辑库为 TESTDB, 则可能写为select * from TESTDB.edu_user,此时会自动过滤TESTDB,SQL变为select * from edu_user,
  12. 若不会出现上述写法,则可以关闭属性为false -->
  13. <!--sqlMaxLimit默认返回的最大记录数限制,即自带 limit
  14. MyCat1.4版本里面,用户的 Limit 参数会覆盖掉MyCat的sqlMaxLimit默认设置-->
  15. <schema name="test" checkSQLschema="true" sqlMaxLimit="100">
  16. <!-- 配置分片中真实数据库中的表事务逻辑表 -->
  17. <table name="t_user" primaryKey="id" dataNode="dn1,dn2" rule="mod-long"/>
  18. </schema>
  19. <!--
  20. 定义MyCat的数据节点
  21. -->
  22. <!-- database 真实数据库 -->
  23. <dataNode name="dn1" dataHost="cluster1" database="test" />
  24. <dataNode name="dn2" dataHost="cluster2" database="test" />
  25. <!-- 配置连接关系 -->
  26. <!--
  27. maxCon minCon 连接池大小
  28. balance 负载均衡类型
  29. 0 不开启读写分离,读请求都发送到当前可用的 writeHost
  30. 1 全部的 readHost 和 stand by writeHost (readHost 对应的 writeHost?) 参与 select 语句的负载均衡
  31. 2 所有 writeHost 和 readHost 一起负责读请求
  32. 3 writeHost 处理写 readHost 处理读
  33. writeType 写操作负载均衡
  34. 0 所有的写操作都分发给第一个 writeHost,仅当该节点宕机,才启用第二个 writeHost
  35. 切换记录在配置文件中: dnindex.properties
  36. 1 仅仅对 galera 集群这种集群起效,mycat 会随机选择一个 writeHost 并且写入数据
  37. 非 galera 集群,不要配置,否则会导致数据不一致的严重清空
  38. switchType 切换节点判断
  39. 0 根据 mycat 心跳检测进行判断
  40. 1 集群主从同步的状态信息判断
  41. 2 nothing
  42. -->
  43. <dataHost name="cluster1" maxCon="1000" minCon="10" balance="2"
  44. writeType="1" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
  45. <!-- 心跳检测 sql -->
  46. <heartbeat>select user()</heartbeat>
  47. <!-- can have multi write hosts -->
  48. <!-- 配置写节点和从节点,pxc集群可读可写,所以随便搞 -->
  49. <writeHost host="w1" url="192.168.1.201:3306" user="admin"
  50. password="Root666.">
  51. <readHost host="w1r1" url="192.168.1.202:3306" user="admin" password="Root666." ></readHost>
  52. <readHost host="w1r2" url="192.168.1.203:3306" user="admin" password="Root666." ></readHost>
  53. </writeHost>
  54. <!-- 配置冗余 -->
  55. <writeHost host="w2" url="192.168.1.202:3306" user="admin"
  56. password="Root666.">
  57. <readHost host="w2r1" url="192.168.1.201:3306" user="admin" password="Root666." ></readHost>
  58. <readHost host="w2r2" url="192.168.1.203:3306" user="admin" password="Root666." ></readHost>
  59. </writeHost>
  60. </dataHost>
  61. <dataHost name="cluster2" maxCon="1000" minCon="10" balance="2"
  62. writeType="1" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
  63. <!-- 心跳检测 sql -->
  64. <heartbeat>select user()</heartbeat>
  65. <!-- can have multi write hosts -->
  66. <!-- 配置写节点和从节点,pxc集群可读可写,所以随便搞 -->
  67. <writeHost host="w1" url="192.168.1.204:3306" user="admin"
  68. password="Root666.">
  69. <readHost host="w1r1" url="192.168.1.205:3306" user="admin" password="Root666." ></readHost>
  70. <readHost host="w1r2" url="192.168.1.206:3306" user="admin" password="Root666." ></readHost>
  71. </writeHost>
  72. <!-- 配置冗余 -->
  73. <writeHost host="w2" url="192.168.1.205:3306" user="admin"
  74. password="Root666.">
  75. <readHost host="w2r1" url="192.168.1.204:3306" user="admin" password="Root666." ></readHost>
  76. <readHost host="w2r2" url="192.168.1.206:3306" user="admin" password="Root666." ></readHost>
  77. </writeHost>
  78. </dataHost>
  79. </mycat:schema>

端口配置

端口 作用
8066 数据服务,外部访问
9066 管理端口,接收指令,比如重载指令

运行和关闭

cd bin mycat start mycat stop mycat console # 控制台启动这种启动方式在控制台关闭后, MyCat 服务也将关闭,适合调试使用

重载文件

  • mysql / navivate 连接 **9066 **端口,键入 reload [@@](#)config_all;

**

注意

设置为 MySQL 大小写不敏感

  • Linux 版本的 MySQL ,需要设置为 MySQL 大小写不敏感,否则可能会发生找不到的问题
    • mycat 上创建表,对应 mysql 中会生成 大写名称 的表
      1. [mysqld]
      2. lower_case_table_names=1