本文介绍在docker上安装mycat中间件,在安装配置mycat之前需要先做完主从库同步!
mycat的作用如上图。
1.下载mycat
http://dl.mycat.org.cn/
原地址:http://dl.mycat.io
2.解压mycat
tar -xvf Mycat-XXXXXXXXXX-linux.tar.gz
3.配置mycat
3.1配置schema.xml文件
1 <?xml version="1.0"?> 2 <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> 3 <mycat:schema xmlns:mycat="http://io.mycat/"> 4 <!-- TESTDB为配置在mycat中的逻辑数据库 --> 5 <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> 6 <!-- t_user为mysql中实际存在的物理表名 --> 7 <table name="t_user" primaryKey="uuid" dataNode="dn1,dn2" rule="sharding-by-murmur-uuid" /> 8 </schema> 9 <!--数据节点dn1,对应的主机c1,对应是数据库db1 --> 10 <dataNode name="dn1" dataHost="master" database="db_test" /> 11 <dataNode name="dn2" dataHost="slave1" database="db_test" /> 12 <!-- 主机1--> 13 <dataHost name="master" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native"> 14 <heartbeat>SELECT 'master localhost mysql 3306',COUNT(*) count from t_user</heartbeat> 15 <!--mysql数据库的连接串 --> 16 <writeHost host="hostM1" url="127.0.0.1:3306" user="root" password="123456"> 17 </writeHost> 18 </dataHost> 19 <!-- 主机2--> 20 <dataHost name="slave1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native"> 21 <heartbeat>SELECT 'slave1 docker mysql 3316',COUNT(*) count from t_user</heartbeat> 22 <writeHost host="hostM1" url="172.17.0.1:3316" user="root" password="123456"> 23 </writeHost> 24 </dataHost> 25 26 <!-- 27 Balance参数设置: 28 1. balance=“0”, 所有读操作都发送到当前可用的writeHost上。 29 2. balance=“1”,所有读操作都随机的发送到readHost。 30 3. balance=“2”,所有读操作都随机的在writeHost、readhost上分发 31 WriteType参数设置: 32 1. writeType=“0”, 所有写操作都发送到可用的writeHost上。 33 2. writeType=“1”,所有写操作都随机的发送到readHost。 34 3. writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。 35 switchType 目前有三种选择: 36 -1:表示不自动切换 37 1 :默认值,自动切换 38 2 :基于MySQL主从同步的状态决定是否切换 39 “Mycat心跳检查语句配置为 show slave status ,dataHost 上定义两个新属性: 40 switchType="2" 与slaveThreshold="100", 41 此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制。 42 Mycat心跳机制通过检测 show slave status 中的 "Seconds_Behind_Master", 43 "Slave_IO_Running", "Slave_SQL_Running" 三个字段来确定当前主从同步的状态以及 44 Seconds_Behind_Master主从复制时延。“--> 45 </mycat:schema>
3.2配置server.xml文件
1 <user name="mycat"> 2 <property name="password">123456</property> 3 <property name="schemas">TESTDB</property> 4 </user> 5 6 <!--只读用户 --> 7 <user name="user"> 8 <property name="password">123456</property> 9 <property name="schemas">TESTDB</property> 10 <property name="readOnly">true</property> 11 </user>
3.3配置rule.xml文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mycat:rule SYSTEM "rule.dtd"> 3 <mycat:rule xmlns:mycat="http://io.mycat/"> 4 <tableRule name="sharding-by-murmur-uuid"> 5 <rule> 6 <columns>uuid</columns> 7 <algorithm>murmur</algorithm> 8 </rule> 9 </tableRule> 10 11 <function name="murmur" class="io.mycat.route.function.PartitionByMurmurHash"> 12 <property name="seed">0</property><!-- 默认是0 --> 13 <property name="count">2</property><!-- 要分片的数据库节点数量,必须指定,否则没法分片 这里对应autopartition-long.text 配置id --> 14 <property name="virtualBucketTimes">160</property> 15 <!-- 一个实际的数据库节点被映射为这么多虚拟节点,默认是160倍,也就是虚拟节点数是物理节点数的160倍 --> 16 <!-- <property name="weightMapFile">weightMapFile</property> 节点的权重,没有指定权重的节点默认是1。以properties文件 17 的格式填写,以从0开始到count-1的整数值也就是节点索引为key,以节点权重值为值。所有权重值必须是正整数,否则以1代替 --> 18 <!-- <property name="bucketMapPath">/etc/mycat/bucketMapPath</property> 19 用于测试时观察各物理节点与虚拟节点的分布情况,如果指定了这个属性,会把虚拟节点的murmur hash值与物理节点的映 20 射按行输出到这个文件,没有默认值,如果不指定,就不会输出任何东西 --> 21 </function> 22 </mycat:rule>
3.4配置autopartition-long.text文件
1 # range start-end ,data node index 2 # K=1000,M=10000. 3 # 0-500M=0 4 # 500M-1000M=1 5 # 1000M-1500M=2 6 7 #对应rule.xml 中 <property name="count">2</property>中的值,值为多少就配置多少条 8 0-102=0 9 103-200=1
4.启动运行
1 在mycat解压目录的bin目录下运行 2 ./mycat [ console | start | stop | restart | status | dump ] 3 4 console:显示启动,输出运行日志 5 start:隐式启动,启动成功提示(./mycat start) 6 stop:停止mycat运行 7 restart:重新启动 8 status:查看启动状态 9 dump:导出
结束。
参考:https://blog.csdn.net/qq_37778018/article/details/122478934?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5-122478934-blog-108225392.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5-122478934-blog-108225392.pc_relevant_aa&utm_relevant_index=10