暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

实践一:OceanBase Docker 体验

majysky 2024-03-17
721

操作系统环境

[root@rocky8 ~]# cat /etc/redhat-release Rocky Linux release 8.7 (Green Obsidian) [root@rocky8 ~]# free -h total used free shared buff/cache available Mem: 15Gi 187Mi 15Gi 16Mi 271Mi 14Gi Swap: 2.1Gi 0B 2.1Gi [root@rocky8 ~]# lscpu |grep CPU CPU op-mode(s): 32-bit, 64-bit CPU(s): 4 On-line CPU(s) list: 0-3 CPU family: 6 CPU MHz: 2419.202 NUMA node0 CPU(s): 0-3

安装docker

删除旧的版本

​ 如果操作安装有自带的版本,请先删除。

[root@rocky8 ~]# yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

通过repo安装docker

​ 配置repo

#安装yum工具 [root@rocky8 ~]# yum install -y yum-utils #配置docker repo [root@rocky8 ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #安装docker-ce [root@rocky8 ~]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动docker

systemctl start docker

安装OceanBase

搜索 OceanBase 数据库相关镜像

[root@rocky8 ~]# docker search oceanbase NAME DESCRIPTION STARS OFFICIAL oceanbase/oceanbase-ce OceanBase is an open-source, distributed HTA… 24 oceanbasedev/ob-operator test repository for [ob-operator](https://gi… 0 oceanbasedev/oceanbase-cn 0 oceanbase/ob-operator Kubernetes operator for OceanBase 0 oceanbasedev/obagent 0 oceanbase/obce-mini obce-mini is a mini standalone test image fo… 5 oceanbase/oceanbase-xe OceanBase Database 2.2 Express Edition 4 oceanbase/miniob miniob database competition 2 oceanbase/obagent 0 oceanbase/obce-operator obce-operator 1 oceanbasedev/oceanbase-chart 0 oceanbase/oceanbase-cloud-native 0 oceanbase/obproxy-ce 0 oceanbasedev/obproxy-ce 0 oceanbase/ocp-ce OceanBase Cloud Platform (OCP) Community Edi… 0 oceanbasedev/sealer-ob 0 oceanbase/odc ODC is an open-source, enterprise-grade data… 0 oceanbase/kube-rbac-proxy 0 oceanbase/centos7 0 obpilot/oceanbase-ce 3 steps to run an OceanBase-CE docker in you… 4 oceanbase/cert-manager-webhook 0 apecloud/oceanbase 0 oceanbase/cert-manager-cainjector 0 oceanbase/cert-manager-controller 0 oceanbase/ob-configserver 0

拉取 OceanBase 数据库最新镜像

[root@rocky8 ~]# docker pull oceanbase/oceanbase-ce Using default tag: latest latest: Pulling from oceanbase/oceanbase-ce bf5ec1942180: Pull complete e4adbb3c0159: Pull complete 8cd8b592c1a9: Pull complete b2b53d02ed2d: Pull complete 3c52e3b5bf21: Pull complete 996389242088: Pull complete 4f4fb700ef54: Pull complete Digest: sha256:a6ac2588038b89a3eab5c7ab705cd55c82cc3b448d964becd149e1f371a35ac3 Status: Downloaded newer image for oceanbase/oceanbase-ce:latest docker.io/oceanbase/oceanbase-ce:lates #拉取指定版本 docker pull oceanbase/oceanbase-ce:3.1.4

启动 OceanBase 数据库实例

# 根据当前容器部署最大规格的实例
docker run -p 2881:2881 --name obstandalone -e MINI_MODE=0 -d oceanbase/oceanbase-ce:3.1.4

## 部署 mini 的独立实例
docker run -p 2881:2881 --name obstandalone -e MINI_MODE=1 -d oceanbase/oceanbase-ce:3.1.4

​ 查看日志,返回 boot success!,则表示启动成功

[root@rocky8 ~]# docker logs obstandalone | tail -1 Package obagent-4.2.2-100000042024011120.el7 is available. [root@rocky8 ~]# docker logs obstandalone | tail -1 Connect to observer ok [root@rocky8 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2787bb3e6b2f oceanbase/oceanbase-ce "/bin/sh -c _boot" About a minute ago Up About a minute 0.0.0.0:2881->2881/tcp obstandalone

登录并启动oceanbase-ce

# 进入到容器内部-bash [root@rocky8 ~]# docker exec -it obstandalone bash # 查看集群信息 [root@2787bb3e6b2f ~]# obd cluster list +------------------------------------------------------------+ | Cluster List | +-----------+------------------------------+-----------------+ | Name | Configuration Path | Status (Cached) | +-----------+------------------------------+-----------------+ | obcluster | /root/.obd/cluster/obcluster | running | +-----------+------------------------------+-----------------+ Trace ID: 14c3fc30-e345-11ee-b6be-0242ac110002 If you want to view detailed obd logs, please run: obd display-trace 14c3fc30-e345-11ee-b6be-0242ac110002 # 获取集群详细信息 [root@2787bb3e6b2f ~]# obd cluster display obcluster +------------------------------------------------------------+ | Cluster List | +-----------+------------------------------+-----------------+ | Name | Configuration Path | Status (Cached) | +-----------+------------------------------+-----------------+ | obcluster | /root/.obd/cluster/obcluster | running | +-----------+------------------------------+-----------------+ [root@f454e5952328 ~]# obd cluster display obcluster Get local repositories and plugins ok Open ssh connection ok Cluster status check ok Connect to observer ok Wait for observer init ok +---------------------------------------------+ | observer | +-----------+---------+------+-------+--------+ | ip | version | port | zone | status | +-----------+---------+------+-------+--------+ | 127.0.0.1 | 3.1.4 | 2881 | zone1 | active | +-----------+---------+------+-------+--------+

连接 OceanBase 数据库实例

​ oceanbase-ce 镜像安装了 OceanBase 数据库客户端 OBClient,并提供了默认连接脚本 ob-mysql

docker exec -it obstandalone ob-mysql sys # 使用 root 用户登录集群的 sys 租户
docker exec -it obstandalone ob-mysql root # 使用 root 用户登录集群的 test 租户
docker exec -it obstandalone ob-mysql test # 使用 test 用户登录集群的 test 租户
[root@rocky8 ~]# docker exec -it obstandalone ob-mysql sys login as root@sys Command is: obclient -h127.1 -uroot@sys -A -Doceanbase -P2881 Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3221495704 Server version: OceanBase_CE 4.2.2.0 (r100010012024022719-c984fe7cb7a4cef85a40323a0d073f0c9b7b8235) (Built Feb 27 2024 19:20:54) Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. obclient [oceanbase]>
  • 使用obclient连接数据库
docker exec -it obstandalone bash obclient -uroot@sys -h127.0.0.1 -P2881 -c -A Oceanbase

创建MySQL租户

  • 命令汇总

    --创建资源单元 S4C1G create resource unit S4C1G max_cpu=4,min_cpu=1,max_memory='1G',min_memory='1G',max_iops=1000,min_iops=1000,max_session_num=1000000,max_disk_size='10G'; --创建资源池 poo1 create resource pool poo1 unit='S4C1G' ,unit_num=1; --创建租户 mysqlTest create tenant mysqlTest resource_pool_list=('poo1'),primary_zone='RANDOM',charset='utf8' set ob_tcp_invited_nodes='%',ob_compatibility_mode='mysql';

    创建数据库

    --使用obclient 登录数据库
    obclient -uroot@mysqlTest -h127.0.0.1 -P2881
    --创建数据库、表
    create database testdb;
    use testdb;
    

    创建业务用户

    obclient [testdb]> create user user1@'%' identified by 'user1' ; Query OK, 0 rows affected (0.093 sec) obclient [testdb]> grant all privileges on *.* to user1@'%'; Query OK, 0 rows affected (0.067 sec)

    建业务表

    # 使用业务用户 user1 登录 mysqlTest 租户 通过直连方式 [root@f454e5952328 ~]# obclient -h127.0.0.1 -uuser1@mysqlTest -P2881 -puser1 -c -A testdb Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3221488182 Server version: 5.7.25 OceanBase 3.1.4 (r10000092022071511-b4bfa011ceaef428782dcb65ae89190c40b78c2f) (Built Jul 15 2022 11:45:14) Copyright (c) 2000, 2022, OceanBase and/or its affiliates. All rights reserved. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. obclient [testdb]> create table t1(id int) ; Query OK, 0 rows affected (0.047 sec) obclient [testdb]> insert into t1 values(1) ; Query OK, 1 row affected (0.008 sec) obclient [testdb]> select * from t1 ; +------+ | id | +------+ | 1 | +------+ 1 row in set (0.001 sec) obclient [testdb]>

    参考:通过 OBClient 连接 OceanBase 租户-OceanBase 数据库-OceanBase文档中心-分布式数据库使用文档

命令汇总

--查看租户与pool池 SELECT tenant_id,tenant_name,resource_pool_name FROM oceanbase.gv$unit; --查看zone,租户资源分配 select a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, cpu_assigned, (cpu_total-cpu_assigned) cpu_free, mem_total/1024/1024/1024 mem_total_gb, mem_assigned/1024/1024/1024 mem_assign_gb, (mem_total-mem_assigned)/1024/1024/1024 mem_free_gb from __all_virtual_server_stat a join __all_server b on (a.svr_ip=b.svr_ip and a.svr_port=b.svr_port) order by a.zone, a.svr_ip; select * from __all_unit_config; select tenant_id,tenant_name,max_cpu,min_cpu,max_memory/1024/1024/1024 from v$unit; select zone,cpu_total,cpu_assigned,mem_total/1024/1024/1024,mem_assigned/1024/1024/1024 from __all_virtual_server_stat; --立即删除租户 DROP TENANT test FORCE; --删除pool DROP RESOURCE POOL test_pool; --删除unit drop resource unit test_unit;

参考资料:docker 安装 https://docs.docker.com/engine/install/centos/#installation-methods

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论