image.png

运维工具

canal

作用,使用场景:数据库增量日志解析,增量数据的订阅和消费

  • 数据库镜像
  • 数据库实时备份
  • 拆分异构索引
  • 倒排索引
  • 业务cache刷新
  • 带业务的增量业务处理

    datax

    作用,使用场景:离线数据同步平台 异构数据源之间的高效同步

    elk

    作用,使用场景:mysql 日志收集系统,分析慢查询日志,mysql SHOW LOGS-> Filebeat -> Logstash -> ES ->Kibana

    yearning

    作用,使用场景:数据库字典查询 数据库sql审计工具

    percona-toolkit

    作用,使用场景:命令行工具的集合,分析慢查询日志 ,查找重复索引,表同步

    mysqlmtop

    作用,使用场景:mysql 可视化运行情况实时监控 状态,链接数,qts,tps,数据库流量,性能慢查询 ,复制

    prometheus

    作用,使用场景:分布式监控系统

分库分表理论

分库 : io 性能 连接性能 磁盘空间 内存空间
分表:查询性能

分库: 一类数据 分布在不同的数据库中,表名相同 库名不同
分表:一类数据分布在不同的表中, 库名相同 表名不同

垂直拆分 : 表-字段 库-模块
&水平拆分 : 表-数据 库-表

水平拆分库: 保证不跨库 不跨表 相同数据在同一个表和库中
水平拆分表:路由规则,范围(时间 地域 大小)业务字段(用户id 手机号)

  • 路由规则只能保证 只能一个条件查询
  • 多个条件查询的解决方案:维持关系表,复制数据新建路由规则

造成的问题:

  • 主键的选择 分布式id
  • 数据一致性
  • 数据库扩容
  • 多表关联查询 join

分库分表实践

前置知识: 数据库集群 数据库事务

  • 主从模式
  • 双主模式
  • 分库分表

    Sharding

    核心功能

  • 数据分片

  • 分布式事务
  • 数据库自理

    核心功能详情

    数据分片
    分库, 分表
    读写分离
    分片策略
    分布式主键
    分布式事务
    标准化事务接口
    XA强一致性事务
    数据库治理
    配置动态化
    编排和治理
    数据脱敏
    可视化链路追踪

    数据分片

    核心概念

  1. 表概念

逻辑表
真实表
数据节点
绑定表 (主表 子表)
广播表

  1. 分片算法

和业务实现紧密度相关

  1. 分片策略

包含分片键和分片算法 — > 分片策略 = 分片键+ 分片算法
标准分片策略
复合分片策略
行表达分片策略
hint分片策略
不分片策略
—————————————
分片策略配置 ( 数据源分片 ,表分片 )

sq执行分析

执行过程
查询优化—> sql路由—> sql 改写 —> sql 执行 —> 结果归并

使用规范
多数据节点支持: 分页 去重 分组 关联查询
多数据节点不支持: case when having union all
多节点不完全支持: 子查询
但分片键在表达式中使用中,采用全路由的方式
分页查询:

inline 行表达式: ${begin..end} 范围 ${[unit1, unit2, unit_x]} 表示枚举值
数据节点配置 : db${0..1}.b_order${1..2} db${0..1}.b_order${1..2}

读写分离

配置主从实现读写分离
读写分离属于 数据库层面的路由
使用hint 分片算法

分布式事务

分布式事务模式:
二阶段(强一致性)
三阶段(强一致性)
XA(强一致性)
TCC(最终一致性性)
消息队列模式(最终一致性)
SAGA模式(最终一致性)
sata 框架( AT、TCC、 Saga和XA 默认是AT 是对二阶段的一种实现)

sharding 分库分表整合分布式模式:
整合xa 原理
整合saga原理
整合seata原理

整合springboot

Mycat

核心概念

逻辑库
逻辑表
分片表
非分片表
ER表
全局表
分片节点
节点主机
分片规则

核心配置

server.xml

保存了mycat需要的全部系统配置信息
user 标签
firewall 标签
system 标签 全局序列号
本地文件生成
数据库生成
本地时间戳
zk id

schema.xml

管理逻辑库 表 分片节点 主机
schema标签
table 标签
datanode 标签
datahost 标签
heartbeat 标签
readhost 标签 writerhost 标签

rule.xml

管理分片规则
tablerule 标签
function 标签
常用的分片规则
时间类:按天分片、自然月分片、单月小时分片
哈希类:Hash固定分片、日期范围Hash分片、截取数字Hash求模范围分片、截取数字Hash分
片、一致性Hash分片
取模类:取模分片、取模范围分片、范围求模分片
其他类:枚举分片、范围约定分片、应用指定分片、冷热数据分片


实战使用

分库分表 - rule.xml
常用的分片配置
自动分片
枚举分片
取模分片
冷热数据分片
一致性hash分片

读写分离 - schema.xml
writehost 数据源
readhost 数据源

强制路由
强制走主库
强制走从库

主从延迟切换
让读更加可靠

分布式事务

XA

整合springboot