自建minio实现doris的快速备份与恢复

2023-11-08

一.概述

        doris支持通过腾讯云bos、阿里云oss、hdfs实现备份与恢复,但是我们公司doris部署在线下机房,如采用oss/bos, 大数据备份与恢复比较慢,会占用一定的带宽,如采用hdfs,担心小文件太多影响现有的hadoop集群。为了保险起见,而且能够达到快速的备份恢复,我们实现自主搭建一套minio对象存储。

二.目的

       1.当FE元数据发生损坏无法恢复时,我们能快速的从minio恢复,内网带宽拉满

       2.当需要升级doris时,我们可以搭建一个测试集群,从minio快速copy数据测试

三.实现

1.单机多磁盘minio搭建

1)下载安装包

wget https://dl.minio.io/server/minio/release/linux-amd64/minio

2)创建存储目录

mkdir /data01/minio;
mkdir /data02/minio;
mkdir /data03/minio;
mkdir /data04/minio;
mkdir /data05/minio;

3)启动minio

#!/bin/bash

export MINIO_ACCESS_KEY=minio
export MINIO_SECRET_KEY=minioadmin

nohup /opt/minio/minio server --address=0.0.0.0:9898 /data01/minio /data02/minio /data03/minio /data04/minio /data05/minio>> /opt/minio/nohup.log 2>&1 &

 端口自定义为9898

4 )浏览器访问, 并创建bucket

2.doris备份

1 )创建repository仓库

CREATE REPOSITORY `minio`
WITH S3
ON LOCATION "s3://doris"
PROPERTIES
(
    "AWS_ENDPOINT" = "http://10.254.3.xx:9898",
    "AWS_ACCESS_KEY" = "minio",
    "AWS_SECRET_KEY"="minioadmin",
    "AWS_REGION" = "us-east-1",
    "use_path_style" = "true"
);

2 )查看仓库

show repositories

3)备份指定库的指定表

BACKUP SNAPSHOT dal.snapshot_dal
TO minio 
ON (example_tbl)

4)备份指定库所有表

BACKUP SNAPSHOT dal.snapshot_dal
TO minio 

5)查看备份进度

use dal;
show backup;

3.doris恢复

1)查看存在哪些备份

SHOW SNAPSHOT ON minio;

2)恢复整个db

RESTORE SNAPSHOT dal.snapshot_dal
FROM `minio`
PROPERTIES
(
    "backup_timestamp"="2023-05-15-12-06-44",
    "replication_num" = "3"
);

3)恢复指定的表

RESTORE SNAPSHOT dal.snapshot_dal
FROM `minio`
ON ( `backup_tbl` )
PROPERTIES
(
    "backup_timestamp"="2023-05-15-12-06-44",
    "replication_num" = "3"
);

当要快速恢复应用时,可以先暂时设置副本为1,后续再动态增加副本数

4.踩坑

    如果该表是动态分区表,备份之后会自动禁用动态分区属性,在做恢复的时候需要手动将该表的动态分区属性启用,命令如下:

ALTER TABLE tbl1 SET ("dynamic_partition.enable"="true")

    但是官方并没有提供批量更改所有分区表的方法,以下为脚本:

#!/bin/bash


DORIS_HOST=xxxxxx
DORIS_PORT=xxxx
DORIS_USER=xxx
DORIS_PASSWORD=xxxx


databases=`mysql -h $DORIS_HOST -P $DORIS_PORT -u$DORIS_USER -p$DORIS_PASSWORD -e "show databases;"`
for db in ${databases};do
  if [[ $db != 'Database' ]] && [[ $db != 'information_schema' ]];then

      tables=`mysql -h $DORIS_HOST -P $DORIS_PORT -u$DORIS_USER -p$DORIS_PASSWORD -e "use $db;show tables;"`
      for table in ${tables};do
            if [[ $table =~ "Tables_in" ]];then
               echo ""
            else
               echo $table
               num=`mysql -h $DORIS_HOST -P $DORIS_PORT -u$DORIS_USER -p$DORIS_PASSWORD -e "show create table $db.$table\G" | grep "dynamic_partition.time_unit" | wc -l`
               if [[ $num == 1 ]];then
                   sql="alter table $db.$table set ('dynamic_partition.enable'='true');"
                   echo $sql
                   mysql -h $DORIS_HOST -P $DORIS_PORT -u$DORIS_USER -p$DORIS_PASSWORD -e "$sql"
               fi
            fi
       done

  fi
done

 

外链:

    minio:  基于AWS S3协议搭建个人云存储服务 - 简书

    doris:  RESTORE - Apache Doris

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自建minio实现doris的快速备份与恢复 的相关文章

随机推荐

  • vue3自定义指令批量注册(按钮防重指令)

    vue3文档中很简单的描述了一下自定义指令
  • es分布式架构和原理分析

    es的分布式架构 前言 这篇初识ElasticSearch文章中 说明了es的集群的核心概念 回顾一下 关于节点 一个运行中的 es实例称为一个节点 而集群是由一个或者多个拥有相同cluster name 配置的节点组成 它们共同承担数据和
  • 计算机四级网络工程师(计算机网络单选)- 知识点

    计算机四级网络工程师 操作系统单选 计算机四级网络工程师 操作系统多选 计算机四级网络工程师 计算机网络单选 计算机四级网络工程师 计算机网络多选 一 Ethernet 1 Ethernet帧结构一般包含前导码 帧前定界符 目的地址 源地址
  • Device Association Service占用CPU - 解决方案

    问题 电脑开启蓝牙后 连接蓝牙设备时 服务主机 Device Association Service服务可能会占用大量CPU 在任务管理器中可以查看 若占用CPU持续超过10 则属于异常状态 由于本人问题已经解决 因此没有问题截图 下文介绍
  • 用R做中文LDA主题模型可视化分析

    LDA主题模型在2002年被David M Blei Andrew Y Ng 是的 就是吴恩达老师 和Michael I Jordan三位第一次提出 近几年随着社会化媒体的兴起 文本数据成为越来越重要的分析资料 海量的文本数据对社会科学研究
  • 99_好题整理1—鸡兔同笼

    F 鸡兔同笼 内存限制 128 MiB 时间限制 3000 ms标准输入输出 题目描述 已知鸡和兔的总数量为n 总腿数为m 输入n和m 依次输出鸡和兔的数目 如果无解 则输出 No answer 不要引号 输入格式 第一行输入一个数据a 代
  • 实用 SQL 语句收藏这篇就够了

    前言 文章沿着设计一个假想的应用 awesome app 为主线 从零创建修改数据库 表格 字段属性 索引 字符集 默认值 自增 增删改查 多表查询 内置函数等实用 SQL 语句 收藏此文 告别零散又低效地搜索经常使用的 SQL 语句 所有
  • STM32程序卡死HardFault_Handler

    在工作过程中移植部分功能程序后发现程序经常性莫名卡死 然后就一直在HardFault Handler中断卡死 解决如下 1 首先去网上查询了出现HardFault Handler是由于什么原因造成 1 堆栈溢出 这个可能性不大 2 数组越界
  • Scrapy+bs4爬取京东商品对应的评论信息

    Scrapy bs4爬取京东商品对应的评论信息 spiders comm py coding utf 8 import json import jsonpath import scrapy from bs4 import Beautiful
  • tomcat端口介绍以及配置启用https

    一 tomcat 默认端口
  • 步进电动机 - 特征篇(一)

    第1章 步进电动机特征篇 1 1 步进电动机特征 步进电动机是如同时钟的秒针一般 每次旋转一定角度的电动机 首先 介绍一下步进电动机的特征 链接 https www orientalmotor com cn web seminar stki
  • 添加区块到区块链当中003

    package main import crypto sha256 fmt 0 定义结构 创建前哈希值 创建当前哈希值 和数据 type Block struct Prevhash byte 前哈希 Hash byte 当前哈希 TODO
  • 【三维重建】【深度学习】NeRF_Pytorch代码--预备基础知识

    三维重建 深度学习 NeRF Pytorch代码 预备基础知识 给定一个场景的多视角的图像 神经辐射场 NeRF 通过图像重建误差优化一个神经场景表征 优化后可以实现逼真的新视角合成效果 NeRF最先是应用在新视点合成方向 由于其超强的隐式
  • 面试/笔试第三弹 —— 数据库面试问题集锦

    写在前面 找工作告一段落 期间经历了很多事情 也思考了许多问题 最后也收获了一些沉甸甸的东西 成长和一些来自阿里 百度 京东 sp 华为等厂的Offer 好在一切又回到正轨 接下来要好好总结一番才不枉这段经历 遂将此过程中笔者的一些笔试 面
  • 【JAVASCRIPT】javascript随机生成颜色8种方法

    实现1 JavaScript代码 var getRandomColor function return function color return color 0123456789abcdef Math floor Math random
  • FFMPEG常用命令

    FFmpeg编码和支持 FFmpeg源代码中包含的编码格式很多 常见不常见的都可以在编译皮质列表中见到 可以通过的编译配置命令 configure list encoders 常见的编码器的格式有 AAC AC3 H 264 H 265 M
  • Qt中连接两个字符串,并在其中添加换行符

    Qt中连接两个字符串 并在其中添加换行符 在Qt中想要将两个字符串连接在一起 只需要在两个字符串之间加入 即可 输出显示即为两个字符串连在一起 如果想在字符串后面加入换行符 然后再连接另一个字符串 直接在字符串后面添加 n 是行不通的 这里
  • SMIL 直播协议

    Synchronized Multimedia Integration Language SMIL sma l is a World Wide Web Consortium recommended Extensible Markup Lan
  • js实现表格排序

    用js实现表格排序 第一点击以降序排列 第二次点击以升序排列 html代码 table border 1 tr th 学号 th th 名字 th th 成绩 th tr tr td 100 td tr table
  • 自建minio实现doris的快速备份与恢复

    一 概述 doris支持通过腾讯云bos 阿里云oss hdfs实现备份与恢复 但是我们公司doris部署在线下机房 如采用oss bos 大数据备份与恢复比较慢 会占用一定的带宽 如采用hdfs 担心小文件太多影响现有的hadoop集群