美文网首页
分布式 | dble 运维命令知多少

分布式 | dble 运维命令知多少

作者: 爱可生开源社区 | 来源:发表于2021-10-13 14:46 被阅读0次

    作者:洪斌

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

    本文来源:原创投稿

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


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

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

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

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

    image

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

    image

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

    image

    1.基本信息

    show @@help

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

    show @@server

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

    image

    show @@database

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

    image

    show @@shardingNode

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

    image

    show @@sql

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

    show @@sql.high

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

    image

    show @@sql.sum.user

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

    image

    show @@sql.sum.table

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

    image

    show @@sql.slow

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

    image

    show @@sysparam

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

    image

    show @@white

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

    image

    show @@binlog.status

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

    image

    show @@algorithm where schema='testdb'and table='sbtest1'

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

    image

    show @@shardingNodes where schema='testdb' and table='sbtest1'

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

    image

    show @@reload_status

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

    image

    show @@user

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

    image

    show @@user.privilege

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

    image

    show @@data_distribution where table ='testdb.sbtest1'

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

    image

    show @@connection_pool

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

    image

    file @@list 3.21.06已废弃

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

    image

    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 版本已移除

    image

    2.故障诊断

    *show @@heartbeat

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

    image

    show @@backend

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

    image

    show @@connection

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

    image

    show @@connection.sql

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

    image

    show @@session

    查看当前活跃的后端连接

    image

    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 参数控制其数量

    image

    enable @@general_log

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

    image

    3.维护操作

    kill @@connection

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

    image

    reload @@config_all

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

    dryrun

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

    image

    check full @@metadata

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

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

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

    image

    check @@global

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

    image

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

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

    image

    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. 清理掉原实例中已扩容分⽚和新实例中未扩容分⽚的数据

    相关文章

      网友评论

          本文标题:分布式 | dble 运维命令知多少

          本文链接:https://www.haomeiwen.com/subject/bpidoltx.html