作者简介:胡晶玉,数据库工程师。
前言
这次体验最大的难点是在笔记本上运行docker。由于对docker不大熟悉,查阅了大量的资料。Observer启动由于内存不足而报错,在这个问题上卡了很长时间,幸运的是最后终于解决了,我把整个排除故障的过程写了下来,供大家参考。启动后的操作就非常简单了,网上资料也很多,就没有写太多。
硬件环境
笔记本(8C16G),Windows 11。
练习过程
1.安装docker desktop
从下面的链接进入下载界面,选择对应的版本。
https://docs.docker.com/get-docker/
下载完成后直接安装即可。
在最后会出现下面的提示,说明还需要安装Linux Kernel。
我有个习惯,喜欢使用最新版本的软件,在安装完成后,按照如下设置,把windows的开发者选项打开,以及windows更新的高级选项中,打开接收其它Microsoft产品的更新。
Powershell中运行wsl –update,即可完成更新。
打开windows 应用商店,输入wsl2搜索,选择Ubuntu 进行安装。
安装完成后,启动docker desktop。
2.下载docker ob
Pull & run
docker pull obpilot/oceanbase-ce:latest
docker run -itd -m 10G -p 2881:2881 -p 2883:2883 --name oceanbase-ce obpilot/oceanbase-ce:latest
3.log in and start oceanbase-ce
docker exec -it oceanbase-ce bash $obd cluster list $obd cluster start obdemo The password of admin is : adminPWD123 . You can install rpms by command sudo yum -y install xxxx .
这里提示内存不足,直觉就是去改配置文件,减少内存需求。使用obd cluster edit-config obdemo,进行修改,memory_limit 8G 4G ;修改是成功的。但是启动仍然报错。而且报错信息
这个错误信息借用网友的一个图(我忘记截图了)。查看observer.log,只是说配置参数不对,但是并没有说具体的错误信息。然后我重新编辑参数文件,将syslog_level改成trace.
再次重启后,查看observer.log,看到如下信息:
Invalid config, value out of range(name="memory_limit", value="4G", ret=-4147)
这个信息就比较明确了,memory_limit这个参数是不能改小的。从ob社区找到一段话“大概率是你机器的硬件资源不够, ob 启动至少得2核8g, 8g 是完全给ob 使用的, 操作系统至少得有10g的资源”,看来改参数的办法是行不通的。
看来想解决问题就要从资源入手。作业上说有12G内存的机器就可以完成实验,我的电脑有16G,理论上内存是够用的,为啥空闲内存只有6G呢。
这时我看我的机器可用内存一直有8G的空闲。分析原因应该是docker desktop没有充分利用机器的内存。继续查资料,终于找到了解决方案,就是对wal进行配置,让它获得更多的资源。
Win+R 然后输入 %UserProfile% 进入用户文件夹
然后编辑 .wslconfig 输入以下内容:
重启docker desktop。
修改docker启动命令:
docker run -itd -m 12G -p 2881:2881 -p 2883:2883 --name oceanbase-ce obpilot/oceanbase-ce:latest docker exec -it oceanbase-ce bash
查看内存,终于有了10G的空闲内存。
obd cluster start obdemo
启动成功。
4.创建租户等操作
连接默认租户:
obclient -h 127.0.0.1 -uroot@sys -prootPWD123 -P2881
创建资源规格:
create resource unit S1C1G max_cpu=1,min_cpu=1,max_memory='1G',min_memory='1G',max_iops=1000,min_iops=1000,max_session_num=100000,max_disk_size='10G';
创建资源池:
create resource pool min_pool unit='S1C1G',unit_num=1;
创建mysql租户:
create tenant t_mysql resource_pool_list=('min_pool'),primary_zone='RANDOM',charset='utf8' set ob_compatibility_mode='mysql';
连接mysql租户:
obclient -h 127.0.0.1 -P 2881 -uroot@t_mysql
创建数据库,表,插入数据。
终于大功告成了。
总结
成功的经验都是一样的,不多说了。总结一下遇到的问题及解决方案。
- 笔记本至少有10G的内存给docker desktop使用。
- Oceanbase最少需要10G内存,memory_limit是不能修改成低于8G的。
- Docker desktop使用的内存可以通过编辑c:\users\user\.wslconfig进行显示的指定,否则默认它只使用一半的内存。
- 可以通过修改syslog_level来看到更详细的出错信息。
结束语
OceanBase社区版入门到实战教程直播正在进行中~
快和小伙伴一起进群交流学习吧~
加入直播群方式一:
钉钉群号3255 4020
加入直播群方式二:
扫码下方二维码加入