Apache-Doris集群扩缩容迁移方案
前置准备
软件安装
新机器安装部署好相同版本 doris, 不启动
域名解析新增
为了客户端读写正常,需要对VIP增加新节点的域名
域名解析vip添加新机器,例如:
原域名:doris01.example.com、doris02.example.com、doris03.example.com
新增域名:doris04.example.com、doris05.example.com、doris06.example.com
迁移顺序
- BE
- FE
扩缩容迁移 BE 节点
扩容 BE 节点
在新机器上全新部署 3 个 BE
新扩容的 3 个 BE 需要注册为新节点,不要用旧数据
删除旧元数据命令:
rm -rf /data/doris/data/datastorage;重新创建元数据目录:
mkdir -p /data/doris/data/datastorage;
启动 BE :
shell
su - doris;
cd /home/doris/software/doris/be;
sh bin/start_be.sh --daemon
注册 BE 节点:
连接集群:
shell
/home/doris/software/mysql-client/bin/mysql -h doris01 -P 9030 -uroot -p'bigdata@123'
在 MysqlClient 中输入:
sql
ALTER SYSTEM ADD BACKEND "doris04:9050";
ALTER SYSTEM ADD BACKEND "doris05:9050";
ALTER SYSTEM ADD BACKEND "doris06:9050";
查看新be节点是否添加,且Alive = true
sql
show proc '/backends';
缩容 BE 节点
连接集群:
shell
/home/doris/software/mysql-client/bin/mysql -h doris01 -P 9030 -uroot -p'bigdata@123'
使用 DECOMMISSION 方式删除旧 BE 节点,在 MysqlClient 中输入:
sql
ALTER SYSTEM DECOMMISSION backend "doris01:9050";
ALTER SYSTEM DECOMMISSION backend "doris02:9050";
ALTER SYSTEM DECOMMISSION backend "doris03:9050";
当迁移完成后,BE 节点自动下线,旧 BE 进程不会自动杀死,可使用命令停止
shell
su - doris;
cd /home/doris/software/doris/be;
sh bin/stop_be.sh
DECOMMISSION 命令说明:
发起命令后,会尝试将该 BE 数据迁移到其他节点上,当迁移完成后,BE 节点自动下线。数据搬迁完成后,删除命令生效。根据集群现有数据量,可能在小时到 1 天不等时间内。同时下线多个节点,不会造成数据丢失。
- DECOMMISSION 执行后,通过
SHOW backends;看到该 BE 节点SystemDecommissioned状态为true,表示节点正在进行下线;- DECOMMISSION 的进度,可以通过
SHOW PROC '/backends';中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少;- DECOMMISSION 可以通过
CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";命令,例如ALTER SYSTEM DECOMMISSION backend "doris01:9050";取消。- 可以调整
balance_slot_num_per_path参数调整数据搬迁速率。
扩缩容迁移 FE 节点
扩容 FE 节点
在新机器上全新部署 3 个 FE
新扩容的 3 个 FE 需要注册为新节点,不要用旧元数据
删除旧元数据命令:
rm -rf /data/doris/data/doris-meta;重新创建元数据目录:
mkdir -p /data/doris/data/doris-meta;
上线第一台 FE
启动第一台新 FE
shell
su - doris;
cd /home/doris/software/doris/fe;
sh bin/start_fe.sh --helper doris01:9010 --daemon;
连接 FE 集群:
shell
/home/doris/software/mysql-client/bin/mysql -h doris01 -P 9030 -uroot -p'bigdata@123'
将节点注册为 Follower FE,在 MysqlClient 中输入命令:
sql
ALTER SYSTEM ADD FOLLOWER "doris04:9010";
等它状态正常
sql
SHOW FRONTENDS;
看到 Alive = true, Role = FOLLOWER 再继续。
上线另外两台 FE
启动另外两台新 FE
shell
su - doris;
cd /home/doris/software/doris/fe;
sh bin/start_fe.sh --helper doris01:9010 --daemon;
将另外两台也注册为 Follower FE,在 MysqlClient 中输入命令:
sql
ALTER SYSTEM ADD FOLLOWER "doris05:9010";
ALTER SYSTEM ADD FOLLOWER "doris06:9010";
查看3 台 FE 状态:
sql
SHOW FRONTENDS;
3 台新 FE 状态应为:
Alive = true
Role = FOLLOWER
Join = true
缩容 FE 节点
先找到旧 master (如:doris01)节点 ,把另外两台旧 follower (如:doris02、doris03)节点下掉,再下 master 节点
找到 master 节点
在新 FE 节点上连接集群:
shell
/home/doris/software/mysql-client/bin/mysql -h doris04 -P 9030 -uroot -p'bigdata@123'
在新节点 MysqlClient 中输入:
sql
SHOW FRONTENDS;
找到值 IsMaster = true 的节点即为旧 master 节点,最后下线
下线旧 follower 节点
在新节点 MysqlClient 中输入:
sql
ALTER SYSTEM DROP FOLLOWER "doris02:9010";
查看状态:
sql
SHOW FRONTENDS;
等该 follower 节点状态消失再下另一台。
sql
ALTER SYSTEM DROP FOLLOWER "doris03:9010";
下线旧 master 节点
切换 master 到新机器,不允许通过命令直接下线主节点,需要将 master 切换到其他新机器上
在旧 master 节点机器上执行命令,停止 master fe :
shell
su - doris;
cd /home/doris/software/doris/fe;
sh bin/stop_fe.sh
在新节点 MysqlClient 中查看,此时 master 应该切换到新机器:
sql
SHOW FRONTENDS;
在新节点 MysqlClient 中输入命令,下线旧 master 节点:
sql
ALTER SYSTEM DROP FOLLOWER "doris01:9010";
域名解析删除
域名解析vip删除旧机器,例如:
旧域名:doris01.example.com、doris02.example.com、doris03.example.com