练习目的
本次练习目的是通过 OceanBase Docker 容器,快速的体验 OceanBase 的 自动化部署过程,以及了解 OceanBase 集群安装成功后的目录特点和使用方法。
练习条件
- 有笔记本或服务器,内存至少12G 。
- 操作系统不限,能安装 Docker 环境即可。
练习内容
请记录并分享下列内容:
- (必选)下载Docker 镜像:https://hub.docker.com/repository/docker/obpilot/oceanbase-ce 。
- (必选)使用 OBD 命令完成后续的 OceanBase 集群部署。
- (必选)创建一个业务租户、一个业务数据库,以及一些表等。
参考资料
- 社区版官网-文档-学习中心-入门教程:实战教程第二章2.2:如何快速体验 OceanBase
- 社区版官网-博客-入门实战:实战教程第二章2.2:如何快速体验 OceanBase
- 社区版官网-问答:OceanBase CE 容器下载使用简介
- 教程视频:【2-2-OceanBase Docker 体验.mp4]
练习要求
请用文章记录实践练习的环境、过程和问题(可选)、总结等,图文并茂。如果企业内部有安全限制,可以对 IP 、 密码等打码或者修改。如果不允许截图,可以用文字适当补充说明。 分享的文章行文语句通顺,有条理,字数不少于 500 字。
OBCP考试券获取说明
OceanBase 入门到实战教程总共有 6 个练习,完成必选的 4 个练习,表示你掌握教程分享的学习技能,可以结业,并赠送全额 OBCP 考试券。本次练习为必选练习,请同学们积极参与哦~
以上是引用的信息,以下是正文信息
实践练习一(必选):OceanBase Docker 体验
下载Docker 镜像(必选)
环境信息:mac OS
下载docker
https://docs.docker.com/get-docker/
调整资源限制
docker 版本
docker version
➜ ~ docker version
Client:
Cloud integration: v1.0.22
Version: 20.10.12
API version: 1.41
Go version: go1.16.12
Git commit: e91ed57
Built: Mon Dec 13 11:46:56 2021
OS/Arch: darwin/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.12
API version: 1.41 (minimum version 1.12)
Go version: go1.16.12
Git commit: 459d0df
Built: Mon Dec 13 11:43:56 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.12
GitCommit: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
runc:
Version: 1.0.2
GitCommit: v1.0.2-0-g52b36a2
docker-init:
Version: 0.19.0
GitCommit: de40ad0
下载镜像
https://hub.docker.com/repository/docker/obpilot/oceanbase-ce
docker search oceanbase
docker pull obpilot/oceanbase-ce:latest
➜ ~ docker search oceanbase
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
oceanbase/oceanbase-xe OceanBase Database 2.2 Express Edition 3
oceanbase/obce-mini obce-mini is a mini standalone test image fo… 3
obpilot/oceanbase-ce 3 steps to run an OceanBase-CE docker in you… 2
oceanbase/oceanbase-ce OceanBase is open source now. This is the do… 2
zibuyu886/oceanbase-ce-cluster OceanBase ce cluster 1
oceanbase/obce-operator obce-operator 1
huweijie/oceanbase-ce-deploy 0
oceanbase/centos7 0
superbigfu/oceanbase 0
hongweiqin/anolisos-oceanbase A tentative deploy of oceanbase. 0
stutiredboy/centos_ob Build environment for OceanBase 3.1 CE. Crea… 0
➜
➜ ~ docker pull obpilot/oceanbase-ce:latest
latest: Pulling from obpilot/oceanbase-ce
7a0437f04f83: Pull complete
615dc48ac9f1: Pull complete
b10c1cdae3af: Pull complete
4f4fb700ef54: Pull complete
c0f6c94a6a6a: Pull complete
792630f35e24: Pull complete
Digest: sha256:7ac28415cf27ba19cb47acb67a55ebf9848ad73a63d80b7e2e85d653233dbaeb
Status: Downloaded newer image for obpilot/oceanbase-ce:latest
docker.io/obpilot/oceanbase-ce:latest
启动 OceanBase Docker 容器
➜ ~ docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 19.3.0-ee fac37207128d 18 hours ago 6.54GB
obpilot/oceanbase-ce latest 943379e0b05b 2 months ago 2.25GB
oceanbase/obce-mini latest 1a5ca6d233a7 5 months ago 690MB
➜ ~ docker run -itd -m 10G -p 2881:2881 -p 2883:2883 --name liupsobca -h liupsobce -d -e OB_HOME_PATH="/root/obce/" -e OB_TENANT_NAME="liupsobca" -e OB_CLUSTER_NAME="obcacluster" obpilot/oceanbase-ce:latest
fe695d42f63c48ec5cda4814b5fe7eb1da67fa584db588b0203863707d199472
➜ ~
➜ ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fe695d42f63c obpilot/oceanbase-ce:latest "/bin/bash" 25 seconds ago Up 23 seconds 0.0.0.0:2881->2881/tcp, 0.0.0.0:2883->2883/tcp liupsobca
➜ ~
登录 oceanbase docker 容器
[admin@liupsobce ~]$ hostname
liupsobce
[admin@liupsobce ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
admin 1 0.0 0.0 12160 3240 pts/0 Ss+ 00:35 0:00 /bin/bash
admin 24 0.2 0.0 12160 3432 pts/1 Ss 00:40 0:00 bash
admin 48 0.0 0.0 44636 3448 pts/1 R+ 00:40 0:00 ps aux
查看相关进程,ob 相关进程没有启动。
查看集群信息,其状态为 deployed。
[admin@liupsobce ~]$ obd cluster list
+------------------------------------------------------------+
| Cluster List |
+--------+---------------------------------+-----------------+
| Name | Configuration Path | Status (Cached) |
+--------+---------------------------------+-----------------+
| obdemo | /home/admin/.obd/cluster/obdemo | deployed |
+--------+---------------------------------+-----------------+
手动启动集群
[admin@liupsobce ~]$ obd cluster start obdemo
Get local repositories and plugins ok
Open ssh connection ok
Cluster param config check ok
Check before start observer ok
Check before start obproxy ok
Start observer ok
observer program health check ok
Connect to observer ok
Initialize cluster
Cluster bootstrap ok
Wait for observer init ok
+---------------------------------------------+
| observer |
+-----------+---------+------+-------+--------+
| ip | version | port | zone | status |
+-----------+---------+------+-------+--------+
| 127.0.0.1 | 3.1.1 | 2881 | zone1 | active |
+-----------+---------+------+-------+--------+
Start obproxy ok
obproxy program health check ok
Connect to obproxy ok
Initialize cluster
+---------------------------------------------+
| obproxy |
+-----------+------+-----------------+--------+
| ip | port | prometheus_port | status |
+-----------+------+-----------------+--------+
| 127.0.0.1 | 2883 | 2884 | active |
+-----------+------+-----------------+--------+
obdemo running
[admin@liupsobce ~]$
查看进程,发现多了 observer 和 obproxy
[admin@liupsobce ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
admin 1 0.0 0.0 12160 3240 pts/0 Ss+ 00:35 0:00 /bin/bash
admin 24 0.0 0.0 12160 3432 pts/1 Ss 00:40 0:00 bash
admin 99 106 52.4 9081772 5352576 ? Ssl 00:42 2:04 /home/admin/oceanbase-ce/bin/observer -r 127.0.0.1:2882:2881 -o __min_full_resource_pool_memory=268435456,memory_limit=8G,system_memory=4G,
admin 685 2.0 1.1 536996 117280 ? Ssl 00:42 0:01 /home/admin/obproxy/bin/obproxy -o enable_strict_kernel_release=False,enable_cluster_checkout=False,automatic_match_work_thread=False,work_
admin 735 0.0 0.0 11896 2924 pts/1 S 00:42 0:00 bash /home/admin/obproxy/obproxyd.sh /home/admin/obproxy 127.0.0.1 2883 daemon
admin 912 0.0 0.0 23028 1412 pts/1 S 00:44 0:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
admin 913 0.0 0.0 44636 3428 pts/1 R+ 00:44 0:00 ps aux
[admin@liupsobce ~]$
通过上面发现一个问题,就是 docker run 的时候自定义的 -e OB_TENANT_NAME=”liupsobca” -e OB_CLUSTER_NAME=”obcacluster” ,发现跟官方的镜像还是有一点点区别的,不支持自定义集群名字等信息。
查看环境变量信息如下:
[admin@liupsobce ~]$ env
OB_CLUSTER_NAME=obcacluster
LANG=en_US.UTF-8
HOSTNAME=liupsobce
OB_TENANT_NAME=liupsobca
which_declare=declare -f
PWD=/home/admin
HOME=/home/admin
OB_HOME_PATH=/root/obce/
TERM=xterm
SHLVL=1
PATH=/home/admin/.local/bin:/home/admin/bin:/u01/obclient/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LESSOPEN=||/usr/bin/lesspipe.sh %s
BASH_FUNC_which%%=() { ( alias;
eval ${which_declare} ) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot "$@"
}
_=/usr/bin/env
[admin@liupsobce ~]$
[admin@liupsobce ~]$ cat /etc/yum.repos.d/OceanBase.repo
# OceanBase.repo
[oceanbase.community.stable]
name=OceanBase-community-stable-el$releasever
baseurl=http://mirrors.aliyun.com/oceanbase/community/stable/el/$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/oceanbase/RPM-GPG-KEY-OceanBase
[oceanbase.development-kit]
name=OceanBase-development-kit-el$releasever
baseurl=http://mirrors.aliyun.com/oceanbase/development-kit/el/$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/oceanbase/RPM-GPG-KEY-OceanBase
[admin@liupsobce ~]$ ps -ef|grep observer
admin 99 1 84 00:42 ? 00:11:37 /home/admin/oceanbase-ce/bin/observer -r 127.0.0.1:2882:2881 -o __min_full_resource_pool_memory=268435456,memory_limit=8G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,major_freeze_duty_time=Disable,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_size=5G,enable_syslog_wf=False,enable_syslog_recycle=True,max_syslog_file_count=4,root_password=rootPWD123 -z zone1 -p 2881 -P 2882 -n obce-single -c 1 -d /home/admin/oceanbase-ce/store -i lo -l ERROR
admin 2351 24 0 00:55 pts/1 00:00:00 grep --color=auto observer
[admin@liupsobce ~]$ ps -ef |grep obproxy
admin 685 1 1 00:42 ? 00:00:14 /home/admin/obproxy/bin/obproxy -o enable_strict_kernel_release=False,enable_cluster_checkout=False,automatic_match_work_thread=False,work_thread_num=12,xflush_log_level=ERROR,monitor_log_level=ERROR,syslog_level=ERROR,log_dir_size_threshold=1G,enable_compression_protocol=False --listen_port 2883 --prometheus_listen_port 2884 --rs_list 127.0.0.1:2881 --cluster_name obce-single
admin 735 1 0 00:42 pts/1 00:00:00 bash /home/admin/obproxy/obproxyd.sh /home/admin/obproxy 127.0.0.1 2883 daemon
admin 2363 24 0 00:55 pts/1 00:00:00 grep --color=auto obproxy
[admin@liupsobce ~]$
查看yum源和相关进程信息如上。
[admin@liupsobce ~]$ obd cluster edit-config obdemo
oceanbase-ce-3.1.1 already installed.
obproxy-3.2.0 already installed.
Search param plugin and load ok
Parameter check ok
Deploy "obdemo" config unchange
[admin@liupsobce ~]$
obpilot 镜像的相关用户信息如下:
admin 用户的密码是 : adminPWD123 . 您可以使用 sudo yum 安装软件包。
使用 OBD 命令完成后续的 OceanBase 集群部署(必选)
登录OceanBase
通过 obproxy 登录
使用obproxy端口 用户@实例(租户)#集群
obclient -h 127.1 -uroot@sys#obce-single -P2883 -prootPWD123 -c -A oceanbase
[admin@liupsobce ~]$ obclient -h 127.1 -uroot@sys#obce-single -P2883 -prootPWD123 -c -A oceanbase
Welcome to the OceanBase. Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 5.6.25 OceanBase 3.1.1 (r4-8c615943cbd25a6f7b8bdfd8677a13a21709a05e) (Built Oct 21 2021 10:52:05)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [oceanbase]>
通过 observer直连
无需指定集群,使用observer端口
obclient -h 127.1 -uroot@sys -P2881 -prootPWD123 -c -A oceanbase
[admin@liupsobce ~]$ obclient -h 127.1 -uroot@sys -P2881 -prootPWD123 -c -A oceanbase
Welcome to the OceanBase. Commands end with ; or \g.
Your MySQL connection id is 3221488991
Server version: 5.7.25 OceanBase 3.1.1 (r4-8c615943cbd25a6f7b8bdfd8677a13a21709a05e) (Built Oct 21 2021 10:52:05)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [oceanbase]>
查看集群状态
select
tenant_id,
tenant_name,
primary_zone
from __all_tenant;
MySQL [oceanbase]> select
-> tenant_id,
-> tenant_name,
-> primary_zone
-> from __all_tenant;
+-----------+-------------+--------------+
| tenant_id | tenant_name | primary_zone |
+-----------+-------------+--------------+
| 1 | sys | zone1 |
+-----------+-------------+--------------+
1 row in set (0.011 sec)
MySQL [oceanbase]>
MySQL [oceanbase]> show databases;
+--------------------+
| Database |
+--------------------+
| oceanbase |
| information_schema |
| mysql |
| SYS |
| LBACSYS |
| ORAAUDITOR |
| test |
+--------------------+
7 rows in set (0.047 sec)
MySQL [oceanbase]>
MySQL [oceanbase]> show processlist;
+------+--------+------+-----------------+-----------+-------------+-------------------+-------------------+------+------+
| Id | Tenant | User | Host | db | trans_count | svr_session_count | state | tid | pid |
+------+--------+------+-----------------+-----------+-------------+-------------------+-------------------+------+------+
| 28 | sys | root | 127.0.0.1:52824 | oceanbase | 0 | 1 | MCS_ACTIVE_READER | 685 | 685 |
+------+--------+------+-----------------+-----------+-------------+-------------------+-------------------+------+------+
1 row in set (0.017 sec)
MySQL [oceanbase]>
查看集群资源信息
select
a.zone,
concat(a.svr_ip,':',a.svr_port) observer,
cpu_total,
cpu_assigned,
(cpu_total-cpu_assigned) cpu_free,
round(mem_total/1024/1024/1024) mem_total_gb,
round(mem_assigned/1024/1024/1024) mem_assign_gb,
round((mem_total-mem_assigned)/1024/1024/1024) mem_free_gb,
round(a.disk_total/1024/1024/1024) disk_total_gb,
usec_to_time(b.last_offline_time) last_offline_time,
usec_to_time(b.start_service_time) start_service_time,
b.status,
usec_to_time(b.stop_time) stop_time,
b.build_version
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
\G
MySQL [oceanbase]> select
-> a.zone,
-> concat(a.svr_ip,':',a.svr_port) observer,
-> cpu_total,
-> cpu_assigned,
-> (cpu_total-cpu_assigned) cpu_free,
-> round(mem_total/1024/1024/1024) mem_total_gb,
-> round(mem_assigned/1024/1024/1024) mem_assign_gb,
-> round((mem_total-mem_assigned)/1024/1024/1024) mem_free_gb,
-> round(a.disk_total/1024/1024/1024) disk_total_gb,
-> usec_to_time(b.last_offline_time) last_offline_time,
-> usec_to_time(b.start_service_time) start_service_time,
-> b.status,
-> usec_to_time(b.stop_time) stop_time,
-> b.build_version
-> 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
-> \G
*************************** 1. row ***************************
zone: zone1
observer: 127.0.0.1:2882
cpu_total: 14
cpu_assigned: 2.5
cpu_free: 11.5
mem_total_gb: 4
mem_assign_gb: 1
mem_free_gb: 3
disk_total_gb: 5
last_offline_time: 1970-01-01 08:00:00.000000
start_service_time: 2022-02-06 08:42:34.349651
status: active
stop_time: 1970-01-01 08:00:00.000000
build_version: 3.1.1_4-8c615943cbd25a6f7b8bdfd8677a13a21709a05e(Oct 21 2021 10:52:05)
1 row in set (0.021 sec)
MySQL [oceanbase]>
select
t1.name resource_pool_name,
t2.`name` unit_config_name,
t2.max_cpu,
t2.min_cpu,
round(t2.max_memory/1024/1024/1024) max_mem_gb,
round(t2.min_memory/1024/1024/1024) min_mem_gb,
t2.max_memory max_memory_byte,
t2.min_memory min_memory_byte,
round(t2.max_disk_size/1024/1024/1024) max_disk_size,
t2.max_session_num,
t3.unit_id,
t3.zone,
concat(t3.svr_ip,':',t3.`svr_port`) observer,
t4.tenant_id,
t4.tenant_name
from __all_resource_pool t1
join __all_unit_config t2 on (t1.unit_config_id=t2.unit_config_id)
join __all_unit t3 on (t1.`resource_pool_id` = t3.`resource_pool_id`)
left join __all_tenant t4 on (t1.tenant_id=t4.tenant_id)
order by t1.`resource_pool_id`, t2.`unit_config_id`, t3.unit_id
\G
MySQL [oceanbase]> select
-> t1.name resource_pool_name,
-> t2.`name` unit_config_name,
-> t2.max_cpu,
-> t2.min_cpu,
-> round(t2.max_memory/1024/1024/1024) max_mem_gb,
-> round(t2.min_memory/1024/1024/1024) min_mem_gb,
-> t2.max_memory max_memory_byte,
-> t2.min_memory min_memory_byte,
-> round(t2.max_disk_size/1024/1024/1024) max_disk_size,
-> t2.max_session_num,
-> t3.unit_id,
-> t3.zone,
-> concat(t3.svr_ip,':',t3.`svr_port`) observer,
-> t4.tenant_id,
-> t4.tenant_name
-> from __all_resource_pool t1
-> join __all_unit_config t2 on (t1.unit_config_id=t2.unit_config_id)
-> join __all_unit t3 on (t1.`resource_pool_id` = t3.`resource_pool_id`)
-> left join __all_tenant t4 on (t1.tenant_id=t4.tenant_id)
-> order by t1.`resource_pool_id`, t2.`unit_config_id`, t3.unit_id
-> \G
*************************** 1. row ***************************
resource_pool_name: sys_pool
unit_config_name: sys_unit_config
max_cpu: 5
min_cpu: 2.5
max_mem_gb: 1
min_mem_gb: 1
max_memory_byte: 1288490188
min_memory_byte: 1073741824
max_disk_size: 5
max_session_num: 9223372036854775807
unit_id: 1
zone: zone1
observer: 127.0.0.1:2882
tenant_id: 1
tenant_name: sys
1 row in set (0.206 sec)
MySQL [oceanbase]>
创建一个业务租户、一个业务数据库,以及一些表等(必选)
定义资源规格、资源池、实例(租户)
--定义资源规格
CREATE resource unit my_unit_config
max_cpu=4, min_cpu=4,
max_memory='2G', min_memory='2G',
max_iops=10000, min_iops=10000,
max_session_num=1000000,
max_disk_size='1024G'
;
--定义资源池
CREATE resource pool my_pool
unit='my_unit_config',
unit_num=1
;
--定义实例
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'
;
--查看实例状态
select * from __all_tenant;
创建 unit、pool
MySQL [test]> CREATE resource unit app_unit_config
-> max_cpu=4, min_cpu=4,
-> max_memory='2G', min_memory='2G',
-> max_iops=10000, min_iops=10000,
-> max_session_num=1000000,
-> max_disk_size='1024G'
-> ;
Query OK, 0 rows affected (0.125 sec)
MySQL [test]> CREATE resource pool app_pool
-> unit='app_unit_config',
-> unit_num=1
-> ;
ERROR 4624 (HY000): machine resource 'zone1' is not enough to hold a new unit
MySQL [test]>
在创建的时候提示 ERROR 4624 (HY000): machine resource ‘zone1’ is not enough to hold a new unit
经过查询应该是剩余资源不足:
查看剩余资源的 SQL:
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
;
MySQL [oceanbase]> 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
-> ;
+-------+----------------+-----------+--------------+----------+----------------+----------------+----------------+
| zone | observer | cpu_total | cpu_assigned | cpu_free | mem_total_gb | mem_assign_gb | mem_free_gb |
+-------+----------------+-----------+--------------+----------+----------------+----------------+----------------+
| zone1 | 127.0.0.1:2882 | 14 | 9 | 5 | 4.000000000000 | 3.199999999255 | 0.800000000744 |
+-------+----------------+-----------+--------------+----------+----------------+----------------+----------------+
1 row in set (0.009 sec)
内存剩余0.8G
.
删除重建:
MySQL [oceanbase]> drop resource unit app_unit_config ;
Query OK, 0 rows affected (0.034 sec)
MySQL [oceanbase]> CREATE resource unit app_unit_config
-> max_cpu=1, min_cpu=1,
-> max_memory='1G', min_memory='200M',
-> max_iops=10000, min_iops=10000,
-> max_session_num=1000000,
-> max_disk_size='1024G'
-> ;
ERROR 4659 (HY000): invalid resource unit, min_memory's min value is 268435456
MySQL [oceanbase]>
创建个200m内存的,提示 min_memory’s min value is 268435456 嘎。
重新创建 500m的,创建成功。
MySQL [oceanbase]> CREATE resource unit app_unit_config
-> max_cpu=1, min_cpu=1,
-> max_memory='1G', min_memory='500M',
-> max_iops=10000, min_iops=10000,
-> max_session_num=1000000,
-> max_disk_size='1024G'
-> ;
Query OK, 0 rows affected (0.058 sec)
MySQL [oceanbase]>
-> CREATE resource pool app_pool
-> unit='app_unit_config',
-> unit_num=1
-> ;
ERROR 4624 (HY000): machine resource 'zone1' is not enough to hold a new unit
但是创建 pool 的时候仍然提示无法创建成功,删除之后重新创建 max_memory='600m',完成。
MySQL [oceanbase]>
MySQL [oceanbase]> drop resource unit app_unit_config ;
Query OK, 0 rows affected (0.022 sec)
MySQL [oceanbase]>
MySQL [oceanbase]>
MySQL [oceanbase]> CREATE resource unit app_unit_config
-> max_cpu=1, min_cpu=1,
-> max_memory='600m', min_memory='500M',
-> max_iops=10000, min_iops=10000,
-> max_session_num=1000000,
-> max_disk_size='1024G'
-> ;
Query OK, 0 rows affected (0.031 sec)
MySQL [oceanbase]> CREATE resource pool app_pool
-> unit='app_unit_config',
-> unit_num=1
-> ;
Query OK, 0 rows affected (0.265 sec)
MySQL [oceanbase]>
其实不需要drop然后新建,可以通过 alter 命令进行修改也是可以的
alter resource unit app_unit_config min_cpu=1,max_memory='600m';
MySQL [oceanbase]> alter resource unit app_unit_config min_cpu=1,max_memory='600m';
Query OK, 0 rows affected (0.034 sec)
创建业务租户
CREATE tenant appmysql
resource_pool_list=('app_pool'),
primary_zone='RANDOM',
comment 'mysql tenant/instance',
charset='utf8'
set ob_tcp_invited_nodes='%',
ob_compatibility_mode='mysql'
;
查看实例状态
MySQL [oceanbase]> select * from __all_tenant\G
*************************** 1. row ***************************
gmt_create: 2022-02-06 08:42:32.027147
gmt_modified: 2022-02-06 08:42:32.027147
tenant_id: 1
tenant_name: sys
replica_num: -1
zone_list: zone1
primary_zone: zone1
locked: 0
collation_type: 0
info: system tenant
read_only: 0
rewrite_merge_version: 0
locality: FULL{1}@zone1
logonly_replica_num: 0
previous_locality:
storage_format_version: 0
storage_format_work_version: 0
default_tablegroup_id: -1
compatibility_mode: 0
drop_tenant_time: -1
status: TENANT_STATUS_NORMAL
in_recyclebin: 0
*************************** 2. row ***************************
gmt_create: 2022-02-06 12:08:51.522257
gmt_modified: 2022-02-06 12:08:51.522257
tenant_id: 1001
tenant_name: obmysql
replica_num: -1
zone_list: zone1
primary_zone: RANDOM
locked: 0
collation_type: 0
info: mysql tenant/instance
read_only: 0
rewrite_merge_version: 0
locality: FULL{1}@zone1
logonly_replica_num: 0
previous_locality:
storage_format_version: 0
storage_format_work_version: 0
default_tablegroup_id: -1
compatibility_mode: 0
drop_tenant_time: -1
status: TENANT_STATUS_NORMAL
in_recyclebin: 0
*************************** 3. row ***************************
gmt_create: 2022-02-06 12:31:28.386779
gmt_modified: 2022-02-06 12:31:28.386779
tenant_id: 1002
tenant_name: appmysql
replica_num: -1
zone_list: zone1
primary_zone: RANDOM
locked: 0
collation_type: 0
info: mysql tenant/instance
read_only: 0
rewrite_merge_version: 0
locality: FULL{1}@zone1
logonly_replica_num: 0
previous_locality:
storage_format_version: 0
storage_format_work_version: 0
default_tablegroup_id: -1
compatibility_mode: 0
drop_tenant_time: -1
status: TENANT_STATUS_NORMAL
in_recyclebin: 0
3 rows in set (0.004 sec)
登录业务租户
obclient -h 127.1 -uroot@appmysql#obce-single -P2883 -c -A
修改密码
MySQL [(none)]> alter user root identified by "liups.com";
Query OK, 0 rows affected (0.173 sec)
创建业务数据库
MySQL [(none)]> show processlist;
+------+----------+------+-----------------+------+-------------+-------------------+-------------------+------+------+
| Id | Tenant | User | Host | db | trans_count | svr_session_count | state | tid | pid |
+------+----------+------+-----------------+------+-------------+-------------------+-------------------+------+------+
| 158 | appmysql | root | 127.0.0.1:53268 | NULL | 0 | 1 | MCS_ACTIVE_READER | 685 | 685 |
+------+----------+------+-----------------+------+-------------+-------------------+-------------------+------+------+
1 row in set (0.007 sec)
MySQL [(none)]> create database appdb;
Query OK, 1 row affected (0.194 sec)
MySQL [(none)]> use appdb
Database changed
创建一些表信息
MySQL [appdb]> create table t as select * from mysql.user;
Query OK, 2 rows affected (2.988 sec)
MySQL [appdb]> create table t2 as select * from mysql.db
-> ;
Query OK, 6 rows affected (1.865 sec)
MySQL [appdb]> select * from t2;
+------+--------------------+------+-------------+-------------+-------------+-------------+-------------+-----------+------------+----------------+------------+------------+-----------------------+------------------+------------------+----------------+---------------------+--------------------+--------------+------------+--------------+
| host | db | user | select_priv | insert_priv | update_priv | delete_priv | create_priv | drop_priv | grant_priv | reference_priv | index_priv | alter_priv | create_tmp_table_priv | lock_tables_priv | create_view_priv | show_view_priv | create_routine_priv | alter_routine_priv | execute_priv | event_priv | trigger_priv |
+------+--------------------+------+-------------+-------------+-------------+-------------+-------------+-----------+------------+----------------+------------+------------+-----------------------+------------------+------------------+----------------+---------------------+--------------------+--------------+------------+--------------+
| % | mysql | root | Y | Y | Y | Y | Y | Y | N | N | Y | Y | N | N | Y | Y | N | N | N | N | N |
| % | oceanbase | root | Y | Y | Y | Y | Y | Y | N | N | Y | Y | N | N | Y | Y | N | N | N | N | N |
| % | test | root | Y | Y | Y | Y | Y | Y | N | N | Y | Y | N | N | Y | Y | N | N | N | N | N |
| % | information_schema | root | Y | Y | Y | Y | Y | Y | N | N | Y | Y | N | N | Y | Y | N | N | N | N | N |
| % | __public | root | Y | Y | Y | Y | Y | Y | N | N | Y | Y | N | N | Y | Y | N | N | N | N | N |
| % | __recyclebin | root | Y | Y | Y | Y | Y | Y | N | N | Y | Y | N | N | Y | Y | N | N | N | N | N |
+------+--------------------+------+-------------+-------------+-------------+-------------+-------------+-----------+------------+----------------+------------+------------+-----------------------+------------------+------------------+----------------+---------------------+--------------------+--------------+------------+--------------+
6 rows in set (0.026 sec)
MySQL [appdb]>
个人总结/体会
通过docker体验 OceanBase 非常简单方便,本次体验使用的是 obpilot/oceanbase-ce 镜像,跟官方镜像有不少的区别,官方没有 proxy,支持自定义集群名字等,obpilot/oceanbase-ce 比官方复杂,多了proxy的程序,但是不支持自定义集群/租户名称,有一点比较疑惑的就是 obd 的 cluster name 竟然可以跟 连接串的集群名字不相同。
再就是有个需要注意的是:在创建 resource pool 的时候如果可用资源不足,可能出现无法创建成功的情况。在创建之前可用查询下剩余资源。