【安装部署】Doris 数据备份与恢复


Administrator
飞致云 发布于 2022-04-22 / 943 阅读 / 0 评论 /
1 基础知识Doris 数据备份与恢复依赖于插件 FS_broker ,插件可以独立于 Doris 部署,Doris 官方 默认提供了读取 HDFS 、百度云 BOS 及 Amazon S3 的 fs_broker,不过需要我们自行做编译,且开源版的 Doris 仅支持 HDFS 。因此我们想对 D

1 基础知识

Doris 数据备份与恢复依赖于插件 FS_broker ,插件可以独立于 Doris 部署,Doris 官方 默认提供了读取 HDFS 、百度云 BOS 及 Amazon S3 的 fs_broker,不过需要我们自行做编译,且开源版的 Doris 仅支持 HDFS 。因此我们想对 Doris 做数据迁移前,需要先搭建一个 HDFS。

2 准备工作

一台 4c8g CentOS 7.x 服务器

docker 离线安装包 链接: https://pan.baidu.com/s/1pQOtdR-zSteCe-OhI_sXLA 密码: 719d

hadoop 容器镜像 链接: https://pan.baidu.com/s/1nAtd22X1qkynZ4e5riyv7Q 密码: oat4

Doris 开发镜像 链接: https://pan.baidu.com/s/1qtL76S8eKbZblIqLEVCx9w 密码: avov

Doris 源码包 链接: https://pan.baidu.com/s/15YN2UCmHC3uBqRzzJXTeIQ 密码: eqag

将 docker 离线安装包 、hadoop 容器镜像、Doris 开发镜像、Doris 源码包均上传到服务器上备用。

3 编译 fs_broker

编译 fs_broker 链接: https://pan.baidu.com/s/1UKCoXcugr5K1yR8JdiJn3A 密码: 4sne

fs_broker 已编译好,内网环境或者急用的可直接下载,无需继续往下

解压 docker 离线包并安装 docker

unzip docker_offline.zip  && sh docker_offline/install.sh

加载 Doris 开发镜像

docker load -i doris.tar

启动 Doris 开发容器

docker run -it --name doris-node -h doris-node --network host  --privileged   -d  apache/incubator-Doris:build-env-1.4.1

将 Doris 源码包拷贝至容器内部

docker cp apache-doris-0.15.0-incubating-src.tar.gz doris-node:/tmp

进入 Doris-node 容器,编译 fs_broker

cd /tmp/
tar -zxvf apache-doris-0.15.0-incubating-src.tar.gz
cd apache-doris-0.15.0-incubating-src/fs_brokers/apache_hdfs_broker
sh build.sh

接下来就是漫长的等待,编译时间大概要持续 30 分钟左右,完成后目录下会多出一个 output 文件夹,如下图所示:
image-1650615587660

压缩 output 文件夹并将其拷贝到我们的宿主机上,fs_broker 就编译完成了。


tar -zcvf output.tar output
#退出容器
exit
docker cp doris-node:/tmp/apache-Doris-0.15.0-incubating-src/fs_brokers/apache_hdfs_broker/output.tar /tmp

4 搭建单机版 hadoop

加载 hadoop 镜像,并启动 hadoop 容器

docker load -i hadoop.tar
docker run -i -t --name hadoop --network host -d sequenceiq/hadoop-docker:2.6.0
安装broker :

5 启动 fs_broker

将编译好的 fs_broker 上传到 DataEase 的服务器,并且拷贝到 doris-fe 容器内部

#拷贝
docker cp output.tar doris-fe:/tmp
#解压
tar -xvf output.tar
#启动 broker
cd output/apache_hdfs_broker
sh bin/start_broker.sh --daemon

6 往 Doris 里添加 fs_broker

在 doris-fe 内部执行以下命令,连接 Doris

mysql -u root -P9030 -h doris-fe -pPassword123@Doris
执行以下命令添加 名为 hdfs_broker 的 broker

ALTER SYSTEM add BROKER hdfs_broker "Doris-fe:8000";
添加完成后,执行以下命令查看 broker 状态

show proc "/brokers";

image-1650615668026
当观察到 Alive 状态为 true 时,broker 即安装成功。

7 创建远端仓库

执行以下命令创建远端仓库,注意,IP 替换为 hadoop 所在服务器的 IP

CREATE REPOSITORY `hdfs_repo`
WITH BROKER `hdfs_broker`
ON LOCATION "hdfs://IP:9000/hdfs_repo/"
PROPERTIES
(
    "username" = "root",
    "password" = ""
);
创建完成后,执行一下命令查看远端仓库是否成功建立

show repositories;

image-1650615682906
同时,我们可以去 hadoop web 页面查看下备份文件夹是否成功建立。

访问:http://ip:50070,查看到 hdfs_repo 的文件夹,即说明远端仓库建立成功。
image-1650615691317

8 创建备份任务

Doris 备份任务仅可针对表来进行,可以同时备份多张表,因此我们需要将 DataEase 中所有的表以 “,” 拼接。

在 Doris 库里执行以下命令,查询出表名合集。

use dataease;
select group_concat(table_name) from information_schema.tables where table_schema='dataease';

注意:将复制查询出来的结果集,替换到以下命令的 tables 里。

BACKUP SNAPSHOT dataease.dataease_snapshot_0328 TO hdfs_repo ON (tables);
执行以下命令查看备份任务状态及进度

show backup;
注意观察两个字段,state (备份任务状态),Progress (备份进度),当 state 为 FINISHED 时备份即已完成。

9 创建恢复任务

使用任意 MySQL 客户端连接目标 Doris
在目标 Doris 里创建远端仓库,注意:命令必须同源 Doris 里创建远端仓库一样

CREATE REPOSITORY `hdfs_repo`
WITH BROKER `hdfs_broker`
ON LOCATION "hdfs://IP:9000/hdfs_repo/"
PROPERTIES
(
    "username" = "root",
    "password" = ""
);
接着执行一下命令查看已备份的快照
show snapshot on hdfs_repo;

image-1663211853769

接着我们执行恢复任务,如果数据库没有创建,首先创建数据库
create database dataease;
use dataease;
执行恢复任务,注意:tables 同备份时的 tables , backup_timestamp 的值为上一步查询出来的快照的 Timestamp。
RESTORE SNAPSHOT dataease_snapshot_0328 FROM `hdfs_repo` ON (tables) PROPERTIES ("backup_timestamp"="2022-03-28-15-12-47");
执行以下命令查看恢复任务状态
show restore;

image-1650615772616
待 state 状态变为 FINISHED 时,快照即恢复完成。

此时就可以修改原本 DataEase 的 Doris 连接,指向新的 Doris 了。



是否对你有帮助?