Amygoing
作者Amygoing联盟成员·2020-03-30 17:08
产品经理·数据库

分布式事务数据库产品V2.5.2版本

字数 8357阅读 1109评论 0赞 1

Management 新功能讲解

  • 部署环境体检

功能背景:如何知道自己搭建的HotDB Server集群运行环境是否合格,如何指导运维人员合理优化集群运行环境来提升整体系统性能?“部署环境体检”功能可为这类问题提供参考依据

功能说明:

  • 发起体检任务的集群需满足:集群所有相关服务器配置可用SSH信息且用户为root、集群所关联的组件程序运行正常、集群中至少配置一个数据节点和一个逻辑库
  • 体检得分总分100,未达标则扣除相应分数,警示项不扣分但有具体建议或说明,合格项无特殊说明且不扣分也不加分
  • 环境体检细分项目接近140个(不同集群模式体检项目个数有差异),涵盖集群硬件资源、操作系统、软件部署、软件配置、基础功能验证等五大维度
  • 支持在线查看或导出体检结果
  • 体检结果分为:未达标、警示项、合格项,默认展示未达标与警示项

功能说明

  • 体检结果详情页面由体检结果概览面板与详细体检结果两部分组成
  • 可通过每个维度右上角的红色或橙色圆点快速判断该维度下是否存在未达标或警示的体检项
  • 每个维度展开后可依据体检项tab标签右上角红色或橙色标识判断该体检项下是否存在未达标或警示的体检细分项
  • 详细体检结果可展示每一个体检细分项的:体检项、体检结果、扣分情况、异常对象、提示、评判标准等信息
  • 部署环境体检功能对server版本无要求,但体检的版本低于2.5.2时,不支持“10秒性能测试”、“配置库主备/MGR一致性”两个体检项检测
  • 集群运行信息收集

功能背景:

HotDB Server集群组件较多,运行机制较为复杂。当出现异常问题或故障的时候问题排查比较困难。利用信息收集工具可快速在用户出现集群问题时搜集异常分析所需要的日志与配置文件等,从而提高问题排查速度减少异常问题对业务的影响时间。

功能说明:

  • 信息收集按照收集场景划分为:“集群运行状况”、“性能测试”两种  不同的集群模式收集的清单也会不同
  • 部分信息收集需要用户授权打开才能操作
  • 发起收集任务须知:同一时间只能发起一个、服务器配置可用SSH信息(非必须)、计算节点运行正常(非必须)
  • 收集完信息自动将文件打包下载到本地
  • 记录页面可查看正在发起的任务收集情况与历史任务记录
  • 收集完的文件默认存放在管理平台服务器/opt目录下
  • -历史收集记录提供文件下载功能,但服务器内对应文件被删除则无法下载
  • 支持设置文件窗口期,默认30天,程序每天零点与保存窗口期时触发删除过期文件的动作 删除历史记录时对应删除服务器中的收集文件
  • 许可证异常监控提醒

功能说明:

  • 支持许可证授权过期、许可证检测异常、许可证信息无法更新三种异常提醒
  • 提醒方式:站内提醒(登录或刷新首页时弹窗、顶部计算节点信息栏预警显示)、邮件提醒(需要配置通知策略)、计算节点日志、计算节点管理端show@@usbkey命令
  • 许可证检测异常与信息无法更新都不会影响计算节点的正常运行,可以在业务低峰期适时重启计算节点服务来解决上述问题
  • 配置菜单易用性优化
    节点管理:将原来的数据节点、存储节点两个二级菜单包括:数据节点管理、切换规则、主从搭建、心跳暂停、存储节点管理、存储节点组管理六个功能糅合为节点管理功能

节点管理:
数据节点与存储节点添加同在“添加节点”菜单中,
可通过快速生成的方式添加数据节点与存储节点。
也可以单独添加存储节点。

注:
①添加好的数据节点默认自动主从搭建、自动适配高可用切换规则
②当数据节点下为双主带从的复制架构时,可以在“主存储节点”字段处指定备存储节点从属的主,否则自动为备匹配类型为“主库”的存储节点作为主
③存储节点的更多可配置参数可在“操作”栏【更多】按钮中打开设置

表:批量添加与单个添加表信息都统一为 “添加表信息”

添加单个或批量由输入表名称的数量决定,批量添加表则表名称要求用换行、英文逗号、英文空格任一方式进行间隔。分片字段用英文冒号间隔。

分片规则:
新增分片规则可自动生成分片规则名称,生成格式:分片规则ID+分片类型名称
MATCH分片规则增加自动设置方式,且默认空白串自动分片路由节点
自动方式或手动方式在值范围指定时支持输入多个值,用英文逗号或空格间隔

  • 备份信息失效逻辑优化

功能背景:
通过自动建表语法或逻辑库设置默认数据节点绕过管理平台直接建表的表执行的DDL(CREATE \ ALTER \ DROP \ TRUNCATE \ RENAME)操作,可能会对相关逻辑库的配置信息造成影响,从而影响到逻辑库备份文件的有效性,如右侧示例。

功能说明:

  • hotdb_config新增hotdb_ddl_log表,对用户在计算节点上执行特定DDL操作进行记录:
    特定 DDL:绕过管理平台直接建表
    修改、删除通过直接建表创建的表
  • 若发现执行的DDL语句对逻辑库相关的配置有影响则自动将该逻辑库相关的备份文件置为失效
  • 在管理平台启动时、管理平台运行每小时、执行数据恢复功能时三个时刻判断是否有需要被置为无效的备份文件
    示例:
    步骤1、逻辑库默认分片节点
    create table customer1(id int(20) not null auto_increment primary key ,name varchar(20));
    insert into customer1 values(NULL,‘A’);
    insert into customer1 values(NULL,‘A’);
    步骤2、进行完整备份
    步骤3、drop table if exists customer1;
    create table customer2(id int(20) not null auto_increment primary key ,name varchar(20));
    insert into customer2 values(NULL,‘A’);
    insert into customer2 values(NULL,‘A’);
    步骤4、第一次增量备份
    步骤5、create table customer1(id int(20) not null auto_increment primary key ,name varchar(20));
    步骤6、第二次增量备份
    步骤7、drop table if exists customer1;
    步骤8、拿第二次增量做恢复
    会发现customer1 通过HotDB Server show tables 不出现, 但是在存储节点下会存在。
    因为customer1的配置已经在步骤7中删除;
  • 主从搭建流程完善
    优化搭建流程:
    新增复制关系判断
    搭建存储节点实例未配置多个目标复制关系、搭建的存储节点实例未与多个存储节
    点存在复制关系
    新增复制参数检测
    搭建存储节点实例参数配置正确(binlog复制或GTID复制对应参数正确开启)
    优化主从数据一致性检测
    到表级别数据一致性检测(除mysql 、information_schema 、
    performance_schema、sys库)、若为GTID复制则判断是否存在GTID断点
    新增业务流量检测
    搭建的存储节点上不允许有业务流量,否则搭建失败
    新增搭建完成后延迟检测
    数据节点搭建完主复制关系后自动判断是否存在延迟,若存在则提醒但不影响搭建结果

注:
主备状态新增“搭建中”、“搭建失败”两种状态,搭建过程中离开或退出登录不影响后台搭建任务程序。搭建失败的记录支持查看失败信息。

  • 其他功能优化

功能说明:

  • 全局表数据检测优化逻辑:
  • 当第二次发起的检测任务与第一次有重合的表时,假若第二次发起的任务因手动取消或异
    常情况导致失败,则不影响第一次的检测结果的有效性(可正常对数据进行修复)
    增加任务强制取消入口
  • 主备一致性检测:
    手动取消执行的任务仍然保留记录显示
  • 数据路由正确性校验:
    增加任务的“强制取消”操作,并显示手动取消的任务记录
  • 管理平台各功能页面输入框输入值规范
    增加对输入框输入值的规范校验,增加对是否允许输入中文、数值、正整数等规则校验
  • Server 新功能讲解

  • XA模式下对MySQL版本限制

功能背景:
MySQL V5.7.17以下的版本在XA事务方面的支持不够稳定,官方存在一些未修复的缺陷。故HotDB Server使用的XA事务时,会对MySQL版本进行限制:MySQL版本必须为5.7.17及以上 。

功能说明:
在开启XA模式时, HotDB Server的约束行为包括:

  • 若启动HotDB Server时,检测到存在任意MySQL版本低于5.7.17的存储节点,HotDB Server启动失败;
  • 若启动HotDB Server后,添加MySQL版本低于5.7.17的存储节点,动态加载将失败;
  • 若启动HotDBServer前,MySQL版本低于5.7.17的存储节点无法连接,即使启动后重新连接成功,该存储节点仍然为不可用且动态加载将失败。

以上情况都将输出ERROR级别的日志提示:Currently in XA mode, MySQL version is not
allowed to be lower than 5.7.17。

  • 全局时区支持

功能背景:
为保证数据的正确性,解决表插入timestamp类型的数据时因时区不一致进而导致数据不一致问题,HotDB Server 提供对全局时区的支持

功能说明:

  • 当time_zone参数为具体的相同值或者全为SYSTEM并且system_time_zone全为相同的具体值时,HotDBServer不做特殊处理;
  • 否则HotDB Server会统一将time_zone设置为固定值:“+8:00”且会记录警告级别的日志(The datasources’ time_zones are not consistent),与存储节点time_zone设定值无关;
  • 备份与恢复时,HotDB Server可保证恢复后时间类型的数据与备份前一致

保障被DROP的表数据不丢失

功能背景:
考虑到DROP TABLE语句在实际生产或线上环境执行时存在较高危险性,HotDB Server支持被DROP的表数据保障一段时间不丢失。

功能说明:

  • 在server.xml 中修改参数开启此功能,默认不开启。
    dropTableRetentionTime = 0时(默认),表示不保留被DROP的表,DROP TABLE即删
    除表;
    dropTableRetentionTime > 0时,单位以小时计算,保留被DROP的表到设置时长,超过设置时长后自动删除该表。

功能说明:
HotDB Server将保留被删除的表数据,但暂不提供还原操作的直接命令,当被删除的表配置未做过任何变化时,用户可在存储节点上还原该表(注意:此操作存在风险):
第一步、查看映射关系;

第二步、RENAME TABLE 临时表 TO 还原表名,RENAME时需要注意以下要点 。

  • 通过管理平台配置后创建的表,可以直接RENAME成原表名;通过自动建表功能创建的表,实际配置已删除,不能直接RENAME成原表名。
  • 还原自动建表创建的表可在管理平台上添加配置后RENAME成该表表名。
  • 若被删除的表引用的分片规则发生修改后,再还原被删除的表,数据和数据路由会与删除前一致,即实际数据路由将与配置修改后的路由不匹配。
  • 若被删除的表上存在外健或触发器,保留临时表时会删除外健与触发器。父子表因外键被删除,还原后不再具有父子表的关系。

第三步、动态加载后生效 - 注意:配置库变更后动态加载才会生效

  • 全局唯一约束

功能背景:
HotDB Server(V2.5.2及以下版本)在部分情况下不能保证拥有唯一约束的列在所有节点都是唯一的,例如:唯一约束的列不是分片字段时。 现可支持唯一约束的列在分布式下的全局唯一性。

功能说明:

  • 设置参数 globalUniqueConstraint 为 true(默认关闭),可开启全局唯一约束
    注意:开启该功能后,可能对SQL语句INSERT、UPDATE、DELETE执行效率有较大
    影响,且可能导致SQL操作延迟增大、锁等待和死锁的情况增加。
  • 另一个与之相关的参数 routeByRelativeCol(默认关闭),可控制:当在SELECT查询语句中不包含分片字段但包含唯一约束字段时,通过查询辅助索引定位到固定节点,将SELECT查询语句仅下发到辅助索引指向的节点而非全表扫描
  • 例如:现有一个水平分片表table01,分片字段为id,分片规则为auto_mod,执行如下查询语句时:SELECT * FROM table01 WHERE unique_col = 100; //unique_col是唯一约束列此查询语句将只下发到 unique_col = 100 的那一个数据节点,而不是所有数据节点

  • 支持mysqlbinlog语法

功能背景:
HotDB Server支持解析mysqlbinlog语法同步增量数据,以减少将单机MySQL数据迁移至HotDB Server时的停机时间

功能说明:

  • 使用mysqlbinlog的方法
    第一步、登入到管理端口,执行dbremapping命令添加数据库映射关系
    dbremapping @@add@期望被导入的数据库名:逻辑库名
    dbremapping @@remove@db01:db02 删除映射关系
    第二步、使用mysqlbinlog语句执行某个binlog中选中的SQL语句,要求使用如下语法与参数
    mysqlbinlog --base64-output=decode-rows --skip-gtids --to-last-log --stop-never --database=数据库名 --start-position=binlog起始位置 --stop-position= binlog终止位置 binlog文件名 | mysql -u用户名 -p密码 –h计算节点服务器 -P服务端口 -c –A
    例如希望将192.168.200.77:3306中的物理库db01导入在管理平台上配置的逻辑
    库logicdb01,该逻辑库所属计算节点为192.168.210.30。
  • 先至192.168.210.30登入到管理端口3325,执行: dbremapping @@add@db01:logicdb01
  • 再至192.168.200.77的binlog目录下执行如下命令
    mysqlbinlog --base64-output=decode-rows --skip-gtids --to-last-log --stop-never --database=db01 --start-position=0 --stop-position= 190326 mysql-bin.000009 | mysql -uroot -proot –h192.168.210.30 –P3323 -c -A
  • HINT语句特殊说明
  • 业务层面不建议HINT直接操作存储节点。若使用HINT,建议执行完成后重建新的前端连接
    执行HINT操作后,HotDB 会绑定当前HINT查询使用的逻辑库关联的后端连接,仅允许绑
    定的连接范围内的后端操作。
    若不重建前端连接,执行HINT后续有其他操作涉及到绑定之外的数据节点时,之前绑定的
    后端连接会失效,前端连接会被自动重建。
  • 除了HINT外,以下语句也会绑定后端连接
    set [session] foreign_key_checks=0; //绑定所有数据节点
    START TRANSACTION /!40100 WITH CONSISTENT SNAPSHOT / //绑定当前使用的
    逻辑库关联的数据节点
    set [session] UNIQUE_CHECKS=0; //绑定所有数据节点
  • 增加前端warning/info与日志信息的输出
    执行HINT或其他会绑定连接的SQL语句后,前端会输出warning信息同时日志有info信息:

    切换关联不同数据节点的逻辑库时,前端输出info信息:

    若绑定的后端连接被关闭时,输出提醒及日志信息,此时HotDB Server正在重建前端连接:
  • 启动时自动适配processors、Executor

功能背景:
HotDB Server启动时可根据当前服务器配置自动适配规则设定以下参数,以减少因线程数不够的问题导致HotDB Server服务异常的情况:
< property name="processors">16< /property>< !--处理器数-->
< property name=" processorExecutor">4< /property>< !--各处理器线程数-->
< property name=" timerExecutor">4< /property>< !--定时器线程数-->

功能说明:

  • 自动适配规则:
  • 登录3325端口,执行show @@threadpool;命令查看参数值
    执行以下命令查看当前逻辑CPU的个数:
    cat /proc/cpuinfo | grep “processor” | wc -l
    注意:自动适配的值为最大值
  • 引入NDB Cluster-SQL节点服务

功能背景:
HotDB Server V2.5.2以下的版本对SELECT 查询类型的SQL语句支持不完全,特别是子查询类型的SQL,故引入NDB Cluster 服务。该服务利用NDB Cluster的SQL节点特性对HotDB不支持的SQL做兼容,用于在分布式环境下完成相对复杂的查询语句的计算。

NDB SQL脚本安装成功后,若要开启NDB服务,需将HotDB
Server的Server.xml配置文件中的ndbsqlmode修改为local。

部署说明:

  • 部署方法推荐使用管理平台集群部署功能,即在’集群部署’ > ‘参数配置’中打开’ 安装NDB SQL服务‘
  • 若已通过管理平台部署计算节点成功后,也可以再用脚本追加部署NDB SQL:
    登录到每一个计算节点服务器上执行脚本。注意:每台计算节点所在服务器
    都需部署NDB SQL。
    进入一键部署默认安装目录:cd /usr/local/hotdb/Install_Package,执行:sh hotdbinstall_beta.sh --install-ndbsql=yes --ntpdate-server-host=192.168.210.221
    注意:推荐NDB SQL一次性跟随HotDB Server 部署成功,若后续追加部署,需严格注
    意–install-ntpd、–ntpdate-server-ip、–ntpdate-server-host传参问题,需要同当前时间
    同步配置一致

功能说明:

  • NDB SQL节点不需要单独启动或关闭,启动HotDB Server同时将自动启动
    NDB SQL节点,关闭亦然。
  • NDB SQL模式开启时,使用NDB逻辑的前提是同时满足以下条件:
    ① 全局唯一不开启的情况下,必须有主键或者唯一键,主键和唯一键必须为分片字段或
    自增;
    ② 全局唯一开启的情况下,必须有主键或者唯一键;
    ③ 上述两条中的主键,唯一键必须是单字段数值类型;
    ④ 执行HotDB原不支持的查询语句
    如:SELECT … FROM … /LEFT JOIN/RIGHT JOIN … ON … WHERE 后面的条件可以使
    用不等号(<=>或<>)、取余或商(仅支持column%常量或div常量)等;
    SELECT … FROM … /LEFT JOIN/RIGHT JOIN … ON 后面的条件可以用IN/IS NOT
    NULL/IS NULL/BETWEEN…AND/LIKE 、不等号(<=>或<>)、 XOR 等;
    三表及以上的多表查询等;
  • NDB的限制:
    表结构中若有非geometry类型的空间类型字段、json类型的字段,原不支持的查询SQL依
    旧无法支持;
    原不支持的查询SQL的WHERE条件中字段类型仅支持:所有整形、decimal、char、
    enum、varchar类型。
  • 特殊说明

一键部署包更新说明

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广