cobar文档 - 后端数据源心跳

时间:2021-09-18 04:12:15

心跳的目的是为了实时探知后端数据源的运行情况,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 >