且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

OceanBase Docker 体验

更新时间:2022-09-14 15:34:51

OceanBase Docker 体验

主机环境

Vmware 虚拟机 CentOS 7 内存 11G cpu 2个 硬盘 40G

0. 安装 Docker

使用存储库安装

  1. 设置存储库

sudo yum install -y yum-utils


sudo yum-config-manager \

    --add-repo \

    https://download.docker.com/linux/centos/docker-ce.repo

  1. 安装 Docker 引擎

# 安装最新版本的 Docker Engine 和 containerd

 sudo yum install docker-ce docker-ce-cli containerd.io

OR 

# 安装特定版本的 Docker


yum list docker-ce --showduplicates | sort -r


sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

  1. 启动 Docker

systemctl start docker


# 查看是否启动成功 显示为active(running)即为启动成功

systemctl status docker

4. 将docker设置为开机自启动,免得每次重启虚拟机都要开启docker服务

systemctl enable docker

1. 查看 OceanBase 数据库相关镜像。

# 搜索 oceanbase 相关镜像

 docker search oceanbase   

OceanBase Docker 体验

2. 下载 OceanBase -> obpilot/oceanbase-ce 镜像。

https://hub.docker.com/repository/docker/obpilot/oceanbase-ce

# 拉取 oceanbase obpilot/oceanbase-ce 镜像

 docker pull obpilot/oceanbase-ce:latest

OceanBase Docker 体验

# 查看下载的镜像

 docker images

OceanBase Docker 体验

3. 安装 OceanBase -> obpilot/oceanbase-ce 镜像

# 启动 OceanBase Docker 容器

 docker run -itd -m 10G -p 2881:2881 -p 2883:2883 --name oceanbase-ce obpilot/oceanbase-ce:latest

OceanBase Docker 体验

# 查看 OceanBase Docker 容器

 docker ps

OceanBase Docker 体验

# 进入 OceanBase Docker 容器

 docker exec -it oceanbase-ce bash

OceanBase Docker 体验


4. 使用 OBD 命令完成后续的 OceanBase 集群部署。

# 查看 ODB 部署配置

 obd cluster list

OceanBase Docker 体验

# 部署 Ocean Base 单副本集群

 obd cluster start obdemo

Bug上一步 启动 OceanBase Docker 容器 没有完全启动起来出现链接错误,等一下就好啦

OceanBase Docker 体验

ok 部署成功

OceanBase Docker 体验

# 查看集群详细信息

 obd cluster display obdemo

OceanBase Docker 体验

3. 创建一个业务租户、一个业务数据库,以及一些表等。

登录单副本集群

obckuebt 命令

  • -h+IP地址
  • -u+用户名
    • 用户名 =(租户户)+@(实例名)#(集群名称)


  • -P+2883 端口号
  • -p+密码
  • -c 表示在 MySQL 运行环境中不要忽略注释。
  • -A 表示在 MySQL 连接数据库时不自动获取统计信息。
  • oceanbase 访问的数据库名,可以改为业务数据库。

# 使用 observer 2881 端口登录 直连

 obclient -h127.1 -uroot@sys -P2881 -prootPWD123 -c -A oceanbase

OceanBase Docker 体验


# 使用 obproxy 2883 端口登录

 obclient -h127.1 -uroot@sys#obce-single -P2883 -prootPWD123 -c -A oceanbase

OceanBase Docker 体验

创建租户

修改资源单元配置

alter resource unit sys_unit_config min_cpu=2;

创建资源单元规格

创建资源单元规格,并不会立即分配资源。资源单元规格元数据在视图 __all_unit_config 里。 创建之前可以先查看一下,如果有合适的规格,也是可以复用的。

CREATE resource unit S1 max_cpu=2, min_cpu=2, max_memory='2G', min_memory='2G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size='10G';

参数解释

参数

描述

MAX_CPU

指定 CPU 的最多数量。

MAX_MEMORY

指定最大内存容量,取值范围为[1073741824, +∞) 。单位为字节B,最小值为 1G。

MAX_IOPS

指定 IOPS 的最多数量,取值范围为[128,+∞)。

MAX_DISK_SIZE

指定最大硬盘容量,取值范围为[536870912,+∞]。单位为字节,即最小值为 512M。

MAX_SESSION_NUM

指定 Session 的最多数量,取值范围为[64,+∞)。

MIN_CPU

指定 CPU 的最少数量。

MIN_MEMORY

指定最小内存容量。

MIN_IOPS

指定 IOPS 的最少数量。

修改资源单元配置时,各参数与 CREATE resource unit 一致

创建资源池

资源池从节点的资源中分配。资源池在每个节点里的部分被称之为“资源单元”。每个资源单元的大小通过创建的时候指定“资源单元规格”定。

CREATE resource pool my_pool unit = 'S1', unit_num = 1;

参数解释:

参数

描述

poolname

指定要创建的资源池的名称。

UNIT [=] unitname

指定资源规格的名称。

UNIT_NUM [=] unitnum

指定要创建的单个 Zone 下的 Unit 个数。每个单元会根据当前集群负载,自动在每个 Zone 中选择一个 Server 负载,但同一个资源池的多个 Unit 不能分配到同一个 Server,即一个资源池包含的 Unit 个数不能超过单 ZoneServer 的个数。

ZONE_LIST [=] ('zone' [, 'zone' …])

指定要创建的资源池所属的 Zone。 如果不指定,就默认在所有 Zone 创建这个资源单元。

创建业务实例(创建租户

create tenant obmysql resource_pool_list=('my_pool'), primary_zone='RANDOM',comment 'mysql tenant/instance', charset='utf8' set ob_tcp_invited_nodes='%', ob_compatibility_mode='mysql';

exit;

参数解释:

参数

描述

tenant_name

指定租户名。最长 64 个字节,只能有大小写英文字母,数字和下划线,而且必须以字母或下划线开头,并且不能是 OceanBase 数据库的关键字。

IF NOT EXISTS

如果要创建的租户名已存在,并且没有指定 IF NOT EXISTS,则会报错。

RESOURCE_POOL_LIST

资源池列表,为创建租户时的必填项 。

DEFAULT TABLEGROUP

设置租户默认表分组信息,NULL 表示取消默认表分组。如果不指定,默认为 NULL。

COMMENT

修改注释。

CHARACTER SET

CHARSET

COLLATE

指定校对规则。

REPLICA_NUM

指定副本数。

ZONE_LIST

指定要修改的 Zone 列表。

PRIMARY_ZONE

指定 Primary Zone。

LOGONLY_REPLICA_NUM

指定日志副本数。

LOCALITY

描述副本在 Zone 间的分布情况,如:F@z1,F@z2,F@z3,R@z4 表示 z1、z2、z3 为全功能副本,z4 为只读副本。

system_var_name

指定租户系统变量值。其中 ob_compatibility_mode 用于指定租户的兼容模式(可选 mysqloracle 。社区版只支持 mysql ),只能在创建时指定;如果不指定 ob_compatibility_mode,默认兼容模式为 mysql

链接业务实例

  1. 使用 obclient 客户端链接 使用方法跟 mysql 命令一样

obclient -h 127.1 -uroot@obmysql#obce-single -P2883 -p -c -A test


创建业务数据库

#创建业务数据库 odb00

 create database odb00; 


在业务租户 创建用户

# create user 创建用户

 create user user20@'%' identified by 'user20';

# 赋予用户user01权限

 grant all privileges on *.* to user20@'%' ;


# grant 语句自动创建用户

 grant all privileges on *.* to user30@'%' identified by 'user30';


# 使用 show grants 查看用户权限

show grants for user20;

show grants for user30;

   

OceanBase Docker 体验

OceanBase Docker 体验

创建业务表

# 使用业务用户 user20 登录 obmysql 租户的 odb00 数据库

obclient -h 127.1 -uuser20@obmysql#obce-single -P2883 -puser20 -c -A odb00


# 创建名为 test1 的表

 create table test1(id int) ;

  

# 向test1表中插入一行数据

 insert into test1 values(1) ;

  

# 从 test1 表中选取所有列

 select * from test1 ;

OceanBase Docker 体验