OceanBase Docker 体验:
主机环境
Vmware 虚拟机 CentOS 7 内存 11G cpu 2个 硬盘 40G
0. 安装 Docker
使用存储库安装
- 设置存储库
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
- 安装 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
- 启动 Docker
systemctl start docker
# 查看是否启动成功 显示为active(running)即为启动成功
systemctl status docker
4. 将docker设置为开机自启动,免得每次重启虚拟机都要开启docker服务
systemctl enable docker
1. 查看 OceanBase 数据库相关镜像。
# 搜索 oceanbase 相关镜像
docker search oceanbase
2. 下载 OceanBase -> obpilot/oceanbase-ce 镜像。
https://hub.docker.com/repository/docker/obpilot/oceanbase-ce
# 拉取 oceanbase obpilot/oceanbase-ce 镜像
docker pull obpilot/oceanbase-ce:latest
# 查看下载的镜像
docker images
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 容器
docker ps
# 进入 OceanBase Docker 容器
docker exec -it oceanbase-ce bash
4. 使用 OBD 命令完成后续的 OceanBase 集群部署。
# 查看 ODB 部署配置
obd cluster list
# 部署 Ocean Base 单副本集群
obd cluster start obdemo
Bug上一步 启动 OceanBase Docker 容器 没有完全启动起来出现链接错误,等一下就好啦
ok 部署成功
# 查看集群详细信息
obd cluster display obdemo
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
# 使用 obproxy 2883 端口登录
obclient -h127.1 -uroot@sys#obce-single -P2883 -prootPWD123 -c -A oceanbase
创建租户
修改资源单元配置
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 个数不能超过单 Zone 内 Server 的个数。 |
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 用于指定租户的兼容模式(可选 mysql 与 oracle 。社区版只支持 mysql ),只能在创建时指定;如果不指定 ob_compatibility_mode,默认兼容模式为 mysql。 |
链接业务实例
- 使用 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;
创建业务表
# 使用业务用户 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 ;