作者:洪斌

爱可生南区负责人,MySQL ACE 数据库行业老兵。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


dble 作为 MySQL 流⾏的分布式开源中间件,在性能、稳定性、可⽤性已经过⼤规模用户使⽤考验,成为许多用户替换 mycat 不⼆之选。

作为 MySQL DBA 熟悉 dble ⽤法和运维⼿段,是掌握 MySQL 分布式架构的必备技能之⼀,这⾥我们整理了⼀些常⽤的运维命令,在你运维过程中能帮你快速诊断重要信息。

dble 有两个访问端⼝,默认服务端⼝是8066,接收业务请求,管理端⼝是9066,接收管理请求。

在 conf/bootstrap.cnf 配置⽂件中可调整这两个的端⼝监听

在 conf/user.xml 配置⽂件中,分别定义了管理⽤户 managerUser 、业务⽤⼾ shardingUser 、读写分离⽤户 rwSplitUser ,登陆管理端⼝的⽤户需要配置管理⽤⼾。

我们使⽤ mysql 客户端⼯具可以登陆 dble 的两种端⼝。

1.基本信息

show @@help

查看所有可⽤的管理命令,记住它就不会忘记有哪些命令了。

show @@server

显⽰dble内存使⽤率,运⾏时⻓,字符集

show @@database

查看 dble 配置了哪些逻辑库。

show @@shardingNode

查看逻辑分⽚节点信息。schema_exists 显⽰的信息不是实时获取的,只表⽰加载配置时刻,对象是存在的。

show @@sql

查看 dble 最近接收到的1024条 SQL 语句,每5s清理⼀次,可以充当下 general_log 。

show @@sql.high

查看 SQL 执⾏频次,执⾏频次⾼的和响应延迟慢的都是我们要重点关注的。

show @@sql.sum.user

按⽤户维度,显⽰读写次数和⽐例,了解负载情况,才好有针对性的优化。读多写少,读写分离;写多读少,优化io或热点拆分。

show @@sql.sum.table

按表维度,显⽰读写次数和⽐例,哪个表是热点⼀⽬了然。

show @@sql.slow

查看 SQL 执⾏时间最慢的 top10 ,没开慢⽇志,也不影响你快速定位慢 SQL 。

show @@sysparam

查看 dble 配置参数信息,上报问题前,先把参数配置搜集⻬了

show @@white

查看⽩名单设置,控制⽤⼾通⾏。

show @@binlog.status

查看当前后端实例的 gtid_executed ,集群的⼀致性备份就靠它了

show @@algorithm where schema=’testdb’and table=’sbtest1′

查看指定表使⽤的分⽚算法,⽐看xml配置⽂件⽅便。

show @@shardingNodes where schema=’testdb’ and table=’sbtest1′

查看指定表的逻辑分⽚节点

show @@reload_status

查看配置⽂件 reload 时间,每 reload ⼀次 index 会加1

show @@user

查看⽤户列表,是否为管理⽤户,是否为只读⽤户,⽤户的最⼤连接数限制都⼀⽬了然。

show @@user.privilege

查看前端访问⽤户的权限信息

show @@data_distribution where table =’testdb.sbtest1′

查看指定表所对应逻辑分⽚的⾏数,可判断数据分⽚的分布倾斜

show @@connection_pool

查看 dble 对于后端实例配置的连接参数

file @@list 3.21.06已废弃

查看 dble 配置⽬录 conf ⽂件夹中的⽂件名和最后⼀次修改时间,有安全⻛险在 3.21.06 版本已移除。

file @@show filename 3.21.06 已废弃

可显⽰ dble 配置⽬录 conf ⽂件下指定⽂件内容,不包括注释信息,有安全⻛险在 3.21.06 版本已移除

file @@upload filename content 3.21.06 已废弃

上传⽂件到 dble 的 conf ⽬录下,filename 是⽂件名,content 是向⽂件中写⼊的内容,有安全⻛险在 3.21.06 版本已移除

2.故障诊断

show @@heartbeat

查看后端数据库实例的⼼跳检测情况,需开启⼼跳检测功能,RS_CODE 为 OK 表⽰⼼跳正常,RS_MESSAGE 显⽰⼼跳语句的反馈信息,快速诊断 dble 到后端数据库实例链路连通性。

show @@backend

查看 dble 到后端数据库实例的连接信息。

show @@connection

查看当前活跃的前端连接信息,⽹络流量信息,可⽤来诊断前端的连接会话。

show @@connection.sql

查看前端连接接收到的 SQL 信息

show @@session

查看当前活跃的后端连接

show @@thread_used

查看 dble 内部线程负载情况,若观测到线程负载⽐例很⾼,说明线程负载饱和,可适当调⼤线程数量,参考dble性能观测

  • BussinessExecutorX

    • 前端业务(应⽤客⼾端)处理线程,主要处理前端请求的解析,sql 解析路由,下发查询到 mysql 实例等

    • bootstrap.cnf 配置⽂件的 ProcessorExecutor 参数控制其数量

  • backendBusinessExecutorX

    • 后端业务(数据库)处理线程,主要处理后端 mysql 询结果的返回解析,结果聚合,并发回结果到 client

    • bootstrap.cnf 配置⽂件的 backendProcessorExecutor 参数控制其数量

  • _NIO_REACTOR_FRONT_X

    • 负责前端(应⽤客⼾端)请求收发的线程,再把数据交给 BussinessExecutor 处理

    • bootstrap.cnf 配置⽂件的 processors 参数控制其数量

  • $_NIO_REACTOR_BACKEND_X

    • 负责后端(数据库)请求收发的线程,再把数据交给 backendBusinessExecutor 处理

    • bootstrap.cnf 配置⽂件的 backendProcessors 参数控制其数量

enable @@general_log

启⽤ dble general_log ,想了解前端发送些什么 SQL ,就⽤它了,有开销不宜⻓期启⽤。

3.维护操作

kill @@connection

杀掉客⼾端的连接,参数为 show @@connection 显⽰的 FRONT_ID 值

reload @@config_all

重载配置⽂件,可在不停 dble 服务的情况下,修改 db.xml、user.xml、sharding.xml

dryrun

检查下配置⽂件,看看有哪些潜在问题。

check full @@metadata

检查表定义是否⼀致,该操作不是实时的⼀致性检查,是最近⼀次加载配置时的⼀致性,执⾏命令时不会向后端实例发送请求。

  • consistent_in_sharding_nodes 表⽰分⽚节点之间的⼀致性,1代表⼀致

  • consistent_in_memory 表⽰ dble 缓存中与后端实例的⼀致性,1代表⼀致

check @@global

检查全局表⼀致性,执⾏命令时会向后端实例的每个逻辑分⽚发送 checksum table 命令,关注 DISTINCT_CONSISTENCY_NUMBER ,若⼤于1表⽰有不只⼀种检查结果,说存在全局表不⼀致的情况。

split src dest [-sschema] [-r500] [-w500] [-l10000] [–ignore] [-t2]

把准备导⼊ dble 集群的⼤表,按逻辑分⽚节点拆分成多个 sql ⽂件,拆分后可以直接并⾏导⼊后端实例。

pause @@shardingNode = ‘dn1’ and timeout = 10000;

暂停逻辑分⽚的流量,可在分⽚扩容迁移过程中使⽤。扩容基本流程:

  1. 克隆新的分⽚节点

  2. 修改 schema.xml 更新 datanode 与新的分⽚节点关系

  3. 暂停分⽚访问 pause @@shardingNode = 'dn1' and timeout= 10;

  4. 补⻬该分⽚增量 binlog ⽇志

  5. 加载⽣效配置 reload @@config_all

  6. resume 恢复流量

  7. 清理掉原实例中已扩容分⽚和新实例中未扩容分⽚的数据


avatar
100
  Subscribe  
提醒