添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

简介

混合云数据库管理 (Hybrid Cloud Database Management, 简称 HDM ) ,帮助企业打通混合云数据库架构,提供 多环境 多数据库 的统一 监控 报警 运维 管理 的能力, 帮助文档

核心功能 :集群管理、统一监控、统一告警、 Dashboard 、故障诊断、性能优化、安全审计、诊断报告等

目前支持数据库 MySQL Redis MongoDB PostgreSQL

支持环境

阿里云 RDS 阿里云 ECS 自建数据库 本地 IDC 自建数据库 其他云数据库

目标用户 :DBA

登录地址 入口

RAM账号 :sre@1596633715004367.onaliyun.com

实践

开通服务

手册

实例接入

接入方式 阿里云 RDS 阿里云 ECS 自建数据库 本地 IDC 自建数据库 账号直连

功能对比

集中模式接入 主机模式接入(推荐) 数据库监控指标 SQL诊断 慢请求分析 主机监控指标 全量请求分析 请求响应时间

接入步骤

第一步:选择网络类型

  • 如果是有公网的自建数据库,请选择“公网(经典网络)”。
  • 如果是通过专线/ VPN 方式连接阿里云 VPC 的本地 IDC 或者其他云,请选择“专有网络”。
  • 第二步:部署网关

    1
    sudo wget -O install-dbgateway http://hdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/DBGateway/install-dbgateway && sudo /bin/bash install-dbgateway --id idc_iQn5Df7QC5docekj --token 70EE4B0C444E215700BEFD8B14DB026EF6A958FBE42DACDEE304FC91880A933D --endpoint master-hdm-cn-hangzhou.aliyuncs.com --region default --native

    第三步:授权验证

    1
    2
    3
    CREATE USER 'hdm'@'%' IDENTIFIED BY PASSWORD 'Hdm@123!';
    GRANT SHOW DATABASES, PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'hdm'@'%';
    GRANT SELECT ON *.* TO 'hdm'@'%';

    三种网络连接方式

  • 专线是指阿里云接入点和本地数据中心之间的网络线路的抽象。
  • 您需要通过一条租用的运营商专线将本地 IDC 连接到阿里云接入点,建立专线连接。
  • 物理专线的私网连接不通过公网,因此与传统的公网相比,专线连接更加安全、可靠、速度更快、延迟更低。
  • VPN 网关是一款基于互联网通信技术,通过加密通道将企业数据中心和阿里云专有网络安全可靠地连接起来的服务。

    本地 IDC 直接通过互联网和阿里云公有云互联, HDM 会对数据访问链路进行加密,用户无需担心安全问题。

    统一监控

    MySQL Server

    TPS/QPS

    QPS (Queries Per Second),每秒 SQL 语句执行次数

    TPS (Transactions Per Second),每秒事务操作次数

    mysql.tps Per Second 计算公式:(Com_commit + Com_rollback) / Uptime mysql.qps Per Second 计算公式:Questions / Uptime mysql.threads_created Count 当前新创建的线程 mysql.threads_cached Count 当前 cached 线程 mysql.threads_connected Count 当前全部线程数 mysql.threads_rejected Count 当前 rejected 线程 mysql.threads_running Count 当前活跃线程数 mysql.insert_ps Per Second 平均每秒 insert 语句执行次数 mysql.select_ps Per Second 平均每秒 select 语句执行次数 mysql.update_ps Per Second 平均每秒 update 语句执行次数 mysql.delete_ps Per Second 平均每秒 delete 语句执行次数 mysql.replace_ps Per Second 平均每秒 replace 语句执行次数

    流量吞吐 (单位: KB

    mysql.bytes_received KByte 平均每秒从所有客户端接收到的字节数 mysql.bytes_sent KByte 平均每秒发送给所有客户端的字节数

    InnoDB 存储引擎

    InnoDB Buffer Pool 命中率 (%)

    mysql.innodb_bp_dirty_pct 脏页比率:Innodb_buffer_pool_pages_dirty / Innodb_buffer_pool_pages_data * 100% mysql.innodb_bp_hit 读缓存命中率:(Innodb_buffer_pool_read_requests - Innodb_buffer_pool_reads) / Innodb_buffer_pool_read_requests * 100% mysql.innodb_bp_usage_pct 使用率:innodb_buffer_pool_pages_data / ( innodb_buffer_pool_pages_data + innodb_buffer_pool_pages_free ) * 100%

    InnoDB Data 读写吞吐量 (单位: KB

    mysql.innodb_data_written KByte InnoDB 平均每秒写字节数 mysql.innodb_data_read KByte InnoDB 平均每秒读字节数

    InnoDB Row Operations

    mysql.innodb_rows_deleted Per Second InnoDB 平均每秒删除的行数 mysql.innodb_rows_read Per Second InnoDB 平均每秒读取的行数 mysql.innodb_rows_inserted Per Second InnoDB 平均每秒插入的行数 mysql.innodb_rows_updated Per Second InnoDB 平均每秒更新的行数

    MySQL 服务进程

    MySQL CPU 利用率 (%)

    mysql.cpu_usage MySQL 服务进程 CPU 使用率( 200% 代表使用 2 个 CPU Core

    MySQL 内存使用量 (单位: GB

    mysql.mem_used GByte MySQL 服务进程内存使用量

    MySQL 存储空间使用量 (单位: GB

    mysql.storage.data.used GByte 数据文件目录的空间使用量 mysql.storage.log.used GByte 日志文件目录的空间使用量

    主机

    主机 Load 负载

    UNIX 系统中,系统负载是对当前 CPU 工作量的度量,被定义为特定时间间隔内运行队列中的平均线程数对于单个 CPU ,有人认为如果 Load 超过 0.7 就算是超出正常范围了,这个值越低越好,负载过高会导致机器无法处理其他请求及操作,甚至导致宕机。

    load1 Count 主机负载 load1

    主机 CPU 利用率 (%)

    host.cpu.user_usage Count 系统 CPU user 利用率 host.cpu.si_usage Count 系统 CPU 软中断利用率 host.cpu.usage Count 系统 CPU 利用率 host.cpu.hi_usage Count 系统 CPU 硬中断利用率 host.cpu.iowait_usage Count 系统 CPU iowait 利用率 host.cpu.sys_usage Count 系统 CPU sys 利用率

    主机内存使用量 (单位: MB

    mem.buffers MByte 系统 IO Buffer 占用内存大小 mem.used MByte 系统已用内存 mem.cached MByte 系统 Page Cache 占用内存大小 gw.pidstat.mem_used MByte DBGateway 内存使用量 mem.swap_used MByte 系统 swap 使用大小 mem.total MByte 系统总可用内存

    主机网络吞吐 (单位: KB

    net.recv KByte 网卡每秒接收数据量 net.send KByte 网卡每秒发送数据量

    统一告警

    告警功能 :配置模版、触发规则、屏蔽告警、解除屏蔽、告警订阅等

    告警配置 :告警模板 -> 告警联系组 -> 关联资源,告警模板默认配置 8 条告警,可自定义

    主机 CPU 使用率 连续 3 次 ≥ 90 30 分钟 短信 / 邮件 / 钉钉 主机内存使用率 连续 3 次 ≥ 95 30 分钟 短信 / 邮件 / 钉钉 主机网络发送带宽使用率 连续 3 次 ≥ 95 30 分钟 短信 / 邮件 / 钉钉 主机网络接收带宽使用率 连续 3 次 ≥ 95 30 分钟 短信 / 邮件 / 钉钉 数据库无法连接 连续 3 30 分钟 短信 / 邮件 / 钉钉 MySQL 复制中断 连续 3 30 分钟 短信 / 邮件 / 钉钉 MySQL 复制延迟 连续 3 次 ≥ 1800 30 分钟 短信 / 邮件 / 钉钉 MySQL 活跃会话数 连续 3 次 ≥ 100 30 分钟 短信 / 邮件 / 钉钉

    问题诊断

    实例会话 :原理是执行 show processlist ,查看活跃会话和全部会话,可快速诊断阻塞的 SQL ,紧急情况下先结束会话,释放资源。

    注意:目前实例拓扑仅支持 MySQL

    与告警规则关联,通过自动触发方式产生性能快照,保存异常现场,方便 DBA 排查数据库异常。

    1
    2
    场景示例:
    MySQL数据库凌晨1点发生了CPU 90%的告警,导致正常业务响应时间变长,但是等DBA登录数据库上进行排查,异常已经消失,从监控历史上只能看到CPU飙高、活跃会话增长,没有慢SQL。在这种缺少数据、缺少现场的情况下,没有办法确认根本原因,同样的问题可能会持续发生,影响业务可用性。

    性能优化

    慢 SQL :架构设计、SQL分析 [ 样本 | 优化 ]

    可通过以下手段降低死锁发生的概率:

  • 如果不同程序会并发存取多个表,尽量约定以相同的顺序访问表,可以大大降低死锁机会;
  • 为表添加合理的索引,如果不走索引将会为表的每一行记录加锁,死锁的概率就会大大增大;
  • 避免大事务,尽量将大事务拆成多个小事务来处理;大事务占用资源多,耗时长,与其他事务冲突的概率也会变高;
  • 在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁产生概率;
  • 对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率。
  • 空间分析 :可以查看每张表的占用空间、索引空间、碎片率等,点击表名可以查看表结构和索引,异常条件:

  • 实例的空间使用率大于 90%
  • 实例的库表总空间(物理)剩余可用天数估计不足 7 天。
  • 实例可回收空间大于 60GB ,且碎片率大于 5%
  • 单表大于 6G ,并且碎片率大于 30%
  • 单表大于 50GB
  • 单表行数大于 500w ,且平均行长大于 10KB
  • 安全审计

    HDM 的安全审计功能,采用旁路的技术,采集并分析对数据库服务器的各类操作行为,实时地、智能地解析对数据库服务器的各种操作,自动识别 高危 SQL SQL 注入 新增访问来源 等风险。

    高危 SQL

    HDM 中,会根据预设的规则库,自动识别三种类型的高危 SQL

    DDL (新建表、修改表结构、修改索引、重命名表等操作);

    ② 全表更新(例如全表 Update 、全表 Delete 等);

    ③ 大请求,默认规则是满足下面三个条件中的任意一个:

  • 扫描行数 >= 100w
  • 返回行数 >= 10w
  • 更新行数 >= 10w
  • SQL 注入

    所谓 SQL 注入,就是通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令,严重危害数据库的健康。

    1
    2
    3
    4
    示例:
    SELECT 'xx' FROM 'xx' WHERE 1 = 1 AND 1 = 1
    - Where 子句中连续出现两个常量运算表达式
    - Where 子句中有部分条件总为真

    新增访问来源

    和历史的访问来源纪录进行对比,自动识别新增的访问来源,帮助用户确认是否存在未知的机器在访问或者读取数据库,默认规则是过去 七天 没有出现过的访问来源,即为新增访问来源。

    诊断报告

    功能 :支持用户 创建 查看 下载 诊断报告

    要求 :诊断时间必须小于 24小时

    内容 :实例信息、健康状况( CPU / 连接数 / 活跃会话 / QPS / TPS )、告警列表、活跃会话列表、Top5 慢 SQL、Top5 表空间、死锁分析、性能趋势( CPU / 网络 / 内存 / QPS and TPS / 会话 / 空间变化)

    限制:目前仅支持 MySQL RDS

    功能 :容量建议 | 容量评估( CPU / 内存 / IOPS / 活跃会话 / 存储空间)

    FA&Q

    ① 有些数据库服务器未连接外网, dbgateway 无法下载,实例如何接入?

    通过搭建代理服务器 Squid 进行下载,原理如下图:

    搭建代理服务器

    青岛代理服务器地址: 10.133.0.53:3128

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 安装squid
    yum -y install squid

    # 设置自启动
    systemctl enable squid.service

    # 配置squid
    vim /etc/squid/squid.conf

    # 启动squid
    systemctl start squid.service

    使用代理接入HDM

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    # 配置代理
    echo "
    http_proxy=http://10.133.0.53:3128
    https_proxy=http://10.133.0.53:3128
    ssl_proxy=http://10.133.0.53:3128
    tls_proxy=http://10.133.0.53:3128
    ftp_proxy=http://10.133.0.53:3128
    tcp_proxy=http://10.133.0.53:3128
    export http_proxy
    export https_proxy
    export ssl_proxy
    export ftp_proxy
    export tcp_proxy
    export tls_proxy" >> /etc/profile ; source /etc/profile

    # 配置wget代理
    echo "
    https_proxy=http://10.133.0.53:3128/
    http_proxy=http://10.133.0.53:3128/
    ftp_proxy=http://10.133.0.53:3128/" >> /etc/wgetrc ; source /etc/wgetrc

    # 下载install-dbgateway
    sudo wget -O install-dbgateway http://hdm-dbgateway-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/DBGateway/install-dbgateway && sudo /bin/bash install-dbgateway --id idc_zqSS2oMpeyKubndD --token 3E24C01713C83B7328F9A2F4C411078DC820E63FAFBC058F6635FAC5B0B4B7F2 --endpoint master-hdm-cn-hangzhou.aliyuncs.com --region default --native

    # 修改install-dbgateway,注释以下代码
    curl -v --connect-timeout 3 --silent ${endpoint}:80 --output -
    if [ $? != 0 -a $? != 52 ]; then
    echo "Error! Can not connect to ${endpoint}:80, please check your network environment."
    exit 1
    fi

    # 安装完成
    sudo /bin/bash install-dbgateway --id idc_zqSS2oMpeyKubndD --token 3E24C01713C83B7328F9A2F4C411078DC820E63FAFBC058F6635FAC5B0B4B7F2 --endpoint master-hdm-cn-hangzhou.aliyuncs.com --region default --native

    ② 实例接入后,显示的 IP 不是真实的业务 IP

    经与阿里云开发沟通,新版本在 /opt/dbgateway/conf/dbgateway.conf 中添加 gateway.local.ip= 配置项, dbgateway 优先使用配置中的 ip

    ③ 服务器断电启动后, dbgateway 服务未自动重启?