作者:洪斌
爱可生南区负责人,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;
暂停逻辑分⽚的流量,可在分⽚扩容迁移过程中使⽤。扩容基本流程:
- 克隆新的分⽚节点
- 修改 schema.xml 更新 datanode 与新的分⽚节点关系
- 暂停分⽚访问
pause @@shardingNode = 'dn1' and timeout= 10;
- 补⻬该分⽚增量 binlog ⽇志
- 加载⽣效配置
reload @@config_all
- resume 恢复流量
- 清理掉原实例中已扩容分⽚和新实例中未扩容分⽚的数据
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。