MySQL分片高可用集群之Cobar部署使用(4)

只有字符串完整地属于配置文件中,才算匹配到,不是前缀,如例子中只有a,b,c,d可以找到对应的节点,其他任何值都将放入默认节点。因此这种方式一般不是用于id等主键字段,而是其他种类有限的字段,如国家、省份等。

Dimension2PartitionFunction 二维分片
二维分片有两个维度,都需要配置,因此配置内容较多
rule.xml:

<tableRule>

<rule>

<columns>id, id2</columns>

<algorithm><![CDATA[ func2D(${id}, ${id2}) ]]></algorithm>

</rule>

<rule>

<columns>id</columns>

<algorithm><![CDATA[ func2D(${id}, null) ]]></algorithm>

</rule>

<rule>

<columns>id2</columns>

<algorithm><![CDATA[ func2D(null, ${id2}) ]]></algorithm>

</rule>

</tableRule>

<function

>

<property>string</property>

<property>2</property>

<property>512</property>

<property>:12</property>

<property>long</property>

<property>2</property>

<property>512</property>

</function>

从rule.xml文件中我们看到tableRule配置了三个rule,其中第一个规则是有两个参数的,后两个规则只有一个参数,这3个rule不是必须全配置,但是要实现只匹配一个维度的话,就需要配置,否则当查询语句中只有一个维度的key时会进行所有库的执行,效率不高。
函数需要指定两个维度,字符串和数字都可以,其他类型目前不支持。
同样schema.xml增加一个表格 

<table dataNode="dn0,dn1,dn2,dn3" rule="rule2D" />

如果需要二维分片,集群规模一般要相当大了,比如8*8=64,否则采用二维分片的意义不大。

第六步:Cobar自身集群配置

前面配置的cobar只是在一台机器上运行,而运行时cobar需要的资源是比较多的,一台cobar可以拖3台左右mysql服务器,而实际上只要用到cobar,mysql数量都在8台以上,所以需要多个cobar支撑,集群相关的内容在server.xml中配置,

<cluster>

<node>

<property>192.168.1.8</property>

<property>1</property>

</node>

<node>

<property>192.168.1.9</property>

<property>1</property>

</node>

<node>

<property>192.168.1.10</property>

<property>1</property>

</node>

</cluster>


每增加一台机器就多配置一个node,然后将这个配置文件复制到每台cobar电脑上,并启动。这时我们在任意一台电脑上用下面的命令查看活着的集群(宕机的节点不会显示)

MySQL [lyw]> show cobar_cluster;

+--------------+--------+

| HOST        | WEIGHT |

+--------------+--------+

| 192.168.1.8  |      1 |

| 192.168.1.9  |      1 |

| 192.168.1.10 |      1 |

+--------------+--------+

3 rows in set (0.00 sec)

此处虽然有host和weight两个值,但是cobar并没有做负载均衡相关的具体事情,只是告诉客户端,cobar集群的运行情况,让客户端自己制定负载均衡策略。

第七步:Cobar自身管理

前面讲的是数据操作,用的是8066端口,cobar提供集群管理功能默认用的是9066端口

bin/mysql -ulyw -p123456 -h127.0.0.1 -P9066

MySQL [(none)]> show @@help;

reload命令会是一个常用命令,当修改了配置文件,就执行下这个命令让配置生效。

MySQL [(none)]> reload @@config;

Query OK, 1 row affected (0.01 sec)

Reload config success


注意server.xml中的system部分不可以热加载,需要重启生效。
如果加载后发现有误,可以用rollback命令回滚配置,注意只能回滚一次。

假如我们要看下所有服务器的活动情况,我们可以用下面的命令

MySQL [(none)]> show @@heartbeat;

+--------+-------+-------------+-------+---------+-------+----------+---------+--------------+---------------------+-------+

| NAME  | TYPE  | HOST        | PORT  | RS_CODE | RETRY | STATUS  | TIMEOUT | EXECUTE_TIME | LAST_ACTIVE_TIME    | STOP  |

+--------+-------+-------------+-------+---------+-------+----------+---------+--------------+---------------------+-------+

| cobar1 | COBAR | 192.168.1.8 |  8066 |      1 |    0 | idle    |  10000 | 0,0,0        | 2015-10-22 10:33:28 | false |

| cobar2 | COBAR | 192.168.1.9 |  8066 |      -1 |    3 | checking |  10000 | 0,0,0        | 2015-10-22 10:33:27 | false |

| cobar3 | COBAR | 192.168.1.10|  8066 |      -1 |    1 | checking |  10000 | 0,0,0        | 2015-10-22 10:33:26 | false |

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c28903e8abfd246b63014d434c8319eb.html