doris - 管理手册
1.1-集群管理
1.1.1-集群升级
-元数据备份
将 FE-Master 节点的 doris-meta 目录进行完整备份!
-关闭集群副本修复和均衡功能
admin set frontend config("disable_balance" = "true");
admin set frontend config("disable_colocate_balance" = "true");
admin set frontend config("disable_tablet_scheduler" = "true");
-兼容性测试
-FE 兼容性测试
---单独使用新版本部署一个测试用的 FE 进程
sh ${DORIS_NEW_HOME}/bin/start_fe.sh --daemon
---修改测试用的 FE 的配置文件 fe.conf
vi ${DORIS_NEW_HOME}/conf/fe.conf
-修改以下端口信息,将所有端口设置为与线上不同
...
http_port = 18030
rpc_port = 19020
query_port = 19030
arrow_flight_sql_port = 19040
edit_log_port = 19010
...
---修改 fe.conf
-在 fe.conf 添加 ClusterID 配置
echo "cluster_id=123456" >> ${DORIS_NEW_HOME}/conf/fe.conf
-添加元数据故障恢复配置 (2.0.2 + 版本无需进行此操作)
echo "metadata_failure_recovery=true" >> ${DORIS_NEW_HOME}/conf/fe.conf
-贝线上环境 Master FE 的元数据目录 doris-meta 到测试环境
cp ${DORIS_OLD_HOME}/fe/doris-meta/* ${DORIS_NEW_HOME}/fe/doris-meta
-将拷贝到测试环境中的 VERSION 文件中的 cluster_id 修改为 123456(即与第3步中相同)
vi ${DORIS_NEW_HOME}/fe/doris-meta/image/VERSION
clusterId=123456
-2.0.2(包含2.0.2) + 版本
sh ${DORIS_NEW_HOME}/bin/start_fe.sh --daemon --metadata_failure_recovery
-2.0.1(包含2.0.1) 以前的版本
sh ${DORIS_NEW_HOME}/bin/start_fe.sh --daemon
-如果启动成功,则代表兼容性没有问题,停止测试环境的 FE 进程,准备升级
sh ${DORIS_NEW_HOME}/bin/stop_fe.sh
-BE 兼容性测试
可利用灰度升级方案,先升级单个 BE,无异常和报错情况下即视为兼容性正常,可执行后续升级动作
-升级 BE
-在多副本的前提下,选择一台 BE 节点停止运行,进行灰度升级
sh ${DORIS_OLD_HOME}/be/bin/stop_be.sh
-重命名 BE 目录下的 /bin,/lib 目录
mv ${DORIS_OLD_HOME}/be/bin ${DORIS_OLD_HOME}/be/bin_back
mv ${DORIS_OLD_HOME}/be/lib ${DORIS_OLD_HOME}/be/lib_back
-复制新版本的 /bin,/lib 目录到原 BE 目录下
cp ${DORIS_NEW_HOME}/be/bin ${DORIS_OLD_HOME}/be/bin
cp ${DORIS_NEW_HOME}/be/lib ${DORIS_OLD_HOME}/be/lib
-启动该 BE 节点
sh ${DORIS_OLD_HOME}/be/bin/start_be.sh --daemon
-链接集群,查看该节点信息
show backends\G
-若该 BE 节点 alive 状态为 true,且 Version 值为新版本,则该节点升级成功
-依次完成其他 BE 节点升级
-升级 FE
先升级非 Master 节点,后升级 Master 节点
-多个 FE 节点情况下,选择一个非 Master 节点进行升级,先停止运行
sh ${DORIS_OLD_HOME}/fe/bin/stop_fe.sh
-重命名 FE 目录下的 /bin,/lib,/mysql_ssl_default_certificate 目录
mv ${DORIS_OLD_HOME}/fe/bin ${DORIS_OLD_HOME}/fe/bin_back
mv ${DORIS_OLD_HOME}/fe/lib ${DORIS_OLD_HOME}/fe/lib_back
mv ${DORIS_OLD_HOME}/fe/mysql_ssl_default_certificate ${DORIS_OLD_HOME}/fe/mysql_ssl_default_certificate_back
-复制新版本的 /bin,/lib,/mysql_ssl_default_certificate 目录到原 FE 目录下
cp ${DORIS_NEW_HOME}/fe/bin ${DORIS_OLD_HOME}/fe/bin
cp ${DORIS_NEW_HOME}/fe/lib ${DORIS_OLD_HOME}/fe/lib
cp -r ${DORIS_NEW_HOME}/fe/mysql_ssl_default_certificate ${DORIS_OLD_HOME}/fe/mysql_ssl_default_certificate
-启动该 FE 节点
sh ${DORIS_OLD_HOME}/fe/bin/start_fe.sh --daemon
-链接集群,查看该节点信息
show frontends\G
-若该 FE 节点 alive 状态为 true,且 Version 值为新版本,则该节点升级成功
-依次完成其他 FE 节点升级,最后完成 Master 节点的升级
-打开集群副本修复和均衡功能
-升级完成,并且所有 BE 节点状态变为 Alive 后,打开集群副本修复和均衡功能:
admin set frontend config("disable_balance" = "false");
admin set frontend config("disable_colocate_balance" = "false");
admin set frontend config("disable_tablet_scheduler" = "false");
1.1.2-弹性扩缩容
FE 分为 Follower 和 Observer 两种角色,其中 Follower 角色会选举出一个 Follower 节点作为 Master。 默认一个集群,只能有一个 Master 状态的 Follower 角色,可以有多个 Follower 和 Observer,同时需保证 Follower 角色为奇数个。其中所有 Follower 角色组成一个选举组,如果 Master 状态的 Follower 宕机,则剩下的 Follower 会自动选出新的 Master,保证写入高可用。Observer 同步 Master 的数据,但是不参加选举。如果只部署一个 FE,则 FE 默认就是 Master
第一个启动的 FE 自动成为 Master。在此基础上,可以添加若干 Follower 和 Observer
FE 扩容注意事项:
Follower FE(包括 Master)的数量必须为奇数,建议最多部署 3 个组成高可用(HA)模式即可。
当 FE 处于高可用部署时(1个 Master,2个 Follower),我们建议通过增加 Observer FE 来扩展 FE 的读服务能力。当然也可以继续增加 Follower FE,但几乎是不必要的。
通常一个 FE 节点可以应对 10-20 台 BE 节点。建议总的 FE 节点数量在 10 个以下。而通常 3 个即可满足绝大部分需求。
helper 不能指向 FE 自身,必须指向一个或多个已存在并且正常运行中的 Master/Follower FE。
-查看当前 FE 的节点情况
SHOW PROC '/frontends';
-增加 FE 节点
首先第一次启动时,需执行以下命令:
./bin/start_fe.sh --helper leader_fe_host:edit_log_port --daemon
其中 leader_fe_host 为 Master 所在节点 ip, edit_log_port 在 Master 的配置文件 fe.conf 中。
--helper 参数仅在 follower 和 observer 第一次启动时才需要
将 Follower 或 Observer 加入到集群
使用 mysql-client 连接到已启动的 FE,并执行:
ALTER SYSTEM ADD FOLLOWER "follower_host:edit_log_port";
或
ALTER SYSTEM ADD OBSERVER "observer_host:edit_log_port";
其中 follower_host和observer_host 为 Follower 或 Observer 所在节点 ip,edit_log_port 在其配置文件 fe.conf 中
-删除 FE 节点
删除 Follower FE 时,确保最终剩余的 Follower(包括 Master)节点为奇数
ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";
-查看当前 BE 的节点情况
SHOW PROC '/backends';
-增加 BE 节点
ALTER SYSTEM ADD BACKEND
-删除 BE 节点
删除 BE 节点有两种方式:DROP 和 DECOMMISSION
-DROP BACKEND 会直接删除该 BE,并且其上的数据将不能再恢复!!
ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";
-安全删除 BE 节点
ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";
尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点
CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";
命令取消
-Broker 扩容缩容
ALTER SYSTEM ADD BROKER broker_name "broker_host:broker_ipc_port";
ALTER SYSTEM DROP BROKER broker_name "broker_host:broker_ipc_port";
ALTER SYSTEM DROP ALL BROKER broker_name;
1.1.3-负载均衡
当部署多个 FE 节点时,用户可以在多个 FE 之上部署负载均衡层来实现 Doris 的高可用
jdbc 的自动重试机制
jdbc:mysql:loadbalance://[host:port],[host:port].../[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue
jdbc:mysql:loadbalance://ip1:port1, ip2:port2/rizhiyi-system?roundRobinLoadBalance=true
-ProxySQL
-haproxy
-nginx
1.1.4-FQDN
完全限定域名
Doris 支持 FQDN 之后,各节点之间通信完全基于 FQDN。添加各类节点时应直接指定 FQDN,例如添加 BE 节点的命令为ALTER SYSTEM ADD BACKEND "be_host:heartbeat_service_port"
fe.conf 文件 设置 enable_fqdn_mode = true
集群中的所有机器都必须配置有主机名
/etc/hosts 文件中不能有重复的 IP 地址
1.2-数据管理
-查看已经创建的仓库
SHOW REPOSITORIES;
-创建一个 s3 的远程仓库
---minio---
CREATE REPOSITORY `doris`
WITH S3
ON LOCATION "s3://doris"
PROPERTIES
(
"s3.endpoint" = "http://g.htmltoo.com:9111",
"s3.access_key" = "ihunter",
"s3.secret_key"="wdqdmm@0",
"s3.region" = "oz",
"use_path_style" = "true"
);
---创建仓库并删除已经存在的 snapshot---目前只有 s3 支持 "delete_if_exists" 属性
CREATE REPOSITORY `doris`
WITH S3
ON LOCATION "s3://doris"
PROPERTIES
(
"s3.endpoint" = "http://g.htmltoo.com:9111",
"s3.access_key" = "ihunter",
"s3.secret_key"="wdqdmm@0",
"s3.region" = "REGION",
"delete_if_exists" = "true"
);
-全量备份 example_db 下的表 example_tbl 到仓库 example_repo 中:
BACKUP SNAPSHOT example_db.snapshot_label1
TO example_repo
ON (example_tbl)
PROPERTIES ("type" = "full");
-全量备份 example_db 下,表 example_tbl 的 p1, p2 分区,以及表 example_tbl2 到仓库 example_repo 中:
BACKUP SNAPSHOT example_db.snapshot_label2
TO example_repo
ON
(
example_tbl PARTITION (p1,p2),
example_tbl2
);
-全量备份 example_db 下除了表 example_tbl 的其他所有表到仓库 example_repo 中:
BACKUP SNAPSHOT example_db.snapshot_label3
TO example_repo
EXCLUDE (example_tbl);
-查看最近 backup 作业的执行情况
show BACKUP\G;
-查看远端仓库中已存在的备份
SHOW SNAPSHOT ON example_repo WHERE SNAPSHOT = "snapshot_label1";
-取消当前正在执行的备份作业
CANCEL BACKUP
-删除已创建的远端仓库。删除仓库,仅仅是删除该仓库在 Doris 中的映射,不会删除实际的仓库数据。
DROP REPOSITORY
1.3-SQL拦截
1.4-查询分析
1.5-SSL密钥证书配置
1.6-FE SSL密钥证书配置
1.7-运维监控
1.8-内存管理
1.9-配置管理
-FE查看配置项
ADMIN SHOW FRONTEND CONFIG;
-IsMutable:
是否可以动态配置。如果为 true,表示该配置项可以在运行时进行动态配置。如果false,则表示该配置项只能在 fe.conf 中配置并且重启 FE 后生效。
-MasterOnly:
是否为 Master FE 节点独有的配置项。如果为 true,则表示该配置项仅在 Master FE 节点有意义,对其他类型的 FE 节点无意义。如果为 false,则表示该配置项在所有 FE 节点中均有意义。
-动态设置配置项。该命令需要管理员权限。
ADMIN SET FRONTEND CONFIG ("fe_config_name" = "fe_config_value");
-如果是修改 MasterOnly 的配置项,则该命令会直接转发给 Master FE 并且仅修改 Master FE 中对应的配置项。
-因为该配置不是 Master FE 独有配置,所以需要单独连接到不同的 FE,进行动态修改配置的操作,这样才能保证所有 FE 都使用了修改后的配置值
-用户配置项
help show property
help set property
SET PROPERTY [FOR 'user'] 'key' = 'value' [, 'key' = 'value']
-单查询资源限制
---内存---
# 设置会话变量 exec_mem_limit。则之后该会话内(连接内)的所有查询都使用这个内存限制。
set exec_mem_limit=1G;
# 设置全局变量 exec_mem_limit。则之后所有新会话(新连接)的所有查询都使用这个内存限制。
set global exec_mem_limit=1G;
# 在 SQL 中设置变量 exec_mem_limit(单位:字节)。则该变量仅影响这个 SQL。
select /*+ SET_VAR(exec_mem_limit=1073741824) */ id, name from tbl where xxx;
---cpu---
# 设置会话变量 cpu_resource_limit。则之后该会话内(连接内)的所有查询都使用这个CPU限制。
set cpu_resource_limit = 2
# 设置用户的属性 cpu_resource_limit,则所有该用户的查询情况都使用这个CPU限制。该属性的优先级高于会话变量 cpu_resource_limit
set property for 'user1' 'cpu_resource_limit' = '3';
-设置配置项
-修改用户 Billie 的 max_user_connections
通过 SHOW PROPERTY FOR 'Billie' LIKE '%max_user_connections%'; 查看 Billie 用户当前的最大链接数为 100
通过 SET PROPERTY FOR 'Billie' 'max_user_connections' = '200'; 修改 Billie 用户的当前最大连接数到 200
评论区