实践练习一:OceanBase Docker 体验
实验环境说明
操作系统
Virtualbox 虚拟机 CentOS Linux release 7.6.1810 (Core)
硬件配置
处理器8核、内存32GB
实验说明及步骤
因为电脑的资源不够,只能借助于服务器资源,但是服务器不能联网,所以离线安装docker测试环境和上传oceanbase-ce docker镜像成为本实验的难点所在,后面开启docker后安装一路顺利,测试正常。
本实验练习使用的工具软件docker-ce-20.10.9版本。
安装步骤分为以下几步:
- 安装LINUX版Virtualbox虚拟机软件;
- 创建 CentOS linux虚拟机;
- 安装docker-ce软件环境;
- 打包导出oceanbase-ce docker镜像;
- 上传导入oceanbase-ce docker镜像;
- 启动oceanbase-ce docker镜像;
- 创建资源单元、资源池、租户等资源;
- 创建数据库及表,插入数据测试等。
实验练习内容
- 安装LINUX版Virtualbox虚拟机软件
因为我的宿主机环境为oracle Linux 6.9,故选择virtualbox的6.0.24版本,老版本稳定一些。
下载地址为:https://download.virtualbox.org/virtualbox/6.0.24/VirtualBox-6.0-6.0.24_139119_el6-1.x86_64.rpm,
rpm -ivh VirtualBox-6.0-6.0.24_139119_el6-1.x86_64.rpm安装即可,
下载安装后,连接虚拟机的GNOME环境可看到:
- 创建 CentOS linux虚拟机
根据实验后续规划,最小化安装创建4台虚拟机,分别为 linux76-1,linux76-2,linux76-3和linux76-4,IP地址分别为192.168.56.40-43,
192.168.56.41-43作为后续搭建三台OB集群使用,192.168.56.40作为OBD集群管理中心和OB CLIET及OB obproxy代理服务器使用,
为了方便后续安装软件包方便,搭建了本地yum源,并挂载了ISO文件到/mnt目录下。
挂载本地YUM源:
cd /etc/yum.repos.d
mkdir bk
mv *.repo bk/
echo "[EL]" > /etc/yum.repos.d/centos-media.repo
echo "name =Linux 7.x DVD" >> /etc/yum.repos.d/centos-media.repo
echo "baseurl=file://mnt" >> /etc/yum.repos.d/centos-media.repo
echo "gpgcheck=1" >> /etc/yum.repos.d/centos-media.repo
echo "enabled=1" >> /etc/yum.repos.d/centos-media.repo
echo "gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7" >> /etc/yum.repos.d/centos-media.repo
配置开机自动挂载:
echo "/dev/sr0 /mnt iso9660 defaults,ro,loop 0 0" >>/etc/fstab
cat /etc/fstab
配置互信(可选),方便快速连接到虚拟机
ssh-keygen -t rsa
ssh-copy-id 192.168.56.40
vbox虚拟机资源管理
LINUX上vbox虚拟机可以用命令行方便的开关机和查看资源管理、在虚拟机配置完成后就可以把远程桌面环境关闭,节约服务器资源,相关管理命令如下:
查看已经安装的虚拟机资源:
[root@obdemo001 ~]# VBoxManage list vms
"linux76-1" {d281e231-c5b5-4da5-9fad-ee12eaacec45}
"linux76-2" {e1c2d4c4-fb3c-428d-ad79-106233adc8ed}
"linux76-3" {1408385a-763a-43d0-94d2-44c06c9e9c2f}
"linux76-4" {7e17147d-9012-438c-839b-73e289fbfc49}
查看正在运行的虚拟机资源:
[root@obdemo001 ~]# VBoxManage list runningvms
"linux76-1" {d281e231-c5b5-4da5-9fad-ee12eaacec45}
无界面开启虚拟机:
VBoxManage startvm linux76-1 --type headless
关闭虚拟机
VBoxManage controlvm linux76-1 poweroff
其他还有很多强大的资源管理命令,可查看VBoxManage命令手册,做实验用这几条命令暂时满足需求。
- 安装docker-ce软件环境
因为是离线安装,还是遇到了不少问题,主要是缺包及依赖包。虽然本地挂载了YUM镜像源,还是缺少了一些包和依赖库,
经过不断的测试及查找资料,docker安装除了本地YUM源外需要4个软件包,5个依赖包分别如下:
Docker-ce安装软件:
docker-ce-20.10.9-3.el7.x86_64.rpm
docker-ce-cli-20.10.9-3.el7.x86_64.rpm
docker-ce-rootless-extras-20.10.9-3.el7.x86_64.rpm
docker-scan-plugin-0.21.0-3.el7.x86_64.rpm
Docker-ce安装依赖软件:
containerd.io-1.6.6-3.1.el7.x86_64.rpm
container-selinux-2.84-2.el7.noarch.rpm
slirp4netns-0.4.3-4.el7_8.x86_64.rpm
fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm
fuse3-libs-3.6.1-4.el7.x86_64.rpm
安装顺序,先安装依赖包,再安装docker软件。
常用 Docker 命令参考
# 查看 docker 版本
docker version
# 显示 docker 系统的信息
docker info
# 查看当前正在运行的容器
docker ps
# 故障检查
service docker status
# 启动关闭 docker
service docker start | stop
# 查看容器日志
docker logs -f <容器名 or ID>
# 清理命令,危险!!!
# 清理不用的容器
docker container prune
# 清理不用的镜像
docker image prune
# 清理不用的卷
docker volume prune
出现以上信息,表明docker 环境已经安装成功。
- 打包导出oceanbase-ce docker镜像
因docker所在的虚拟机不能联网,docker镜像也不支持web下载,只能使用docker pull方式下载,因此另找了一台能够联网
的LINUX虚拟机环境,安装docker环境下载导出镜像。
查询可用oceanbase的可用镜像
执行命令:docker search oceanbase
注:当前练习环境使用 老师视频讲座中推荐的obpilot/oceanbase-ce 镜像,大概2.25G
下载docker镜像 obpilot/oceanbase-ce
执行命令:docker pull obpilot/oceanbase-ce 下载所需镜像
执行命令:docker images 查看当前本地可用镜像
下面那个2.25GB的即为本次要打包的镜像
导出obpilot/oceanbase-ce镜像,执行命令:
docker save cfffed8802fd | gzip > docker-image-obce-230303.tar.gz
导出后文件大小800多M
5、上传导入oceanbase-ce docker镜像;
将打包好的obpilot/oceanbase-ce镜像上传到目标服务器,并执行导入命令:
docker load -i docker-image-obpilot-230303.tar.gz
Docker image查看导入的docker镜像
正常情况下,会发现查到的镜像“REPOSITORY”和“TAG”列是空值,通过下一步操作标记即可
标记本地镜像
# 镜像id可以写一部分
docker tag 943379e0b05b obpilot/oceanbase-ce:latest
Docker image再次查看导入的docker镜像,“REPOSITORY”和“TAG”显示正常
6、启动oceanbase-ce docker镜像
执行命令:
docker run -itd -m 20G -p 2881:2881 -p 2883:2883 --name oceanbase-ce obpilot/oceanbase-ce:latest
执行 docker ps命令,当前容器运行状态:
进入docker容器
执行命令:docker exec -it oceanbase-ce bash,进入上述运行容器:
安装相关的工具软件包
yum -y install sysvinit-tools net-tools tree
查看OceanBase工作目录结构
查看observer进程启动信息
执行命令: ps -ef | grep observer
查看observer进程监听端口
执行命令:netstat -tlnp | grep observer
7、创建资源单元、资源池、租户等资源;
使用obd命令
OBD全称是OceanBase Deployer,是OceanBase社区版的命令行下自动化部署软件。
如下为obd的常用法示例:
查看集群列表
执行命令:obd cluster list
启动集群:obd cluster start obdemo
从上图集群的启动过程可以看出,集群启动了observer和obproxy两项服务
再次查看集群状态,已经 处于running 状态了。
查看集群信息
执行命令:obd cluster display obdemo
注:如上所示,当前集群是一个单副本单节点+单proxy代理规模集群。
登录ob集群
使用obclient命令登录当前启动的集群。
obclient -h127.1 -P2883 -uroot@sys#obce-single -prootPWD123 -c -A oceanbase #密码为rootPWD123
--查看租户信息:
select pool.tenant_id, tenant.tenant_name,name as pool_name,unit_config_id, unit_count,
unit.unit_id,pool.zone_list, unit.svr_ip , unit.svr_port
from
__all_resource_pool pool inner join __all_tenant tenant on pool.tenant_id=tenant.tenant_id
inner join __all_unit unit on pool.resource_pool_id=unit.resource_pool_id
where pool.tenant_id>1000
order by tenant.tenant_name, zone_list;
目前还没有租户信息。
创建相关租户资源
创建租户所需的资源规格和资源池:
创建 resource unit(1C2G)
create resource unit mini max_cpu=1, min_cpu=1, max_memory='2G', min_memory='2G', max_iops=10000,
min_iops=1000, max_session_num=1000000, max_disk_size='4G';
创建 resource pool
create resource pool mini_pool_t1 unit=mini ,unit_num=1;
创建业务租户:
create tenant obcp_t1 charset='utf8mb4', replica_num=1, zone_list=('zone1'), primary_zone='RANDOM',
resource_pool_list=('mini_pool_t1') set ob_tcp_invited_nodes='%',ob_compatibility_mode='mysql';
8、创建数据库及表,插入数据测试等。
用新创建的租户重新登录数据库,连接新建业务租户:obcp_t1,默认连接密码为空
执行命令:obclient -h 127.0.0.1 -P 2883 -u root@obcp_t1#obce-single -c -A oceanbase
创建数据库:testdb
执行命令:create database testdb;
创建数据表:t1
执行命令:use testdb;
create table test1(id int primary key,name varchar(256),age int,sex int);
desc test1;
数据表插入查询操作:
insert into test1 values(1,'zhangsan',25,0),(2,'lisi',26,0),(3,'xiaoli',22,1);
select * from test1;
9、总结
本次主要体验的是使用docker镜像通过obd快速部署ob数据库,docker镜像安装后的测试过程都挺顺利的,前期准备工作比较耗时,
安装虚拟机软件,创建虚拟机,特别是离线方式下安装docker软件和导出导入上传docker镜像等容易出错,且耗费时间,需要耐心
细致的处理,也跟平时的知识积累熟练程度有关系,功夫在诗外,目的是l练习数据库,顺带把操作系统,虚拟化和docker的知识都
又重新梳理了一遍。不管怎么说,从零开始搭建一个oceanbase-ce docker测试环境,既有挑战性,也有满满的成就感。




