2.23.2 dbGroup命令的具体使用方法和解释

外部ha启用参数

当项目准备使用dble的外部ha联动方式来完成高可用切换或者同步的时候,需要提前进行如下配置

bootstrap.cnf 中的对应参数

-DuseOuterHa=true

注意:本参数的调整需要重启dble服务

cluster.cnf 的对应参数

needSyncHa = true

  • 当此参数启用时,集群状态的dble将会在集群中同步自身的dbGroup的状态
  • 此配置会强制将bootstrap.cnf 中的useOuterHa设置为true
  • 当bootstrap.cnf 中的useOuterHa但cluster.cnf的needSyncHa不为true时,dble可以执行高可用切换的所有指令,但是其行为退化为单机dble,需要人工进行集群中多个dble的状态同步

注意:此参数的调整需要重启集群内的所有dble服务

关于dble中对于后端MySQL状态的解释

dbInstance的状态“disabled/enable”仅表示dble层面对于具体每个MySQL后端节点是否允许有流量的标识,和具体的MySQL存活状态无关

dbGroup @@disable

命令细节:
dbGroup @@disable name = 'dbGroup_name' [instance = 'instance_name']

  • 其中的dbGroup_name指的是在db.xml中配置的dbGroup的名称,而instance_name指的是在一个dbInstance的name
  • 当此命令不指定instance = '..'的内容时,默认将此dbGroup下所有dbInstance的状态置为disabled
  • 被标记为disabled的节点无法提供正常的查询,即使对应的mysql真实的存活着
  • 具体的dbInstance的disable状态可以通过管理端命令show @@dbInstance进行查询
  • 若当前dble服务尚存连接被disable的连接,在命令执行过程中会被全部关闭,包括正在新建过程中的连接,可能会导致少量的查询报错
  • 关闭连接的策略为对于使用中的连接先从池中删除,后续由定时任务(时间周期固定为5s)进行关闭;而空闲的连接则会直接关闭
  • 由于连接关闭策略具有延迟性,可能会导致disable命令返回结果后,后端连接实际上还没有关闭

dbGroup @@enable

命令细节:
dbGroup @@enable name = 'dbGroup_name' [instance = 'instance_name']

  • 其中的dbGroup_name指的是在db.xml中配置的dbGroup的名称,而instance_name指的是在一个dbInstance的name
  • 当此命令不指定instance = '..'的内容时,默认将此dbGroup下所有dbInstance的状态置为enable

dbGroup @@switch

命令细节: dbGroup @@switch name = 'dbGroup_name' master = 'instance_name'

  • 其中的dbGroup_name指的是在db.xml中配置的dbGroup的名称,而instance_name指的是在一个dbInstance的name
  • 此命令name和master内容都为必填,在缺少任意元素的状态下会报错
  • 此命令的作用会导致dbGroup下的标记为primary的dbInstance发生重置,也就是写节点会发生变化
  • 此命令不会导致所有dbInstance节点的disable状态变化,但如果命令使得一个dbInstance从primary退化成为非primary,此dbInstance上的所有既有连接都会被关闭,以确保新的写请求不会被写入到错误的dbInstance上面去,这可能导致一些前端连接的查询报错和事务失败

results matching ""

    No results matching ""