oceanbase 社区练习一 之 docker安装体验
1. 配置环境
官方建议的宿主机的可用资源满足下面要求:
1.逻辑 CPU 不少于4个
2.可用内存不少于 10G,并且 docker 容器内存限制不少于10G
3.空间不少于10G
本人虚拟机配置如下:
2. 安装docker
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker
service docker start #启动docker
3.安装、启动oceanbase镜像
1.创建admin普通用户
useradd admin
passwd admin
groupadd docker
gpasswd -a admin docker #admin加入到docker组
newgrp docker #更新用户组
su - admin
docker ps #测试docker命令是否可以(不可以的话,重新切换下用户,或者重启下操作系统)
[admin@te ~]$ docker ps ##出现如下提示则可正常使用
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
注:上述添加用户组的操作,是为了让admin用户可以正常使用docker 拉取镜像,否则会有如下权限提示
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/containers/json: dial unix /var/run/docker.sock: connect: permission denied
2.拉取镜像
[admin@te~] docker pull obpilot/oceanbase-ce:latest
参考官方地址:ttps://ask.oceanbase.com/t/topic/508
[admin@te~] docker images #查看镜像,确认存在
3.启动oceanbase镜像
[admin@te~]docker run -itd -m 10G --name oceanbase-ce obpilot/oceanbase-ce:latest
[admin@te ~]$ docker container ls #检查运行状态
4.启动oceanbase数据库
1.进入容器内部
[admin@te ~]$ docker exec -it oceanbase-ce bash
[admin@e935701ca3cc ~]$ ##成功登录进来了#容器里的admin用户密码是adminPWD123
2.查看oceanbase状态
[admin@e935701ca3cc ~]$ obd cluster list
3.启动oceanbase
[admin@e935701ca3cc ~]$ obd cluster start obdemo
#哦吼,observer和obproxy都起来了,成功启动!
4.看下启动前后的内存和存储占用情况
存储:
[root@te ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 57G 29G 29G 51% //dev/mapper/rhel-root 57G 39G 19G 68% /
内存:
[root@te ~]# free -h
total used free shared buff/cache availableMem: 9.6G 175M 9.2G 11M 209M 9.2G
Mem: 9.6G 2.7G 5.6G 11M 1.3G 6.5G
结果:存储占用了10G,内存占用了不到3G
5.创建相关对象
1.登录数据库,检查版本
[admin@e935701ca3cc ~]$ obclient -h127.0.0.1 -P2881 -uroot -prootPWD123 -Doceanbase -A -c
注:登录后显示的版本是4.0,通过select version()检查也是4.0,后续创建租户相关(尤其是资源单元),创建语法中的部分属性相对视频课程/实验课件有出入(这些都是3.X的语法,且obcp的考试也是3.x)4.0版本语法改进了,如果提示语法不对,请去官方搜索指定的语法格式再进行尝试
2.创建租户
上述连接给的建议配置如下:
alter resource unit sys_unit_config min_cpu=5;
CREATE resource unit S4C1G max_cpu=4, min_cpu=4, max_memory='1G', min_memory='1G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size='1024G';
CREATE resource pool my_pool unit = 'S4C1G', 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'; exit;
1.设置参数
alter resource unit sys_unit_config min_cpu=5;
ERROR 1210 (HY000): Incorrect arguments to MIN_CPU, MIN_CPU is greater than MAX_CPU
obclient [oceanbase]> select * from __all_unit_config;
+-------------------------------+-------------------------------+----------------+-----------------+-----------+---------+----------------+--------------- +------------+----------+-------------+
| gmt_create | gmt_modified | unit_config_id | name | max_cpu | min_cpu | memory_size | log_disk_size | max_iops | min_iops | iops_weight |
+-------------------------------+-------------------------------+----------------+-----------------+-----------+---------+----------------+----------------+------------+----------+-------------+
| 2023-08-31 11:40:19.322622 | 2023-08-31 11:40:19.322622| 1 | sys_unit_config | 1 | 1 | 2147483648 | 2147483648 | 10000 | 10000 | 1 |
+-------------------------------+-------------------------------+----------------+-----------------+-----------+---------+----------------+----------------+------------+-----------+-------------+# 检查sys的配置,此时最大最小都是1,于是都改成4
2.创建资源单元
obclient [oceanbase]>CREATE resource unit S4C1G max_cpu=4, min_cpu=4, max_memory='1G', min_memory='1G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size='1024G';
#注:因为4.0语法变更,故调整到如下语句
obclient [oceanbase]> CREATE resource unit S4C1G max_cpu=4, min_cpu=4, memory_size='1G', max_iops=1024, min_iops=1024, log_disk_size='10G';
变更项如下:
1>max_memory/min_memory 变更为 memory_size
2>max_session_num参数取消了
3>max_disk_size参数取消了
4>新增log_disk_size参数
5>max_iops和min_iops的值最小是1024
obclient [oceanbase]> select * from __all_unit_config; #检查资源单元配置,确认已创建
3.创建资源池
obclient [oceanbase]> CREATE resource pool my_pool unit = 'S4C1G', unit_num = 1;
#ERROR 1235 报错了又,接着查吧obclient [oceanbase]> SELECT * FROM oceanbase.__all_virtual_sys_parameter_stat where name like '__min_full_resource_pool_memory';
#memory_size配置的小了,删除重新创建;
obclient [oceanbase]> DROP resource unit S4C1G ;
obclient [oceanbase]> CREATE resource unit S4C1G max_cpu=4, min_cpu=4, memory_size='2G', max_iops=1024, min_iops=1024, log_disk_size='10G';
obclient [oceanbase]> CREATE resource pool my_pool unit = 'S4C1G', unit_num = 1;
#ERROR 4733,又报错,看样子是磁盘空间的问题,给log_disk_size暂时调小一些,根据报错提示的视图查了查,咱也设置成2G先
obclient [oceanbase]> DROP resource unit S4C1G ;
obclient [oceanbase]> CREATE resource unit S4C1G max_cpu=4, min_cpu=4, memory_size='2G', max_iops=1024, min_iops=1024, log_disk_size='2G';
obclient [oceanbase]> CREATE resource pool my_pool unit = 'S4C1G', unit_num = 1; #创建成功了
4.创建租户obmysql
obclient [oceanbase]>
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;
##这一步时间有点长,耐心等待下,15S多,创建完成了。
检查一下,的确创建成功了
5.登录租户obmysql
[admin@e935701ca3cc ~]$ obclient -h127.0.0.1 -P2881 -uroot@obmysql -p -Doceanbase -A -c
#注意,新建的租户是相当于一个新的实例,是没有密码的,不要用旧的密码去登录,直接回车即可,不然会报错哈
3.创建数据库
obclient [oceanbase]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysq l |
| oceanbase |
| test |
+--------------------+
4 rows in set (0.012 sec)
obclient [oceanbase]> create database my_ob;
Query OK, 1 row affected (0.042 sec)
obclient [oceanbase]> show create database my_ob;
+----------+-------------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------------+
| my_ob | CREATE DATABASE `my_ob` DEFAULT CHARACTER SET = utf8mb4 REPLICA_NUM = 1 |
+----------+-------------------------------------------------------------------------+
1 row in set (0.004 sec)
4.创建数据库表
obclient [my_ob]> use my_ob;obclient [my_ob]> create table test(id int primary key ,name varchar(32) );
obclient [my_ob]> insert into test values(1,'张三'),(2,'李四 ');
obclient [my_ob]> select * from test;
+----+--------+
| id | name |
+----+--------+
| 1 | 张三 |
| 2 | 李四 |
+----+--------+
ok,一切正常。
docker安装体验完成,总共遇到了3个报错,新手上路百度为主!考试的话是基于3.x的,问了下官方的小助手,说是今年会出4.X,最近想考的还是先拿着3.X的版本练手吧