【 使用环境 】测试环境
【 OB or 其他组件 】obpilot/oceanbase-ce
【 使用版本 】
【问题描述】
【复现路径】
【问题现象及影响】
【附件】
【 使用环境 】测试环境
【 OB or 其他组件 】obpilot/oceanbase-ce
【 使用版本 】
【问题描述】
【复现路径】
【问题现象及影响】
【附件】
1.环境准备(于2022.12)
VM虚拟机系统环境Centos7.9 2009 内核3.10.0
关防火墙selinux
systemctl disable firewalld
systemctl stop firewalld.service
关selinux
Setenforce 0
vi /etc/selinux/config SELINUX=enforcing修改为"SELINUX=disabled"
安装系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
添加阿里云yum源
yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
sed -i ‘s+download.docker.com+mirrors.aliyun.com/docker-ce+’ /etc/yum.repos.d/docker-ce.repo
yum makecache fast 生成索引缓存索引提高搜索安装速度
安装Docker-CE并启动
yum -y install docker-ce 目前安装版本为20.10
systemctl start docker 启动
systemctl enable docker 设自启动
拉取docker镜像
直播视频(OceanBase 社区 特点是启动时可手动初始化集群及租户体验过程。但如下所述已失效无法下载(此段可忽略)
docker pull oceanbase/obce-mini
![|554x36](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps1.jpg)
发现报错进hub.docker搜索发现过期
![|554x123](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps2.jpg)
![|554x271](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps3.jpg)
拉取oceanbase镜像
完整的官方镜像版oceanbase-ce有多个版本可选 但是启动时会自动初始化集群及租户不能体验过程。
官网可查到多个版本https://hub.docker.com/r/oceanbase/oceanbase-ce/tags
查找镜像
docker search oceanbase
docker search oceanbase/oceanbase-ce
docker search obpilot/oceanbase-ce
![|509x257](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps4.jpg)
拉取”ob领航员”版本(估计是替代obce-mini)
docker pull obpilot/oceanbase-ce:rabbit
![|554x76](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps5.jpg)
![|504x392](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps6.jpg)
![|553x329](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps7.jpg)
能看到obpilot/oceanbase-ce的dockerfile内容
![|553x750](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps8.jpg)
docker images 查看拥有的镜像
2.运行oceanbase容器
docker run -itd -m 10G --name oceanbase-ce obpilot/oceanbase-ce:rabbit
-i交互式运行容器 -t为容器分配伪输入终端 -d后台运行并显示ID -m设置最大内存
–name指定容器名称 必须指定tag标签rabbit否则会下载最新版镜像
docker ps -a 显示所有容器 docker ps 显示运行的容器
当使用docker exec进入容器时,容器默认不是root用户,如果想改root密码可sudo passwd root。如报错-bash: sudo: command not found,可
docker exec -it --user root {容器名} /bin/bash
附容器七种状态created(已创建)restarting(重启中)running(运行中)
removing(迁移中)paused(暂停)exited(停止)dead(死亡)
容器虽启动了但报错IPv4转发已禁用
![|553x88](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps9.jpg)
vim /etc/sysctl.conf
net.ipv4.ip_forward=1 #保存退出就可以了
systemctl restart network 重启网卡
systemctl restart docker 重启docker
docker start oceanbase-ce 启动容器(出现过奇怪报错docker: 'start ’ is not a docker command,过一会再试成功)
docker exec -it oceanbase-ce bash进入容器
obd cluster list 查看集群 状态为已部署
![|459x126](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps10.jpg)
obd cluster start obdemo 启动或初始化集群
![|554x426](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps11.jpg)
直连地址为2881 代理地址为2883 普罗米修斯端口2884
处理警告fs.aio-max-nr
#该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。
vim /etc/sysctl.conf fs.aio-max-nr = 1048576
sysctl -p 生效
sysctl -a |grep fs.aio-max-nr 查设置
注意:如果想从新的配置还原到默认配置,只把自己的配置注释掉是不行的,必须改成原来的配置然后刷新才行!
3.进入租户及Mysql
[admin@ffd94a946881 ~]$ obclient -h127.1 -uroot@sys -P2881 -prootPWD123 -c -A oceanbase
语法
obclient -u[用户名]@[租户名]#[集群名称] -P[端口号] -h[ip地址] -p[密码] -D[数据库名] -c
如果连接语句中不带 -c 项,则连接至租户后 Hint 无法生效。即MySQL 运行环境中不要忽略注释。
如果连接语句中不带 -D[数据库名] 项,则默认数据库名与用户名一致
A:表示在 MySQL 连接数据库时不自动获取统计信息
oceanbase:访问的数据库名,可以更改为业务数据库
show parameters like ‘cluster’;
获取集群名称(obdemo)注意obproxy连接的时候会使用这个集群名![|554x131](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps12.jpg)
使用obproxy 2883端口登录
[admin@ffd94a946881 ~]$ obclient -h127.1 -uroot@sys#obdemo -P2883 -prootPWD123 -c -A oceanbase
show tables;
show databases;
![|285x208](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps13.jpg)
创建租户
建资源单元unit起名为S4C1G
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’;
建资源池起名为my_pool
CREATE resource pool my_pool unit = ‘S4C1G’, unit_num = 1;
建租户(实例)起名为obmysql使用刚建的资源池my_pool
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’;
默认的优先策略primary_zone=‘RANDOM’ 翻译为随机任意,等同于zone1,zone2,zone3 。
兼容模式compatibility设为mysql
![|553x299](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps14.jpg)
登入新建的租户(集群名不变,密码为空)
obclient -h 127.1 -uroot@obmysql#obdemo -P2883 -p -c -A test
alter user root identified by ‘111111’; 设密码
建库
create database testdb;
进入新建库
use testdb;
建表
CREATE TABLE tb_emp1 (id INT(11),name VARCHAR(25),deptId INT(11),salary FLOAT);
![|222x210](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps15.jpg)
observer的启动参数
![|387x499](file:///C:\Users\zy\AppData\Local\Temp\ksohtml13100\wps16.jpg)