DorisDB自动化运维-集群管理实现

DorisDB运维自动化-集群管理实现

                               --2021-08-15 春雷

1、前言
随着DorisDB的业务体量的上升,前期的自动化运维工作越发重要。例如快速部署集群,扩缩容集群,随着官方快速迭代,我们要快速升级,开启关闭集群、实例等。

这些都考验着数据库产品,考验着DBA。

DorisDB我们使用的是标准版,官方号称很好运维,到底如何呢?今天就从我们的DorisDB日常管理工具开始说起。

后面会逐步分享各个方向的运维自动化,敬请期待~

2、需求
对于DBA来说,任何一种数据库的引入,都是会有一些运维上的考虑,例如部署是否方便,扩容,缩容是否简单,宕机是否能够自动修复,升级版本是否痛苦…等等。

从年初的性能评测,到功能评测。到如今的线上使用,自动化运维的开发。就目前积累的经验来分析下,从如下几点来看DorisDB的运维难易程度。

2.1、部署

  • 版本选择:

当前我们使用1.17.1,且跟随官方脚步进行版本迭代,根据版本下载包即可,推荐使用最新的版本

  • 版本打包:

打包RPM包,放到公司yum源,方便进行指定版本安装

  • 环境初始化:

初始化脚步,负责例如JAVA环境,目录,RPM安装等等

  • 安装实例:

部署FE、BE、Broker等,参考官方文档即可,步骤不多
2.2、扩缩容
DorisDB的扩缩容很方便,部署实例后,一个命令扩缩容即可,系统自动均衡/删除数据等。

  • 扩容FE:

alter system add follower “fe_host:edit_log_port”;
alter system add observer “fe_host:edit_log_port”;

  • 缩容FE:

alter system drop follower “fe_host:edit_log_port”;
alter system drop observer “fe_host:edit_log_port”;

  • 扩容BE:

alter system add backend ‘be_host:be_heartbeat_service_port’;

  • 缩容BE:

alter system decommission backend “be_host:be_heartbeat_service_port”;
alter system drop backend “be_host:be_heartbeat_service_port”;
2.3、升级版本
升级也不难,替换文件,滚动重启即可

  • 升级顺序:

BE -> FE observer -> FE follower 滚动重启

  • 升级方法:

停止实例,替换bin目录 lib目录,开启实例,验证版本

  • 检查:

验证版本,检查实例状态
2.4、连接实例

  • 连接方式:

mysql、或相关客户端均可,例如Python的MySQLdb,JDBC等,同于MySQL
2.5、建立库

  • 建立库:

语法同MySQL
2.6、账号及授权

  • 建立读写账号:

权限与MySQL不同, SELECT_PRIV,LOAD_PRIV
如需操作权限: SELECT_PRIV,LOAD_PRIV,ALTER_PRIV,CREATE_PRIV,DROP_PRIV
管理账号: ADMIN_PRIV
2.7、查看状态
列举下常用的查看命令,方便日常使用:

  • FE状态:

SHOW PROC ‘/frontends’

  • BE状态:

show proc ‘/backends’\G;

  • Broker状态:

SHOW PROC “/brokers”

  • 表信息:

​​​​​​​SHOW DATA;

  • ​​​​​​​导入任务:

​​​​​​​SHOW ROUTINE LOAD
SHOW LOAD
​​​​​​​

  • 账号信息:

​​​​​​​SHOW GRANTS
show proc “/auth/”;

  • ​​​​​​​DDL进度:

​​​​​​​SHOW ALTER

3、规范化
要想自动化,首先要实现规范化,例如端口、目录、账号权限、架构情况、访问入口等等,如下混合部署的话,要注意多端口的情况,这些大家参考自己公司的情况进行制定即可。

4、管理工具
借助上面提到的DorisDB提供的相关能力,我们梳理相关流程、环境,很快就开发了DorisDB管理工具:dorisdb_manage

支持:

  • 一键部署集群 (包括:FE/BE/Broker/Prometheus/Grafana、库、账号、域名、业务线信息等)
  • 一键扩容缩容
  • 开启、关闭实例
  • 一键升级
  • 重新加载配置

【详细如下】:

[使用]:
dorisdb_manage cluster deploy/scale-out/scale-in/start/stop/restart/upgrade/info $cluster_id -r fe/be/broker/all -i $IP1,$IP2 (集群号必须输入)
[参数]:
第一项:对象
cluster 集群

   第二项:动作
            deploy      部署新集群
            scale-out  添加
            scale-in    删除
            start         开启
            stop         停止
            restrt        重启
            upgrade   升级
            info          信息
            reload     重新加载配置重启

   第三项:集群号
            例如:999-1

   可选:角色: -r
            fe         流量角色
            be         存储角色
            broker     HDFS导入数据服务
            prometheus prometheus角色
            all        所有角色
   可选:IP:-i
            -i 10.0.0.1,10.0.0.2  逗号分隔

[举例]:
[新部署集群]:
dorisdb_manage cluster deploy $cluster_id (新建指定集群,部署FE/BE/Broker/Prometheus/Grafana)
dorisdb_manage cluster deploy $cluster_id --db_name=xxx --user_name=xxx --user_password=xxx --auth_ip=10.0.0.1,10.0.0.2 --domain_name=xxx --manager_id=666,777 --bizid=55
新建指定集群,建库、 账号、授权、申请VIP、域名等:
-d --db_name 库名
-u --user_name 账号名,默认新集群读写账号
-w --user_password 账号密码
-s --auth_ip 账号授权IP
-y --domain_name 域名
-m --manager_id 管理员账号ID,逗号分隔
-l --bizid 业务线ID

[扩容]:
dorisdb_manage cluster scale-out $cluster_id -r fe -i 10.0.0.1 (扩容指定集群,指定角色,指定IP,只能写1个IP)

[缩容]:
dorisdb_manage cluster scale-in $cluster_id -r fe -i 10.0.0.1 (缩容指定集群,指定角色,指定IP,能写1个IP)

[开启]:
dorisdb_manage cluster start $cluster_id (开启整个集群服务)
dorisdb_manage cluster start $cluster_id -r fe (开启指定集群,指定角色的服务)
dorisdb_manage cluster start $cluster_id -r fe -i 10.0.0.1,10.0.0.2 (开启指定集群,指定角色,指定IP的服务,多个IP逗号分割)
[关闭]:
dorisdb_manage cluster stop $cluster_id -r fe (关闭指定集群,指定角色的服务)
dorisdb_manage cluster stop $cluster_id -r fe -i 10.0.0.1,10.0.0.2 (关闭指定集群,指定角色,指定IP的服务,多个IP逗号分割)
[升级]:
dorisdb_manage cluster upgrade $cluster_id $old_version $new_version (升级整个集群)
[重新加载配置]:
dorisdb_manage cluster reload $cluster_id -r prometheus (Prometheus重新加载配置并重启)

4、汇总
引入DorisDB,性能评测惊艳,日常运维方便,满足了我们的需求,此处确实比ClickHouse 运维方便

此篇先分享日常管理工具的实现。后面会逐步分享其他自动化相关的实现。