【容器化】Oceanbase镜像构建及使用

通过该篇文章可以在国产X86-64或ARM架构上构建商业版oceanbase,只需要替换pkg安装包即可。下面截图主要以国产X86-64安装为例,作为操作截图:

镜像构建目录说明

在这里插入图片描述

pkg:用来存放安装包及脚本,抛出rpm其他是脚步,这些rpm包可以下载不同系统架构的包,构建镜像时该目录只需要保留对应架构包就行。

在这里插入图片描述

镜像文件说明

Dockerfile

FROM kylin-server-10-sp2-x86:b09
MAINTAINER weltest

ADD pkg /mnt/software/pkg

ENV OB_HOME_PATH=/home/admin/oceanbase

EXPOSE 2881 2882 

RUN cd /mnt/software/pkg && yum clean all && yum makecache \
    && yum install libaio net-tools -y && bash installDB && rm -rf /mnt && chmod 755 -R /home/admin/oceanbase/init/InitDB && chmod 755 -R /home/admin/oceanbase/sh/*

WORKDIR /home/admin/oceanbase

CMD ["/bin/bash","-c","/home/admin/oceanbase/init/InitDB"]

这里未提供yum的repo文件,如果内网构建这里需要把RUN替换为如下内容:

RUN cd /mnt/software/pkg && rm -rf /etc/yum.repos.d/* && mv nexus-kylin-V10SP2.repo /etc/yum.repos.d/ && yum clean all && yum makecache \
    && yum install libaio net-tools -y && bash installDB && rm -rf /mnt && chmod 755 -R /home/admin/oceanbase/init/InitDB && chmod 755 -R /home/admin/oceanbase/sh/*

installDB

Dockerfile中的bash installDB执行脚步内容如下:

#!/bin/bash
set -e
CWD=$(cd `dirname $0`;pwd)
cd "${CWD}"
source /mnt/software/pkg/_env

echo "create data dirs..."
mkdir -p $OB_DATA_PATH/{1,log1}
echo "install ob cluster ..."
rpm -ivh /mnt/software/pkg/*.rpm --nodeps

echo "Init ob dir..."
mkdir -p $OB_DATA_PATH/1/$OB_CLUSTER_NAME/{etc3,sort_dir,sstable,slog}
mkdir -p $OB_DATA_PATH/log1/$OB_CLUSTER_NAME/{clog,etc2,ilog,oob_clog} 
mkdir -p $OB_HOME_PATH/store/$OB_CLUSTER_NAME
for t in {etc3,sort_dir,sstable,slog};do ln -s $OB_DATA_PATH/1/$OB_CLUSTER_NAME/$t $OB_HOME_PATH/store/$OB_CLUSTER_NAME/$t; done
for t in {clog,etc2,ilog,oob_clog};do ln -s $OB_DATA_PATH/log1/$OB_CLUSTER_NAME/$t $OB_HOME_PATH/store/$OB_CLUSTER_NAME/$t; done

mkdir -p $OB_HOME_PATH/{sh,init} 
mv /mnt/software/pkg/StartOB $OB_HOME_PATH/sh
mv /mnt/software/pkg/StopOB $OB_HOME_PATH/sh
mv /mnt/software/pkg/_env $OB_HOME_PATH/sh
mv /mnt/software/pkg/InitDB $OB_HOME_PATH/init
mv /mnt/software/pkg/ob-init.sql $OB_HOME_PATH/init
echo "install Oceanbase success!"

该脚步主要用于安装包安装及oceanbase目录创建及脚步添加。

InitDB

Dockerfile中的/home/admin/oceanbase/init/InitDB执行脚步内容如下:

#!/bin/bash
source /home/admin/oceanbase/sh/_env
set -e
CWD=$(cd `dirname $0`;pwd)
echo "Current dir: ${CWD}"

echo "update BOOTSTRAP config..."
sed -i "s|@HOSTIP@:@OB_RPC_PORT@|${HOST_IP}:${OB_RPC_PORT}|g" $OB_HOME_PATH/init/ob-init.sql

cd ${OB_HOME_PATH}

CMD="${OB_HOME_PATH}/bin/observer -i eth0 -P ${OB_RPC_PORT} -p ${OB_DB_PORT} -z zone1 -d ${OB_HOME_PATH}/store/${OB_CLUSTER_NAME} -r '${HOST_IP}:2882:2881' -c 10001 -n ${OB_CLUSTER_NAME} -o \"system_memory=${SYSTEM_MEMORY},datafile_size=${DATAFILE_SIZE},config_additional_dir=${OB_DATA_PATH}/1/${OB_CLUSTER_NAME}/etc3;${OB_DATA_PATH}/log1/${OB_CLUSTER_NAME}/etc2\""

echo "Command is: ${CMD}"
${CMD}
if [ $? -eq 0 ]; then
  echo "boot success!"
  sleep 30s
  CMD="obclient -h${HOST_IP} -uroot@${OB_TENANT_NAME} -A -P${OB_DB_PORT} < ${OB_HOME_PATH}/init/ob-init.sql"
  echo "Init BOOTSTRAP Command is: ${CMD}"
  obclient -h${HOST_IP} -uroot@${OB_TENANT_NAME} -A -P${OB_DB_PORT} < $OB_HOME_PATH/init/ob-init.sql
  echo "Init BOOTSTRAP success!"
  
else
   echo "boot failed!"
   echo "Please check the log file ${OB_HOME_PATH}/log/observer.log"
fi

该脚本主要用于启动并初始化oceanbase集群。改脚步中的ob-init.sql内容如下:

SET SESSION ob_query_timeout=1000000000;
ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '@HOSTIP@:@OB_RPC_PORT@';

StartOB

StartOB脚步内容如下:

#!/bin/bash
source /home/admin/oceanbase/sh/_env
set -e
CWD=$(cd `dirname $0`;pwd)
cd "${CWD}"
cd ${OB_HOME_PATH}

CMD="${OB_HOME_PATH}/bin/observer -i eth0 -P ${OB_RPC_PORT} -p ${OB_DB_PORT} -z zone1 -d ${OB_HOME_PATH}/store/${OB_CLUSTER_NAME} -r '${HOST_IP}:2882:2881' -c 10001 -n ${OB_CLUSTER_NAME} -o \"system_memory=${SYSTEM_MEMORY},datafile_size=${DATAFILE_SIZE},config_additional_dir=${OB_DATA_PATH}/1/${OB_CLUSTER_NAME}/etc3;${OB_DATA_PATH}/log1/${OB_CLUSTER_NAME}/etc2\""

echo "Command is: ${CMD}"
svrs=`ps -ef | grep 'observer' | grep -v 'grep observer' | wc -l`
if [  $svrs -gt 0 ]
   then
		echo -e "\e[31;1;5mServers are running now!\e[0m\n"
		echo -e "\e[32;1mPlease stop servers and try again!\e[0m\n"
		exit 5
else 
   ${CMD}
   if [ $? -eq 0 ]; then
        date
        sleep 60s
		date
		echo "boot success!"
   else
		  echo "boot failed!"
		  echo "Please check the log file ${OB_HOME_PATH}/log/observer.log"
fi
fi

改脚步用于启动oceanbase集群服务。

StopOB

StopOB脚步内容如下:

#!/bin/bash

svrs=`ps -ef | grep 'observer' | grep -v 'grep observer' | wc -l`
if [  $svrs -gt 0 ]
   then
        kill -9 $(ps -ef | grep 'observer' | grep -v 'grep observer' | awk '{ print $2 }')
		echo -e "\e[31;1;5m Kill observer is Finished!\e[0m\n"
fi

该脚步主要用于关闭Oceanbase集群服务。

_env

installDB、InitDB脚本中的_env内容如下:

OB_HOME_PATH="/home/admin/oceanbase"
OB_DATA_PATH="/data"
OB_DB_PORT="2881"
OB_RPC_PORT="2882"
OB_CLUSTER_NAME="obcluster"
OB_TENANT_NAME="sys"
HOST_IP="$(ifconfig | grep cast | awk '{print $2}')"
SYSTEM_MEMORY="5G"
DATAFILE_SIZE="2G"

该脚本主要用于环境配置,用来设置oceabase的初始配置值。

镜像构建

进入到构建目录下,执行构建命令:

docker build -t oceanbase:3.2.4.1 .

使用docker-compose编排容器

version: '2'
services:  
 oceanbase:
    container_name: oceanbase
    image: oceanbase:3.2.4.1
    user: root
    hostname: oceanbase
    ports: 
      - "12881:2881"
      - "12882:2882"
    volumes:
      #对数据进行固化
      - "/data/oceanbase:/home/admin/oceanbase/data"   
    command:
      - /bin/sh
      - -c
      - |
        sh /home/admin/oceanbase/init/InitDB
        #创建资源单元
        obclient -h127.0.0.1 -uroot@sys -A -P2881 -e "CREATE RESOURCE UNIT unit1 MAX_CPU 1, MAX_MEMORY '1G', MAX_IOPS 128,MAX_DISK_SIZE '10G', MAX_SESSION_NUM 64, MIN_CPU=1, MIN_MEMORY='1G', MIN_IOPS=128"
        echo "创建资源单元unit1完成!"
        #调整最小资源池限制为1G
        obclient -h127.0.0.1 -uroot@sys -A -P2881 -e "alter system __min_full_resource_pool_memory=1073741824"
        echo "调整最小资源池限制为1G完成!"
        #创建资源池
        obclient -h127.0.0.1 -uroot@sys -A -P2881 -e "CREATE RESOURCE POOL pool1 unit='unit1', unit_num=1, zone_list=('zone1')"
        echo "创建资源池pool1完成!"
        #创建oracle租户
        obclient -h127.0.0.1 -uroot@sys -A -P2881 -e "CREATE TENANT IF NOT EXISTS oracledb charset='utf8mb4', replica_num=1, zone_list=('zone1'), primary_zone='zone1', resource_pool_list=('pool1') SET ob_compatibility_mode='oracle', ob_tcp_invited_nodes='%'"
        echo "创建oracle租户oracledb完成!"
        #连接oracle模式创建用户WELTEST
        obclient -h127.0.0.1 -usys@oracledb -A -P2881 -e "create user WELTEST identified by WELTEST"
        echo "oracle模式创建用户WELTEST完成!"
        #给用户赋权
        obclient -h127.0.0.1 -usys@oracledb -A -P2881 -e "GRANT ALL PRIVILEGES TO WELTEST"
        echo "给用户赋权完成!"
        /bin/sh
    tty: true
    stdin_open: true

该文件主要是使用启动oceanbase集群、创建资源池、创建oracle租户并给用户赋权。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/68215.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

伪原创神码ai怎么样【php源码】

这篇文章主要介绍了python汉化补丁包下载&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 火车头采集ai伪原创插件截图&#xff1a; ** Spyder汉化&#xff08;python汉化&…

解锁滴滴ES的性能潜力:JDK 17和ZGC的升级之路

前文介绍了滴滴自研的ES强一致性多活是如何实现的&#xff0c;其中也提到为了提升查询性能和解决查询毛刺问题&#xff0c;滴滴ES原地升级JDK17和ZGC&#xff0c;在这个过程中我们遇到了哪些问题&#xff0c;怎样解决的&#xff0c;以及最终上线效果如何&#xff0c;这篇文章就…

软考高级之系统架构师之数据通信与计算机网络

概念 OSPF 在划分区域之后&#xff0c;OSPF网络中的非主干区域中的路由器对于到外部网络的路由&#xff0c;一定要通过ABR(区域边界路由器)来转发&#xff0c;既然如此&#xff0c;对于区域内的路由器来说&#xff0c;就没有必要知道通往外部网络的详细路由&#xff0c;只要由…

[系统安全] 五十二.DataCon竞赛 (1)2020年Coremail钓鱼邮件识别及分类详解

您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系…

MyCat配置rule.xml、server.xml讲解

1. rule.xml分片规则配置文件 rule.xml中配置的主要就是拆分表的规则&#xff0c;rule.xml中主要包含两类标签 tableRule 和Function。 tableRule标签里面主要配置我们的分片规则&#xff0c;Function里面涉及的是分片规则里面所涉及的java类&#xff0c;都是在function中配置…

学习笔记-JAVAJVM-JVM的基本结构及概念

申明&#xff1a;文章内容是本人学习极客时间课程所写&#xff0c;文字和图片基本来源于课程资料&#xff0c;在某些地方会插入一点自己的理解&#xff0c;未用于商业用途&#xff0c;侵删。 原资料地址&#xff1a;课程资料 什么是JVM 原文连接&#xff1a; 原文连接 JVM是J…

Unity游戏源码分享-精品即时战略游戏_官网60美刀素材

Unity游戏源码分享-精品即时战略游戏_官网60美刀素材 下载地址&#xff1a;https://download.csdn.net/download/Highning0007/88204017

2023年10款常用的Mac工具合集

Typora Typora 是一款由 Abner Lee 开发的轻量级 Markdown 编辑器&#xff0c;与其他 Markdown 编辑器不同的是&#xff0c;Typora 没有采用源代码和预览双栏显示的方式&#xff0c;而是采用所见即所得的编辑方式&#xff0c;实现了即时预览的功能&#xff0c;但也可切换至源代…

关于Postman如何配置随请求携带token

文章目录 一些吐槽实际应用 一些吐槽 首先吐槽一下 postman官网的文档说明&#xff0c;真是乱七八糟&#xff0c;一点都不清晰&#xff0c;能不能好好写用户手册啊&#xff08;比如把用户都当作初始小白&#xff09; 然后吐槽一下网上铺天盖地让我写js脚本应用全局access toke…

uniapp开发小程序-分包(微信错误码:800051)

在使用uniapp开发小程序时&#xff0c;上传的时候因为文件过大&#xff0c;显示上传失败。 以下是开发过程中遇到的问题及解决方法&#xff1a; 1. 问题一&#xff1a;因为文件过大&#xff0c;显示上传失败 ①尝试过把本地使用的图片压缩到最小&#xff1b; ②把图片转换为网…

火山引擎联合Forrester发布《中国云原生安全市场现状及趋势白皮书》,赋能企业构建云原生安全体系

国际权威研究咨询公司Forrester 预测&#xff0c;2023年全球超过40%的企业将会采用云原生优先战略。然而&#xff0c;云原生在改变企业上云及构建新一代基础设施的同时&#xff0c;也带来了一系列的新问题&#xff0c;针对涵盖云原生应用、容器、镜像、编排系统平台以及基础设施…

ThinkPHP6企业OA办公系统

有需要请加文章底部Q哦 可远程调试 ThinkPHP6企业OA办公系统 一 介绍 勾股OA基于ThinkPHP6开发&#xff0c;前端Layui&#xff0c;数据库mysql&#xff0c;是一款实用的企业办公系统。可多角色登录&#xff0c;集成了系统设置、人事管理、消息管理、审批管理、日常办公、客户…

机器学习深度学习——常见循环神经网络结构(RNN、LSTM、GRU)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——RNN的从零开始实现与简洁实现 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章…

4用opencv玩转图像2

opencv绘制文字和几何图形 黑色底图 显示是一张黑色图片 使用opencv画圆形 #画一个圆 cv2.circle(imgblack_img,center(400,400),radius100,color(0,0,255),thickness10) 画实心圆 只需要把thickness-1。 cv2.circle(imgblack_img,center(500,600),radius50,color(0,0,255),t…

JS逆向系列之猿人学爬虫第11题 - app抓取 - so文件协议破解

题目地址 http://match.yuanrenxue.com/match/11这是个app题目,先下载下来安装到测试手机上 安装完成后的app界面长这样 打开之后是这样的: 要求已经简单明了了。 二话不说先反编译app 不出意外的是没出意外,源代码里面没啥混淆,所有东西都展示的明明白白的。 "…

Apache Maven:从构建到部署,一站式解决方案

目录 一、Maven介绍 1. Maven是什么&#xff1f; 2.Maven的作用&#xff1f; 二、Maven仓库介绍 2.1 库的分类 三、Maven安装与配置 3.1 Maven安装 3.2 Maven环境配置 3.3 仓库配置 四、Eclipse与Maven配置 五、Maven项目测试 5.1 新建Maven项目步骤及注意事项 5.…

【LeetCode】236. 二叉树的最近公共祖先、 JZ36 二叉搜索树与双向链表

作者&#xff1a;小卢 专栏&#xff1a;《Leetcode》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 236. 二叉树的最近公共祖先 236. 二叉树的最近公共祖先 题目描述&#xff1a; 给定一个二叉树…

为MySQL新增一张performance_schema表 | StoneDB 技术分享会 #4

StoneDB开源地址 https://github.com/stoneatom/stonedb 设计&#xff1a;小艾 审核&#xff1a;丁奇、李浩 编辑&#xff1a;宇亭 作者&#xff1a;王若添 中国科学技术大学-软件工程-在读硕士、StoneDB 内核研发实习生 performance_schema 简介 MySQL 启动后会自动创建四…

中睿天下入选河南省网信系统2023年度网络安全技术支撑单位

近日&#xff0c;河南省委网信办发布了“河南省网信系统2023年度网络安全技术支撑单位名单”&#xff0c;中睿天下凭借出色的网络安全技术能力和优势成功入选。 本次遴选由河南省委网信办会同国家计算机网络与信息安全管理中心河南分中心&#xff08;以下简称安全中心河南分中心…

高斯模糊与图像处理(Gaussian Blur)

高斯模糊在图像处理中的用途及其广泛&#xff0c;除了常规的模糊效果外&#xff0c;还可用于图像金字塔分解、反走样、高低频分解、噪声压制、发光效果等等等等。正因为高斯模糊太基础&#xff0c;应用太广泛&#xff0c;所以需要尽可能深入认识这个能力&#xff0c;避免在实际…