心跳的目的是为了实时探知后端数据源的运行情况,Cobar是通过向后端数据源执行一条SQL语句,根据该语句的返回结果判断数据源的运行情况。
该SQL语句可以由用户自定义,下面是一种简单的配置方式
<property
name="heartbeat">select user()</property> |
这种方式无需数据准备,但不能够判断数据源读写是否全部正常,更多的情况,我们在每个数据源的schema中新建一个心跳表xdual,
# 注意:需要在每个数据源中都新建这张表
create
table xdual( id
int not
null, gmt datetime,
primary
key (id)) |
心跳表中准备至少一条数据, 让Cobar每次心跳对这条数据进行update,根据update的结果判断心跳是否正常。
<property
name="heartbeat">update xdual set x=now() where id = 1}</property> |
如果您部署了Cobar集群,集群中的每个Cobar节点都会向数据源执行update语句,为了提高心跳效率,尽量避免两个Cobar节点同时update一条数据
我们给出了一种优化方式,用户可以根据自己集群中的Cobar节点数在心跳表xdual中多准备几条数据,Cobar随机选择一条数据做更新,这样便可让每个Cobar节点尽量更新不同的数据
例如我们的每个集群有3-6个Cobar节点,我们向xdual表中准备10条数据,id分别为1-10,按照如下方式配置心跳:
# 该SQL含义是从1-10中随机选择一个id进行更新
<property
name="heartbeat">update xdual set x=now() where id=${(1,10)}</property> |
本文介绍了Cobar如何通过心跳机制来监测后端数据源的状态。包括两种方式:一种是使用自定义SQL语句,另一种是利用心跳表xdual进行更新操作以判断数据源的健康状况。还提供了一些优化建议。
2307

被折叠的 条评论
为什么被折叠?



