
概述
OCP 安装部署
服务器资源
服务器配置
硬件配置
CPU
[root@OB03 t-oceanbase-antman]# lscpuArchitecture: x86_64CPU op-mode(s): 32-bit, 64-bitByte Order: Little EndianCPU(s): 10On-line CPU(s) list: 0-9Thread(s) per core: 1Core(s) per socket: 1Socket(s): 10NUMA node(s): 1Vendor ID: GenuineIntelCPU family: 6Model: 63Model name: Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHzStepping: 2CPU MHz: 2399.998BogoMIPS: 4799.99Hypervisor vendor: VMwareVirtualization type: fullL1d cache: 32KL1i cache: 32KL2 cache: 256KL3 cache: 20480KNUMA node0 CPU(s): 0-9Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt arat spec_ctrl intel_stibp arch_capabilities
内存
[root@OB03 t-oceanbase-antman]# grep MemTotal proc/meminfoMemTotal: 24688000 kB
内核参数
# for oceanbasenet.core.somaxconn = 2048net.core.netdev_max_backlog = 10000net.core.rmem_default = 16777216net.core.wmem_default = 16777216net.core.rmem_max = 16777216net.core.wmem_max = 16777216net.ipv4.ip_local_port_range = 3500 65535net.ipv4.ip_forward = 0net.ipv4.conf.default.rp_filter = 1net.ipv4.conf.default.accept_source_route = 0net.ipv4.tcp_syncookies = 0net.ipv4.tcp_rmem = 4096 87380 16777216net.ipv4.tcp_wmem = 4096 65536 16777216net.ipv4.tcp_max_syn_backlog = 16384net.ipv4.tcp_fin_timeout = 15net.ipv4.tcp_max_syn_backlog = 16384net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_slow_start_after_idle=0net.ipv4.ip_local_reserved_ports = 62881-63881vm.swappiness = 0kernel.core_pattern = data/1/core-%e-%p-%tvm.min_free_kbytes = 2097152vm.overcommit_memory = 0fs.aio-max-nr=1048576vm.max_map_count=655360#vm.nr_hugepages = 8200这里我在配置中禁用了 LINUX 的大页机制。
文件系统
不管是 OCP 服务器还是 OB 服务器,都建议有两个独立的文件系统 /data/1 和 /data/log1 。一个放 OB 数据文件,一个放 OB 日志文件。OCP 的元数据库也是 OB,跟 OCP 部署在同一个服务器上(生产环境可以分离部署)。这里 OCP 服务器还有个 docker 软件存储目录 /docker 。
sdb 8:16 0 120G 0 disk└─sdb1 8:17 0 120G 0 part├─centos-lv0 253:2 0 70G 0 lvm data/1└─centos-lv1 253:3 0 46G 0 lvm data/log1
OB 软件
OB 企业版软件下载地址:https://www.oceanbase.com/softwarecenter-enterprise
下载的软件如下:
[root@OB03 ob]# ls -lrthtotal 5.0G-rwxr-xr-x 1 root root 597M Apr 4 11:05 oat_3.2.0_20220819_x86.tgz-rwxr-xr-x 1 root root 86M Apr 4 11:06 ob-loader-dumper-4.0.1-SNAPSHOT.zip-rwxr-xr-x 1 root root 802M Apr 4 11:09 obodc4.1.2.tar.gz-rwxr-xr-x 1 root root 21M Apr 4 11:09 obproxy-3.2.9.0-20230116143405.el7.x86_64.rpm-rwxr-xr-x 1 root root 642M Apr 4 11:12 oceanbase-3.2.4.1-101000052023010822.el7.x86_64.rpm-rwxr-xr-x 1 root root 3.2M Apr 4 11:12 oceanbase-client-2.4.0.jar-rwxr-xr-x 1 root root 213M Apr 4 11:17 oma-3.4.0.tar.gz-rw-r--r-- 1 root root 197M Apr 6 09:45 t-oceanbase-antman-1.4.2-20220430002909.alios7.x86_64.rpm-rw-r--r-- 1 root root 1.5G Apr 6 10:22 metaob_OB2277_OBP320_x86_20220429.tgz-rwxr-xr-x 1 root root 962M Apr 6 10:22 ocp334.tar.gz
部署 docker
OB 要通过 OCP 自动化部署,OCP 的部署使用到 Docker 技术。企业版用产品 OAT 来自动化部署 OCP。OAT 的部署也是要用到 Docker 技术。并且都要求 Docker 版本不低于 19.0。
下面是 Docker 的部署过程。
卸载旧的 docker 版本
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
在线安装新版本
sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2
docker 的 yum 仓库建议使用阿里云的国内源更快。
sudo yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposudo yum -y install docker-ce docker-ce-cli containerd.io docker-compose-pluginsystemctl start docker[root@OB03 yum.repos.d]# docker --versionDocker version 23.0.3, build 3e7cbfd[root@OB03 ob]# systemctl status docker● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)Active: active (running) since Thu 2023-04-06 09:09:35 CST; 24s agoDocs: https://docs.docker.comMain PID: 12142 (dockerd)Tasks: 14Memory: 23.6MCGroup: system.slice/docker.service└─12142 usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sockApr 06 09:09:35 OB03 dockerd[12142]: time="2023-04-06T09:09:35.524621721+08:00" level=info msg="[core] [Channel #4 SubChannel #5] Subchannel Connectivity change to READY" module=grpcApr 06 09:09:35 OB03 dockerd[12142]: time="2023-04-06T09:09:35.524644961+08:00" level=info msg="[core] [Channel #4] Channel Connectivity change to READY" module=grpcApr 06 09:09:35 OB03 dockerd[12142]: time="2023-04-06T09:09:35.548434296+08:00" level=info msg="Loading containers: start."Apr 06 09:09:35 OB03 dockerd[12142]: time="2023-04-06T09:09:35.867217989+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemo...d IP address"Apr 06 09:09:35 OB03 dockerd[12142]: time="2023-04-06T09:09:35.945262815+08:00" level=info msg="Loading containers: done."Apr 06 09:09:35 OB03 dockerd[12142]: time="2023-04-06T09:09:35.965295713+08:00" level=info msg="Docker daemon" commit=59118bf graphdriver=overlay2 version=23.0.3Apr 06 09:09:35 OB03 dockerd[12142]: time="2023-04-06T09:09:35.965445413+08:00" level=info msg="Daemon has completed initialization"Apr 06 09:09:35 OB03 dockerd[12142]: time="2023-04-06T09:09:35.982764158+08:00" level=info msg="[core] [Server #7] Server created" module=grpcApr 06 09:09:35 OB03 systemd[1]: Started Docker Application Container Engine.Apr 06 09:09:35 OB03 dockerd[12142]: time="2023-04-06T09:09:35.992431130+08:00" level=info msg="API listen on run/docker.sock"Hint: Some lines were ellipsized, use -l to show in full.
部署 OAT
OB 企业版周边产品(OCP、OMS、ODC)都是推荐用产品 OAT 部署。
启动 OAT docker 容器
首先加载 OAT 镜像。
mkdir -p oat_dirdocker load -i oat_3.2.0_20220819_x86.tgz[root@OB03 ob]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEreg.docker.alibaba-inc.com/oceanbase/oat 3.2.0_20220819_x86 ed24d1cd4382 7 months ago 1.27GB
启动 OAT 容器。
oat_image=`docker images | grep oat | awk '{printf $1":"$2"\n"}'`docker create --name oat -v data_dir:/data -p 7000:7000 --restart on-failure:5 $oat_imagedocker start oat[root@OB03 ob]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES468da175a818 reg.docker.alibaba-inc.com/oceanbase/oat:3.2.0_20220819_x86 "/oat/distribution/p…" 15 seconds ago Up 7 seconds 3306/tcp, 0.0.0.0:7000->7000/tcp, :::7000->7000/tcp oat
启动成功后,有监听 7000 。
[root@OB03 ob]# netstat -ntlp |grep 7000tcp 0 0 0.0.0.0:7000 0.0.0.0:* LISTEN 13991/docker-proxytcp6 0 0 :::7000 :::* LISTEN 13997/docker-proxy
登录使用 OAT
登录地址:http://10.0.0.63:7000/login
默认登录方式:
用户名: admin密码:
aaAA11__
第一次登录要改密码。
添加服务器
添加凭据



docker stop oatdocker rm oat
手动部署 OCP
安装 antman RPM 包
yum -y localinstall t-oceanbase-antman-1.4.2-20220430002909.alios7.x86_64.rpm
安装后软件目录默认在:/root/t-oceanbase-antman 。创建配置文件
sh init_obcluster_conf.sh
1 ## obcluster.conf2 ##3 SINGLE_OCP_MODE=TRUE4 ################################ 根据环境必须修改 MUST CHANGE ACCORDING ENVIRONMENT ################################5 ############ 填写机器IP和 metaob 容器内的root/admin密码 Edit Machine IP and Password Of root/admin ############6 ZONE1_RS_IP=10.0.0.637 OBSERVER01_ROOTPASS='aaAA11__' # metaob容器使用,非宿主机账号,宿主机SSH信息请使用指定环境变量的方式,详见 install.sh -h8 OBSERVER01_ADMINPASS='aaAA11__'911 ############ 填写负载均衡配置 Edit Configuration of Load Balance ############12 # LB_MODE: nlb/dns/f5/none, default: dns for 3 ocp, none for 1 ocp 20220418 增加 nlb 支持13 LB_MODE=none44 ############ 根据服务器CPU、内存设置容器资源编排 Allocate Container Resources According To Server ############45 OB_DOCKER_CPUS=3246 OB_DOCKER_MEMORY=18G47 OB_SYSTEM_MEMORY=3G # Do not modify OS_SYSTEM_MEMORY unless you know what you are doing!48 OCP_DOCKER_CPUS=649 OCP_DOCKER_MEMORY=4G50 OBPROXY_DOCKER_CPUS=451 OBPROXY_DOCKER_MEMORY=1G5254 ############ 填写OCP各组件容器的版本信息 Edit Docker Image, Repo And Tag of OCP Components ############55 # OB docker56 OB_DOCKER_IMAGE_PACKAGE=metaob_OB2277_OBP320_x86_20220429.tgz57 OB_IMAGE_REPO=reg.docker.alibaba-inc.com/antman/ob-docker58 OB_IMAGE_TAG=OB2277_OBP320_x86_2022042959 # OCP docker60 OCP_DOCKER_IMAGE_PACKAGE=ocp334.tar.gz61 OCP_IMAGE_REPO=reg.docker.alibaba-inc.com/oceanbase/ocp-all-in-one62 OCP_IMAGE_TAG=3.3.4-20221202162515
单步安装
[root@OB03 t-oceanbase-antman]# ./install.sh -hNOTE:Please generate config file with init_obcluster_conf.sh before run this script.Script will read SSH_AUTH, SSH_USER, SSH_PORT, SSH_PASSWORD, SSH_KEY_FILE from env if existSSH_AUTH can be set either "password" or "pubkey"SSH_KEY_FILE is take effect only when SSH_AUTH=pubkeyIf SSH_USER is not "root", make sure the user can execute [sudo bash] without password and etc/sudoers has no requiretty setting.The default value is:SSH_AUTH=password SSH_USER=root SSH_PORT=22 SSH_PASSWORD='' SSH_KEY_FILE=/root/.ssh/id_rsaUsage: ./install.sh [OPTIONS]Options:-h, --help Print help and exit-d, --debug Print debug information-V, --version Print version-i, --install-steps string For example 1,3-5,7--c, --clear-steps string For example 1,3-5,7--r, --replace product_name old_repo_tag For example: odc reg.docker.alibaba-inc.com/oceanbase/odc-server:3.2.0-f, --config-file string Read in a config file-l, --load-balance Load balance modeSteps:1. check ssh authorization2. install load balancer (default: dns for clustered ocp, none for single ocp)3. install ob server4. init ocp metadb5. install temp OCP6. install obproxy7. install OCP8. POSTCHECK9. install OMS (optional)10. install ODC (optional)11. install OCP Grafana (optional)12. install OCP Opensearch (optional)
1.检查 ssh 权限
export SSH_PASSWORD=123456
[root@OB03 t-oceanbase-antman]# sh install.sh -i 1run install.sh with DEBUG=FALSE, INSTALL_STEPS=1 CLEAR_STEPS= CONFIG_FILE=/root/t-oceanbase-antman/obcluster.conf[2023-04-06 10:33:22.753104] INFO [check conf file root/t-oceanbase-antman/obcluster.conf format ...][2023-04-06 10:33:22.756709] INFO [conf file is upper case format.][2023-04-06 10:33:24.807404] INFO [start antman API service][2023-04-06 10:33:24.856561] INFO [SSH_AUTH=password SSH_USER=root SSH_PORT=22 SSH_PASSWORD=12*** SSH_KEY_FILE=/root/.ssh/id_rsa]LB_MODE=none[2023-04-06 10:33:25.131512] INFO [step1: check ssh authorization, logfile: root/t-oceanbase-antman/logs/ssh_auth.log][2023-04-06 10:33:25.305833] INFO [step1: ssh authorization done]
2.安装 OCP 元数据库
这个是 OCP 的元数据库容器,也是一个 OB 数据库 Docker 镜像,版本 V2.2.7 。由于元数据库只有 OCP 自己用,所以官方并不会经常去更新这个版本。OCP的元数据库都是 MySQL 租户,所以这个元数据库理论上也可以换成 OB 社区版最新版。
注意:生产库,OCP 的元数据库不要跟业务共用。
[root@OB03 t-oceanbase-antman]# ./install.sh -i 3run install.sh with DEBUG=FALSE, INSTALL_STEPS=3 CLEAR_STEPS= CONFIG_FILE=/root/t-oceanbase-antman/obcluster.conf[2023-04-06 10:32:03.590593] INFO [check conf file root/t-oceanbase-antman/obcluster.conf format ...][2023-04-06 10:32:03.594926] INFO [conf file is upper case format.][2023-04-06 10:32:05.645495] INFO [start antman API service][2023-04-06 10:32:05.695376] INFO [SSH_AUTH=password SSH_USER=root SSH_PORT=22 SSH_PASSWORD=12*** SSH_KEY_FILE=/root/.ssh/id_rsa]LB_MODE=none[2023-04-06 10:32:05.988876] ERROR [docker ob avail tenant memory is (18 - 3)G, docker memory limit(18G) too small.]
报错,提示可用于创建容器内存太小。
修改安装文件 install.sh
绕过这个限制。修改1561 行。
重新运行,再次失败。
[2023-04-06 10:38:23.906242] INFO [RANDOM_PROXY_PASSWORD is TRUE][2023-04-06 10:38:23.935674] INFO [start container: docker run -d -it --cap-add SYS_RESOURCE --name META_OB_ZONE_1 --net=host -e OBCLUSTER_NAME=obcluster -e DEV_NAME=ens192 -e ROOTSERVICE_LIST="10.0.0.63:2882:2881" -e DATAFILE_DISK_PERCENTAGE=90 -e CLUSTER_ID=1680747944 -e ZONE_NAME=META_OB_ZONE_1 -e OBPROXY_PORT=2883 -e MYSQL_PORT=2881 -e RPC_PORT=2882 -e OCP_VIP=10.0.0.63 -e OCP_VPORT=8080 -e app.password_root='aaAA11__' -e app.password_admin='aaAA11__' -e OBPROXY_OPTSTR="obproxy_sys_password=81cfb7555c750488a15e86024b8960d6faf41943,observer_sys_password=f8d6a7e700ad3dc9b332b1a8ec3bab24c7386df1,enable_strict_kernel_release=false,enable_metadb_used=false,enable_proxy_scramble=true,log_dir_size_threshold=10G,automatic_match_work_thread=false,work_thread_num=16,proxy_mem_limited=4G,client_max_connections=16384,enable_compression_protocol=false" -e OPTSTR="cpu_count=32,system_memory=3G,memory_limit=12G,__min_full_resource_pool_memory=1073741824,_ob_enable_prepared_statement=false,memory_limit_percentage=90" --cpu-period 100000 --cpu-quota 3200000 --cpuset-cpus 0-31 --memory 18G -v home/admin/oceanbase:/home/admin/oceanbase -v data/log1:/data/log1 -v data/1:/data/1 --restart on-failure:5 reg.docker.alibaba-inc.com/antman/ob-docker:OB2277_OBP320_x86_20220429]docker: Error response from daemon: Requested CPUs are not available - requested 0-31, available: 0-9.See 'docker run --help'.[2023-04-06 10:38:24.028353] INFO [installing OB docker and starting OB server on 10.0.0.63, pid: 29402, log: root/t-oceanbase-antman/logs/install_OB_docker.log and home/admin/logs/ob-server/ inside docker][2023-04-06 10:38:24.471394] ERROR [install_OB_docker.sh finished but reg.docker.alibaba-inc.com/antman/ob-docker:OB2277_OBP320_x86_20220429 NOT started on 10.0.0.63][2023-04-06 10:38:24.475061] ERROR [ANTMAN-303: OB docker on 10.0.0.63 is NOT started][2023-04-06 10:38:24.487297] ERROR [ANTMAN-314: ERROR occurred in install_ob, install.sh exit]
还需要修改 OB Docker 容器的启动参数里的 CPU,限制一下里面的 OB 和 OCP 的 CPU。从这也可以看出 Docker 不支持 CPU 的超额分配。
[root@OB03 t-oceanbase-antman]# ./install.sh -i 3run install.sh with DEBUG=FALSE, INSTALL_STEPS=3 CLEAR_STEPS= CONFIG_FILE=/root/t-oceanbase-antman/obcluster.conf[2023-04-06 10:53:52.477570] INFO [check conf file root/t-oceanbase-antman/obcluster.conf format ...][2023-04-06 10:53:52.481924] INFO [conf file is upper case format.][2023-04-06 10:53:54.535820] INFO [start antman API service][2023-04-06 10:53:54.585700] INFO [SSH_AUTH=password SSH_USER=root SSH_PORT=22 SSH_PASSWORD=12*** SSH_KEY_FILE=/root/.ssh/id_rsa]LB_MODE=noneOCP_VERSION is 3.3.4[2023-04-06 10:53:55.609266] INFO [step3: check whether OBSERVER port 2881,2882 are in use or not on 10.0.0.63][2023-04-06 10:53:56.307446] INFO [step3: OBSERVER port 2881,2882, 2022 are idle on 10.0.0.63][2023-04-06 10:53:56.311096] INFO [step3: installing ob cluster, logfile: root/t-oceanbase-antman/logs/install_ob.log][2023-04-06 10:54:11.927849] INFO [load docker image: docker load -i root/t-oceanbase-antman/metaob_OB2277_OBP320_x86_20220429.tgz]Loaded image: reg.docker.alibaba-inc.com/antman/ob-docker:OB2277_OBP320_x86_20220429[2023-04-06 10:54:42.195708] INFO [RANDOM_PROXY_PASSWORD is TRUE][2023-04-06 10:54:42.225063] INFO [start container: docker run -d -it --cap-add SYS_RESOURCE --name META_OB_ZONE_1 --net=host -e OBCLUSTER_NAME=obcluster -e DEV_NAME=ens192 -e ROOTSERVICE_LIST="10.0.0.63:2882:2881" -e DATAFILE_DISK_PERCENTAGE=90 -e CLUSTER_ID=1680747944 -e ZONE_NAME=META_OB_ZONE_1 -e OBPROXY_PORT=2883 -e MYSQL_PORT=2881 -e RPC_PORT=2882 -e OCP_VIP=10.0.0.63 -e OCP_VPORT=8080 -e app.password_root='aaAA11__' -e app.password_admin='aaAA11__' -e OBPROXY_OPTSTR="obproxy_sys_password=81cfb7555c750488a15e86024b8960d6faf41943,observer_sys_password=f8d6a7e700ad3dc9b332b1a8ec3bab24c7386df1,enable_strict_kernel_release=false,enable_metadb_used=false,enable_proxy_scramble=true,log_dir_size_threshold=10G,automatic_match_work_thread=false,work_thread_num=16,proxy_mem_limited=1G,client_max_connections=16384,enable_compression_protocol=false" -e OPTSTR="cpu_count=8,system_memory=3G,memory_limit=17G,__min_full_resource_pool_memory=1073741824,_ob_enable_prepared_statement=false,memory_limit_percentage=90" --cpu-period 100000 --cpu-quota 800000 --cpuset-cpus 0-7 --memory 18G -v home/admin/oceanbase:/home/admin/oceanbase -v data/log1:/data/log1 -v data/1:/data/1 --restart on-failure:5 reg.docker.alibaba-inc.com/antman/ob-docker:OB2277_OBP320_x86_20220429]81977f3efa3b77d14efc82b1eb8a963c93331e07029afca2c1b28ed086a4b6fe[2023-04-06 10:54:42.479637] INFO [installing OB docker and starting OB server on 10.0.0.63, pid: 31833, log: root/t-oceanbase-antman/logs/install_OB_docker.log and home/admin/logs/ob-server/ inside docker][2023-04-06 10:54:42.926752] INFO [install_OB_docker.sh finished and reg.docker.alibaba-inc.com/antman/ob-docker:OB2277_OBP320_x86_20220429 started on 10.0.0.63][2023-04-06 10:54:42.930371] INFO [waiting on observer ready on 10.0.0.63][2023-04-06 10:57:42.940764] INFO [waiting on observer ready on 10.0.0.63 for 3 Minitues][2023-04-06 10:58:42.951559] INFO [waiting on observer ready on 10.0.0.63 for 4 Minitues][2023-04-06 10:59:42.962091] INFO [waiting on observer ready on 10.0.0.63 for 5 Minitues][2023-04-06 10:59:43.381981] INFO [observer on 10.0.0.63 is ready][2023-04-06 10:59:43.391518] INFO [observer installation on all hosts done][2023-04-06 10:59:43.398477] INFO [Now, start bootstrap on 10.0.0.63: alter system bootstrap REGION "OCP_META_REGION" ZONE "META_OB_ZONE_1" SERVER "10.0.0.63:2882"][2023-04-06 11:01:10.036774] INFO [bootstrap done, observer now ready][2023-04-06 11:01:10.061021] INFO [major_freeze start][2023-04-06 11:02:10.240394] INFO [major_freeze done][2023-04-06 11:02:10.244661] INFO [create proxyro using random password][2023-04-06 11:02:10.412847] INFO [step3: installation of ob cluster done]
安装成功了,检验如下。
[root@OB03 t-oceanbase-antman]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES81977f3efa3b reg.docker.alibaba-inc.com/antman/ob-docker:OB2277_OBP320_x86_20220429 "/usr/bin/supervisor…" 13 minutes ago Up 13 minutes META_OB_ZONE_1这里给出修改文件的变化。[root@OB03 t-oceanbase-antman]# diff install.sh install.sh.bak1561c1561< [ $avail_tenant_memory_num -lt 10 ] && { antman_log "docker ob avail tenant memory is (${OB_DOCKER_MEMORY%G} - ${OB_SYSTEM_MEMORY%G})G, docker memory limit(${OB_DOCKER_MEMORY}) too small." "ERROR"; exit 1; }---> [ $avail_tenant_memory_num -lt 31 ] && { antman_log "docker ob avail tenant memory is (${OB_DOCKER_MEMORY%G} - ${OB_SYSTEM_MEMORY%G})G, docker memory limit(${OB_DOCKER_MEMORY}) too small." "ERROR"; exit 1; }[root@OB03 t-oceanbase-antman]# diff install_OB_docker.sh install_OB_docker.sh.bak72c72< observer_memory_limit=`expr ${OB_DOCKER_MEMORY%G} - 1`G #保留6G给内置proxy及其余进程---> observer_memory_limit=`expr ${OB_DOCKER_MEMORY%G} - 6`G #保留6G给内置proxy及其余进程79c79< proxy_optstr="obproxy_sys_password=$proxysys_pass_sha1,observer_sys_password=$proxyro_pass_sha1,enable_strict_kernel_release=false,enable_metadb_used=false,enable_proxy_scramble=true,log_dir_size_threshold=10G,automatic_match_work_thread=false,work_thread_num=16,proxy_mem_limited=1G,client_max_connections=16384,enable_compression_protocol=false"---> proxy_optstr="obproxy_sys_password=$proxysys_pass_sha1,observer_sys_password=$proxyro_pass_sha1,enable_strict_kernel_release=false,enable_metadb_used=false,enable_proxy_scramble=true,log_dir_size_threshold=10G,automatic_match_work_thread=false,work_thread_num=16,proxy_mem_limited=4G,client_max_connections=16384,enable_compression_protocol=false"81c81< proxy_optstr="enable_strict_kernel_release=false,enable_metadb_used=false,enable_proxy_scramble=true,log_dir_size_threshold=10G,automatic_match_work_thread=false,work_thread_num=16,proxy_mem_limited=1G,client_max_connections=16384,enable_compression_protocol=false"---> proxy_optstr="enable_strict_kernel_release=false,enable_metadb_used=false,enable_proxy_scramble=true,log_dir_size_threshold=10G,automatic_match_work_thread=false,work_thread_num=16,proxy_mem_limited=4G,client_max_connections=16384,enable_compression_protocol=false"85c85< observer_memory_limit=`expr ${OB_DOCKER_MEMORY%G} - 1`G # 保留2G给其他进程---> observer_memory_limit=`expr ${OB_DOCKER_MEMORY%G} - 2`G # 保留2G给其他进程
OB 2.2 很早就可以在 8G 规格下启动,详细原理步骤介绍可以参考:OceanBase 独立部署高级玩法二 :2C8G版 (qq.com) 。
如果没有 OB 镜像文件,就把这一步换成 OB 社区版的部署,社区版 4.1 相比 2.2 ,在单机性能上有很大提升。社区版的部署跟企业版并无差别,可以用上面独立部署方法,也可以用容器部署。详细原理步骤可以参考:5 分钟玩转 OceanBase 社区版 Docker 部署 (qq.com) 。
3.初始化 OCP 元数据库
这一步是初始化 OCP 元数据库。主要是创建相关租户和用户。
[root@OB03 t-oceanbase-antman]# ./install.sh -i 4run install.sh with DEBUG=FALSE, INSTALL_STEPS=4 CLEAR_STEPS= CONFIG_FILE=/root/t-oceanbase-antman/obcluster.conf[2023-04-06 11:10:27.708721] INFO [check conf file root/t-oceanbase-antman/obcluster.conf format ...][2023-04-06 11:10:27.712884] INFO [conf file is upper case format.][2023-04-06 11:10:29.779872] INFO [start antman API service][2023-04-06 11:10:29.878791] INFO [SSH_AUTH=password SSH_USER=root SSH_PORT=22 SSH_PASSWORD=12*** SSH_KEY_FILE=/root/.ssh/id_rsa]LB_MODE=none[2023-04-06 11:10:30.288983] INFO [step4: initializing ocp metadb, logfile: root/t-oceanbase-antman/logs/init_metadb.log]ERROR 4624 (HY000) at line 1: machine resource is not enough to hold a new unitERROR 4650 (HY000) at line 1: resource pool 'ocp_resource_pool' not existERROR 5157 (HY000) at line 1: Unknown tenant 'ocp_meta'ERROR 4624 (HY000) at line 1: machine resource is not enough to hold a new unitERROR 4650 (HY000) at line 1: resource pool 'ocp_monitor_pool' not existERROR 5157 (HY000) at line 1: Unknown tenant 'ocp_monitor'ERROR 1045 (42000): Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: NO)
查看元数据库 OB 集群可分配资源
[root@OB03 t-oceanbase-antman]# sh tools/getpass.sh
然后登录元数据库,用户名:root@sys ,端口 :2881
[root@OB03 t-oceanbase-antman]# mysql -h127.1 -uroot@sys -P2881 -p -c -A oceanbaseEnter password:
查询 OB 集群剩余资源。
selectsvr_ip,zone,cpu_total, cpu_assigned, cpu_assigned_percent,round(mem_total/1024/1024/1024) mem_total_gb, round(mem_assigned/1024/1024/1024) mem_assigned_gb, mem_assigned_percent,round(disk_total/1024/1024/1024) disk_total_gb, round(disk_assigned/1024/1024/1024) disk_assigned_gb, disk_assigned_percent,unit_num, migrating_unit_num, merged_version, leader_count,heartbeat_status, with_rootserver, clock_sync_statusfrom__all_virtual_server_stat \G*************************** 1. row ***************************svr_ip: 10.0.0.63zone: META_OB_ZONE_1cpu_total: 6cpu_assigned: 2.5cpu_assigned_percent: 41mem_total_gb: 14mem_assigned_gb: 4mem_assigned_percent: 25disk_total_gb: 59disk_assigned_gb: 59disk_assigned_percent: 100unit_num: 1migrating_unit_num: 0merged_version: 2leader_count: 1236heartbeat_status: alivewith_rootserver: 1clock_sync_status: SYNC1 row in set (0.00 sec)
初步看,是剩余 CPU 和内存 资源比较少。首先调整初始化元数据库脚本,减少创建租户的资源。其次,调大 OB 集群的 CPU 数量(参数 cpu_count
)。
MySQL [oceanbase]> alter system set cpu_count=16;Query OK, 0 rows affected (0.05 sec)MySQL [oceanbase]> show parameters like '%cpu_count%';+----------------+----------+-----------+----------+-----------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level |+----------------+----------+-----------+----------+-----------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+| META_OB_ZONE_1 | observer | 10.0.0.63 | 2882 | cpu_count | NULL | 16 | the number of CPU\'s in the system. If this parameter is set to zero, the number will be set according to sysconf; otherwise, this parameter is used. Range: [0,+∞) in integer | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |+----------------+----------+-----------+----------+-----------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+1 row in set (0.00 sec)
需要重启 OB 数据库。方法是登录 OB 容器,进入 admin 用户下,杀掉 OB 进程再启动 OB 。或者前面不用进入 OB 集群,直接启动 observer 时带上参数。
docker exec -it META_OB_ZONE_1 bashsu - admincd oceanbasekill -9 `pidof observer`bin/observer -o "cpu_count=16"
[admin@OB03 oceanbase]$ bin/observer -o "cpu_count=16"bin/observer -o cpu_count=16optstr: cpu_count=16[2023-04-06 11:30:03.554149] ERROR [LIB] start_daemon (utility.cpp:1230) [4924][0][Y0-0000000000000000] [lt=0] pid already exists BACKTRACE:0xd4f99da 0xd422fae 0x350f978 0xd4fc193 0xd4fe853 0x351f803 0x7f41fd1f2445 0x350d7f5
修改初始化 OCP 元数据的脚本,降低租户资源要求。
这里直接给出脚本修改的变化部分。
[root@OB03 t-oceanbase-antman]# diff create_ocp_db.sh create_ocp_db.sh.bak37c37< mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "alter system set memory_chunk_cache_size = '128M';"---> mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "alter system set memory_chunk_cache_size = '8G';"42,45c42,45< mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "alter system set cpu_quota_concurrency = 2;"< mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "alter system set data_copy_concurrency = 10;"< mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "alter system set server_data_copy_out_concurrency = 5;"< mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "alter system set server_data_copy_in_concurrency = 5;"---> mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "alter system set cpu_quota_concurrency = 4;"> mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "alter system set data_copy_concurrency = 100;"> mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "alter system set server_data_copy_out_concurrency = 10;"> mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "alter system set server_data_copy_in_concurrency = 10;"47c47< mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "alter system set freeze_trigger_percentage = 50;"---> mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "alter system set freeze_trigger_percentage = 60;"53c53< mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "CREATE RESOURCE UNIT IF NOT EXISTS ocp_unit max_cpu 2, max_memory '2G', max_iops 128,max_disk_size '1G', max_session_num 10000, MIN_CPU=2, MIN_MEMORY= '2G', MIN_IOPS=128;"---> mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "CREATE RESOURCE UNIT IF NOT EXISTS ocp_unit max_cpu 2, max_memory '5G', max_iops 128,max_disk_size '1G', max_session_num 10000, MIN_CPU=2, MIN_MEMORY= '5G', MIN_IOPS=128;"59c59< mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "CREATE RESOURCE UNIT IF NOT EXISTS ocp_monitor_unit max_cpu 4, max_memory '5G', max_iops 128,max_disk_size '1G', max_session_num 10000, MIN_CPU=4, MIN_MEMORY= '5G', MIN_IOPS=128;"---> mysql -uroot -P$MYSQL_PORT -h${ZONE1_RS_IP} -Doceanbase -p${CLUSTER_SYS_PASS} -e "CREATE RESOURCE UNIT IF NOT EXISTS ocp_monitor_unit max_cpu 4, max_memory '16G', max_iops 128,max_disk_size '1G', max_session_num 10000, MIN_CPU=4, MIN_MEMORY= '16G', MIN_IOPS=128;"
重新运行第 4 步安装。
[root@OB03 t-oceanbase-antman]# ./install.sh -c 4run install.sh with DEBUG=FALSE, INSTALL_STEPS= CLEAR_STEPS=4 CONFIG_FILE=/root/t-oceanbase-antman/obcluster.conf[2023-04-06 11:45:34.087004] INFO [check conf file root/t-oceanbase-antman/obcluster.conf format ...][2023-04-06 11:45:34.091613] INFO [conf file is upper case format.][2023-04-06 11:45:36.151593] INFO [start antman API service][2023-04-06 11:45:36.211226] INFO [SSH_AUTH=password SSH_USER=root SSH_PORT=22 SSH_PASSWORD=12*** SSH_KEY_FILE=/root/.ssh/id_rsa]LB_MODE=none[2023-04-06 11:45:36.562012] INFO [clear_step4: drop ocp meta db/tenant/user/resource, logfile: root/t-oceanbase-antman/logs/uninit_metadb.log][2023-04-06 11:45:36.940951] INFO [clear_step4: uninit of metadb done][root@OB03 t-oceanbase-antman]# ./install.sh -i 4run install.sh with DEBUG=FALSE, INSTALL_STEPS=4 CLEAR_STEPS= CONFIG_FILE=/root/t-oceanbase-antman/obcluster.conf[2023-04-06 11:46:52.925373] INFO [check conf file root/t-oceanbase-antman/obcluster.conf format ...][2023-04-06 11:46:52.929297] INFO [conf file is upper case format.][2023-04-06 11:46:54.986010] INFO [start antman API service][2023-04-06 11:46:55.043361] INFO [SSH_AUTH=password SSH_USER=root SSH_PORT=22 SSH_PASSWORD=12*** SSH_KEY_FILE=/root/.ssh/id_rsa]LB_MODE=none[2023-04-06 11:46:55.372811] INFO [step4: initializing ocp metadb, logfile: root/t-oceanbase-antman/logs/init_metadb.log][2023-04-06 11:47:01.369866] INFO [step4: initialization of ocp metadb done]
至此,元数据库初始化成功。元数据库对 OCP 非常重要,感兴趣的可以深入阅读:自动化运维产品的命门——元数据库 (qq.com) 。
4.安装 TMP OCP
接下来部署 OCP。由于 OCP 连接 OB 需要通过 OBProxy,但是启动 OBProxy 又需要配置 OB 的连接方式,这个连接方式是通过 OCP API 获取的。这里就有个“先有鸡还是先有蛋”问题。所以需要先通过一个 简化版的 TMP OCP 过渡一下。
[root@OB03 t-oceanbase-antman]# ./install.sh -i 5run install.sh with DEBUG=FALSE, INSTALL_STEPS=5 CLEAR_STEPS= CONFIG_FILE=/root/t-oceanbase-antman/obcluster.conf[2023-04-06 13:41:23.640439] INFO [check conf file root/t-oceanbase-antman/obcluster.conf format ...][2023-04-06 13:41:23.644910] INFO [conf file is upper case format.][2023-04-06 13:41:25.703547] INFO [start antman API service][2023-04-06 13:41:25.775681] INFO [SSH_AUTH=password SSH_USER=root SSH_PORT=22 SSH_PASSWORD=12*** SSH_KEY_FILE=/root/.ssh/id_rsa]LB_MODE=none[2023-04-06 13:41:27.110622] INFO [using inner Proxy with OB!]
这里提到使用的是内部 OBProxy,指的是 OB 容器中的,这样就不用单独一个 OBProxy 容器,节省了一些资源。
[root@OB03 t-oceanbase-antman]# docker exec -it META_OB_ZONE_1 bash -c "netstat -ntlp |grep 288"tcp 0 0 0.0.0.0:2881 0.0.0.0:* LISTEN -tcp 0 0 0.0.0.0:2882 0.0.0.0:* LISTEN -tcp 0 0 0.0.0.0:2883 0.0.0.0:* LISTEN -tcp 0 0 0.0.0.0:2884 0.0.0.0:* LISTEN -
5.安装正式 OCP
[root@OB03 t-oceanbase-antman]# ./install.sh -i 7run install.sh with DEBUG=FALSE, INSTALL_STEPS=7 CLEAR_STEPS= CONFIG_FILE=/root/t-oceanbase-antman/obcluster.conf[2023-04-06 13:46:19.019939] INFO [check conf file root/t-oceanbase-antman/obcluster.conf format ...][2023-04-06 13:46:19.024277] INFO [conf file is upper case format.][2023-04-06 13:46:21.082560] INFO [start antman API service][2023-04-06 13:46:21.148509] INFO [SSH_AUTH=password SSH_USER=root SSH_PORT=22 SSH_PASSWORD=12*** SSH_KEY_FILE=/root/.ssh/id_rsa]LB_MODE=none[2023-04-06 13:46:21.471557] INFO [step7: installing ocp, logfile: root/t-oceanbase-antman/logs/install_ocp.log][2023-04-06 13:46:21.475197] INFO [using inner Proxy with OB!][2023-04-06 13:46:21.480793] INFO [start ocp1 and init it...][2023-04-06 13:46:33.300826] INFO [obproxy is ready][2023-04-06 13:46:33.426576] INFO [load docker image: docker load -i root/t-oceanbase-antman/ocp334.tar.gz]Loaded image: reg.docker.alibaba-inc.com/oceanbase/ocp-all-in-one:3.3.4-20221202162515[2023-04-06 13:46:53.525940] INFO [init metadb: docker run --net host --workdir=/home/admin/ocp-init/src/ocp-init --entrypoint=python reg.docker.alibaba-inc.com/oceanbase/ocp-all-in-one:3.3.4-20221202162515 create_metadb.py 10.0.0.63 2883 root@ocp_meta#obcluster xOd1^P%FPx ocp root@ocp_monitor XE^450Rh{H ocp_monitor]<.....>[2023-04-06 14:02:39.508630] INFO [start container: docker run -d -it --name ocp --net=host --cpu-period 100000 --cpu-quota 400000 --memory=4G --env-file=/root/t-oceanbase-antman/config/env_ocp.yaml -v home/admin/logs:/home/admin/logs --restart on-failure:5 reg.docker.alibaba-inc.com/oceanbase/ocp-all-in-one:3.3.4-20221202162515]216f8f078fdd01a766a64e18c6c3513fb0378fb14a9800ac627497eef468be2d[2023-04-06 14:02:39.969122] INFO [check ocp api][2023-04-06 14:03:09.979394] INFO [waiting ocp api to be ready on host 10.0.0.63 for 1 Minites][2023-04-06 14:03:09.983194] INFO [check ocp api][2023-04-06 14:03:40.015036] INFO [waiting ocp api to be ready on host 10.0.0.63 for 1 Minites][2023-04-06 14:03:40.025514] INFO [check ocp api][2023-04-06 14:04:10.038253] INFO [waiting ocp api to be ready on host 10.0.0.63 for 2 Minites][2023-04-06 14:04:10.041349] INFO [check ocp api][2023-04-06 14:04:40.054816] INFO [waiting ocp api to be ready on host 10.0.0.63 for 2 Minites][2023-04-06 14:04:40.059154] INFO [check ocp api][2023-04-06 14:04:40.303255] INFO [ALTER SYSTEM ALTER ZONE META_OB_ZONE_1 set idc='am171';][2023-04-06 14:04:43.719868] INFO [start takeOverPreCheck, already wait 0s]{}[2023-04-06 14:05:14.221508] INFO [start takeOverPreCheck, already wait 30s]{}[2023-04-06 14:05:44.482049] INFO [start takeOverPreCheck, already wait 60s]{u'valid': False, u'messages': [u'OBServer\u68c0\u67e5\u4e0d\u901a\u8fc7']}[2023-04-06 14:06:15.923110] INFO [start takeOverPreCheck, already wait 90s]{u'valid': True, u'messages': []}[2023-04-06 14:06:16.260680] INFO [takeOverPreCheck success][2023-04-06 14:06:16.989242] INFO [takeover cluster through rs 10.0.0.63: {"rootSysPassword":"DWJmrC3w%m","saveToCredential":true,"address":"10.0.0.63","port":2881}][2023-04-06 14:06:27.046867] WARN [obcluster is still importing, wait 30s to check][2023-04-06 14:06:57.065821] INFO [import obcluster and hosts SUCCESS][2023-04-06 14:06:57.092349] INFO [ocp api is ready on host 10.0.0.63][2023-04-06 14:06:57.442354] INFO [OCP multi cluster disabled, pass.]ocp[2023-04-06 14:07:08.564766] INFO [make sure ocp service ready...][2023-04-06 14:08:58.776883] INFO [ocp on 10.0.0.63:8080 service ready][2023-04-06 14:08:58.781773] INFO [ocp installation on all hosts done][2023-04-06 14:08:58.815438] INFO [OCP multi AZ disabled, pass.][2023-04-06 14:08:58.821969] INFO [step7: installation of ocp done]
当看到监听端口 :8080
时,就表示 OCP 部署启动成功。
6.安装后的检查
主要是检查跟 OCP 有关的各个组件的状态。
[root@OB03 t-oceanbase-antman]# sh install.sh -i 8run install.sh with DEBUG=FALSE, INSTALL_STEPS=8 CLEAR_STEPS= CONFIG_FILE=/root/t-oceanbase-antman/obcluster.conf[2023-04-06 14:11:15.882629] INFO [check conf file root/t-oceanbase-antman/obcluster.conf format ...][2023-04-06 14:11:15.888134] INFO [conf file is upper case format.][2023-04-06 14:11:17.949731] INFO [start antman API service][2023-04-06 14:11:18.030614] INFO [SSH_AUTH=password SSH_USER=root SSH_PORT=22 SSH_PASSWORD=12*** SSH_KEY_FILE=/root/.ssh/id_rsa]LB_MODE=none[2023-04-06 14:11:18.417359] INFO [step8: post-checking service, logfile: root/t-oceanbase-antman/logs/post_check_service.log][2023-04-06 14:11:18.474099] INFO [10.0.0.63: post_check_connection start][2023-04-06 14:11:18.479336] INFO [Ping 10.0.0.63 -> 10.0.0.63][2023-04-06 14:11:20.680894] INFO [10.0.0.63: post_check_connection done][2023-04-06 14:11:20.686982] INFO [10.0.0.63: post_check_port start][2023-04-06 14:11:20.692445] INFO [Connect 10.0.0.63 -> 10.0.0.63:8080][2023-04-06 14:11:20.902949] INFO [Connect 10.0.0.63 -> 10.0.0.63:2883][2023-04-06 14:11:21.102328] INFO [10.0.0.63: post_check_port done][2023-04-06 14:11:21.105732] INFO [10.0.0.63: post_check_ob start][2023-04-06 14:11:21.109142] INFO [check __all_server status 10.0.0.63 -> 10.0.0.63:2883][2023-04-06 14:11:21.312185] INFO [10.0.0.63: post_check_ob done][2023-04-06 14:11:21.315144] INFO [10.0.0.63: post_check_ocp_service start][2023-04-06 14:11:21.318118] INFO [Curl 10.0.0.63 -> http://10.0.0.63:8080/services?Action=GetObProxyConfig&User_ID=admin&UID=alibaba][2023-04-06 14:11:21.524950] INFO [10.0.0.63: post_check_ocp_service done][2023-04-06 14:11:21.536864] INFO [step8: post check done]
检查一下虚拟机服务器剩余资源。还有 3G 可用内存。如果精打细算的话,12G 的虚拟机应该也能将 OCP 部署起来。OB 给 8G ,OCP 给 2G 差不多了。当然,不排除后面 OCP 使用起来会有点慢。所以,更建议将元数据库 OB 换成社区版最新版。
[root@OB03 t-oceanbase-antman]# free -gtotal used free shared buff/cache availableMem: 23 12 3 0 7 4Swap: 0 0 0[root@OB03 t-oceanbase-antman]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES216f8f078fdd reg.docker.alibaba-inc.com/oceanbase/ocp-all-in-one:3.3.4-20221202162515 "/usr/bin/supervisor…" 9 minutes ago Up 4 minutes ocp81977f3efa3b reg.docker.alibaba-inc.com/antman/ob-docker:OB2277_OBP320_x86_20220429 "/usr/bin/supervisor…" 3 hours ago Up 3 hours META_OB_ZONE_1
运行一下 数据库监控脚本 dooba.py
。
python dooba.py -h127.1 -uroot@sys -P2881 -p'DWJmrC3w%m'
打开 OCP 页面,表示安装成功:http://10.0.0.63:8080/cluster
OCP 使用
初次登录 OCP 需要修改密码。
详细使用方法可以参考官网文档:文档概览-OceanBase 云平台 -OceanBase文档中心-分布式数据库使用文档 。
通过 OCP 部署 OB 主要步骤有:添加 OB 服务器、部署 OB 集群、部署 OBProxy 集群、创建租户。
OB 服务器准备
服务器配置
内核参数
##################################################### for oceanbasenet.core.somaxconn = 2048net.core.netdev_max_backlog = 10000net.core.rmem_default = 16777216net.core.wmem_default = 16777216net.core.rmem_max = 16777216net.core.wmem_max = 16777216net.ipv4.ip_local_port_range = 3500 65535net.ipv4.ip_forward = 0net.ipv4.conf.default.rp_filter = 1net.ipv4.conf.default.accept_source_route = 0net.ipv4.tcp_syncookies = 0net.ipv4.tcp_rmem = 4096 87380 16777216net.ipv4.tcp_wmem = 4096 65536 16777216net.ipv4.tcp_max_syn_backlog = 16384net.ipv4.tcp_fin_timeout = 15net.ipv4.tcp_max_syn_backlog = 16384net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_slow_start_after_idle=0net.ipv4.ip_local_reserved_ports = 62881-63881vm.swappiness = 0kernel.core_pattern = data/1/core-%e-%p-%tvm.min_free_kbytes = 2097152vm.overcommit_memory = 0fs.aio-max-nr=1048576vm.max_map_count=655360vm.nr_hugepages = 5150
这里在 OB 服务器里开了大页,设置为 10G+ 内存。所以后面 OB 节点启动的时候也限制最大只使用 10G 内存。有关 OB 使用大页内存是一个探索。这里同时还要关闭透明大页(THP)以及关闭 NUMA,详细原理步骤请参考:OceanBase 使用内存大页技术探索 (qq.com) 。这一步需要重启 OB 服务器。
内存设置
关闭 THP ,开启 HugePage
[root@OB02 ~]# grep HugePage proc/meminfoAnonHugePages: 0 kBHugePages_Total: 5120HugePages_Free: 5120HugePages_Rsvd: 0HugePages_Surp: 0
关闭 NUMA
[root@OB02 ~]# numastat -nPer-node numastat info (in MBs):Node 0 Total--------------- ---------------Numa_Hit 1086.02 1086.02Numa_Miss 0.00 0.00Numa_Foreign 0.00 0.00Interleave_Hit 108.52 108.52Local_Node 1086.02 1086.02Other_Node 0.00 0.00
OCP 部署 OB集群
部署规划
OB 4.1 推出了单机分布式一体化的功能,其功能之一指的是 OB 即可以单机部署也可以集群部署。实际上从 OB 1.0 开始后的版本就具备这个能力。这里通过 OCP 部署一个单节点的 OB。虽然是单节点,我依然习惯称它为集群,就像单节点的 ORACLE RAC 一样。
新增主机
首先要在 OCP 里新增主机。

OCP 运维任务也是以任务流方式处理,被分解为很多独立的步骤。每一步都有相应的日志。出问题的时候可以看日志排查问题,修复后重跑任务或者跳过任务等等。

主机的基本信息如下,需要等个几分钟主机上监控agent才采集上报。后面存储和文件系统规划就略过。

上传 OB 软件
OCP 要自动化部署 OB 和 OBProxy集群,就需要将 OB 和 OBProxy 的 RPM 包上传到 OCP 上保存。
在上传页面勾选官网下载的 RPM 包。
oceanbase-3.2.4.1-101000052023010822.el7.x86_64.rpmobproxy-3.2.9.0-20230116143405.el7.x86_64.rpm

上传失败问题分析
这期间由于网络问题,ob 软件包很大,可能上传过程中失败。但是第二次上传的时候可能会报错。如:cannot post /api/v2/software-packages 500
。这个版本的 OCP 页面上没有办法解决。只好到 ocp 容器和元数据库里找方法。
删除目录
/home/admin/data/files/sys-package
里相应的软件包。删除租户
ocp_meta
的库ocp
下这些表里的相关记录:compute_software_package_meta
,storage_object_meta
(有file_id 信息),storage_object_block
(根据 file_id 删除)。
OCP 上传软件包会先将文件写到文件系统,然后再解析文件写入到元数据库表 storage_object_block
里。这期间写入量还是比较大。如下监控图里可以看出内存的变化增量和磁盘读写 IO 吞吐(OB 2.2.7版本的转储带来的写IO在SYS租户的统计指标里)。同样,删除这个表记录的时候记得加上 limit 100
,并提交。一批一批的删除提交,可以避免报租户内存不足错误(前面配置的租户可用内存很少)。

在没有 OCP 监控之前,使用脚本 dooba.py
监控 OB 是最好的。详细使用方法请参考:OB 社区版性能监控利器 DOOBA (qq.com) 。
创建 OB 集群
1. 输入 集群相关信息
主要是指定集群的 OB 版本、集群名称、服务器信息、相关参数。由于服务器资源很低,所以需要调整多个 OB 参数。

2.查看集群创建任务
提交集群创建后,一定会报错。到 OCP 的任务管理模块中定位失败的原因。

2023-04-06 17:56:04.562 ERROR 46 --- [pool-manual-subtask-executor8,d3fbab939eef4d00,7ef887fbd662] c.a.o.s.task.util.AgentAsyncTaskHelper : failed to execute async task, task token :6fc08a7c-7797-4e88-91f3-8dc4d411d91d, err: OcpAgentError: code = 1500, message = Execute shell command failed: failed to execute command: Command{user=admin, program=sh, outputType=combined, cmd=mysql -h127.1 -P2881 -uroot -e "set ob_query_timeout=1200000000; ALTER SYSTEM BOOTSTRAP REGION 'OCP_META_REGION' ZONE 'zone1' SERVER '10.0.0.62:2882';", timeout=20m0s}, exitCode: 1, output: ERROR 1235 (0A000) at line 1: unit min memory less than __min_full_resource_pool_memory not supported
接下来开始手动修复这个失败任务。这个修复过程跟重建单节点过程比较类似。如果看过早期我分享的手动部署 OB 1.4/2.2 版本的过程,这里的过程就会很熟悉。
3. 手动执行 OB 集群初始化。
[admin@OB02 ~]$ ps -ef|grep observeradmin 12963 1 99 17:55 ? 00:02:49 /home/admin/oceanbase/bin/observer -i ens192 -p 2881 -P 2882 -n obdemo -z zone1 -d /home/admin/oceanbase/store/obdemo -l info -oobconfig_url=http://10.0.0.63:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=ocpmaster&ObRegion=obdemo,rootservice_list=10.0.0.62:2882:2881,config_additional_dir=/data/log1/obdemo/etc2,/data/1/obdemo/etc3,cluster_id=1680747946,use_large_pages=true,cpu_count=16,max_syslog_file_count=3,merge_thread_count=1,write_throttling_trigger_percentage=70,datafile_size=5G,system_memory=3G,memory_limit=10G,memory_chunk_cache_size=256M,minor_freeze_times=500admin 13926 13753 0 17:57 pts/1 00:00:00 grep --color=auto observer[admin@OB02 ~]$[admin@OB02 ~]$ cd oceanbase/
[admin@OB02 oceanbase]$ kill -9 `pidof observer`[admin@OB02 oceanbase]$ sleep 5[admin@OB02 oceanbase]$ tree -L 2 store/store/└── obdemo├── clog -> /data/log1/obdemo/clog├── ilog -> /data/log1/obdemo/ilog├── oob_clog -> /data/log1/obdemo/oob_clog├── slog -> /data/log1/obdemo/slog├── sort_dir -> /data/1/obdemo/sort_dir└── sstable -> /data/1/obdemo/sstable[admin@OB02 oceanbase]$ /bin/rm store/obdemo/*/*
手动启动 observer 进程,加上隐含参数 __min_full_resource_pool_memory=536870912
。
[admin@OB02 oceanbase]$ cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -i ens192 -p 2881 -P 2882 -n obdemo -z zone1 -d /home/admin/oceanbase/store/obdemo -l info -o "obconfig_url='http://10.0.0.63:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=ocpmaster&ObRegion=obdemo',rootservice_list=10.0.0.62:2882:2881,config_additional_dir=/data/log1/obdemo/etc2,/data/1/obdemo/etc3,cluster_id=1680747946,use_large_pages=true,cpu_count=16,max_syslog_file_count=3,merge_thread_count=1,write_throttling_trigger_percentage=70,datafile_size=5G,system_memory=3G,memory_limit=10G,memory_chunk_cache_size=256M,minor_freeze_times=500,__min_full_resource_pool_memory=536870912"
等几秒,查看进程 observer 是否还在。如果不在,就是出错了。
[admin@OB02 oceanbase]$ ps -ef|grep observer |grep -v grepadmin 14899 1 99 18:13 ? 00:00:42 /home/admin/oceanbase/bin/observer -i ens192 -p 2881 -P 2882 -n obdemo -z zone1 -d /home/admin/oceanbase/store/obdemo -l info -o obconfig_url='http://10.0.0.63:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=ocpmaster&ObRegion=obdemo',rootservice_list=10.0.0.62:2882:2881,config_additional_dir=/data/log1/obdemo/etc2,/data/1/obdemo/etc3,cluster_id=1680747946,use_large_pages=true,cpu_count=16,max_syslog_file_count=3,merge_thread_count=1,write_throttling_trigger_percentage=70,datafile_size=5G,system_memory=3G,memory_limit=10G,memory_chunk_cache_size=256M,minor_freeze_times=500,__min_full_resource_pool_memory=536870912
接下来登录 OB 节点,密码是空密码,初始化集群。
[admin@OB02 oceanbase]$ mysql -h127.1 -uroot -P2881 -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 3221225472Enter password:MySQL [(none)]> set ob_query_timeout=1200000000; ALTER SYSTEM BOOTSTRAP REGION 'OCP_META_REGION' ZONE 'zone1' SERVER '10.0.0.62:2882';Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (30.79 sec)
退出重登陆,验证 OB 集群初始化成功。
[admin@OB02 oceanbase]$ mysql -h127.1 -uroot@sys -P2881 -pEnter password:MySQL [(none)]> show databases;+--------------------+| Database |+--------------------+| oceanbase || information_schema || mysql || SYS || LBACSYS || ORAAUDITOR || test |+--------------------+7 rows in set (0.00 sec)MySQL [(none)]>
4. 继续 OCP 任务
当手动将 OB 集群启动后,就可以在 OCP 里将当前失败的 OCP 任务设置为成功。这是 OCP 失败任务处理常用的一个技巧。

然后 OCP 任务就会继续运行。最终集群创建成功。

5. 查看 OB 集群资源
接下来随便浏览一下 OCP 的 OB 集群管理功能。首先看看 OB 集群资源。

观看资源管理界面,可以加深对 OB 的租户原理的理解。

从图中可见这个 OB 服务器内存剩余最大可分配是 5.25 G ,最大可用 CPU 是 11.5。
或者通过下面 SQL 也可以查看。
select a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, (cpu_total-cpu_assigned) cpu_free, round(mem_total/1024/1024/1024) mem_total_gb, round((mem_total-mem_assigned)/1024/1024/1024,2) mem_free_gb, round(disk_total/1024/1024/1024) disk_total_gb, round((disk_total-disk_assigned)/1024/1024/1024) disk_free_gbfrom __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_free | mem_total_gb | mem_free_gb | disk_total_gb | disk_free_gb |+-------+----------------+-----------+----------+--------------+-------------+---------------+--------------+| zone1 | 10.0.0.62:2882 | 14 | 11.5 | 8 | 5.25 | 5 | 0 |+-------+----------------+-----------+----------+--------------+-------------+---------------+--------------+1 row in set (0.00 sec)
虽然二者结果最大可用 CPU 都是 11.5 ,这个结果却是错的。查看已有租户资源分布。
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, round(t2.max_disk_size/1024/1024/1024) max_disk_size , t4.tenant_namefrom __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;+--------------------+------------------+---------+---------+------------+------------+---------------+-------------+| resource_pool_name | unit_config_name | max_cpu | min_cpu | max_mem_gb | min_mem_gb | max_disk_size | tenant_name |+--------------------+------------------+---------+---------+------------+------------+---------------+-------------+| sys_pool | sys_unit_config | 5 | 2.5 | 2 | 2 | 5 | sys |+--------------------+------------------+---------+---------+------------+------------+---------------+-------------+1 row in set (0.01 sec)
系统租户的资源规格最小 CPU 跟 最大 CPU 相差 2.5,实际剩余可分配的 CPU 是 11.5-2.5=9
。将系统租户规格最小 CPU 和最大 CPU 拉平后再次查看剩余资源就对 了。这个原理会导致大家估计 OB 集群可分配的 CPU 资源时会有 2.5 的偏差。
alter resource unit sys_unit_config min_cpu=5 ;<SQL>+-------+----------------+-----------+----------+--------------+-------------+---------------+--------------+| zone | observer | cpu_total | cpu_free | mem_total_gb | mem_free_gb | disk_total_gb | disk_free_gb |+-------+----------------+-----------+----------+--------------+-------------+---------------+--------------+| zone1 | 10.0.0.62:2882 | 14 | 9 | 8 | 6.25 | 5 | 0 |+-------+----------------+-----------+----------+--------------+-------------+---------------+--------------+1 row in set (0.00 sec)
OCP 部署 OBProxy 集群
前面部署 OCP 的时候已经启动了一个 OBProxy,那个是给 OCP 自己用的。业务建议还是单独部署 OBProxy 集群。一般选择在 OB 服务器上部署 OBProxy。
创建 OBProxy 集群
创建 OBProxy 集群 很简单,输入关联的 OB 集群,选择 OB 所在的服务器或者其他服务器都可。
OBProxy 集群指多个 OBProxy 部署在多个服务器上, 主要是管理方便。OBProxy 软件自身并不含有集群的概念,没有高可用功能。OBProxy 的高可用需要借助负载均衡技术,如 F5,LVS,NGINX,HAPROXY 等软硬件产品。

部署后在服务器上可以看到 2 个相关的进程,其中一个 obproxyd
是 OBProxy 的守护进程。
[root@OB02 ~]# ps -ef|grep obproxy |grep -v grepadmin 18734 1 4 18:33 ? 00:04:14 ./bin/obproxy -p 2883 -n OBPROXY -o prometheus_sync_interval=1s,rootservice_cluster_name=obdemo,obproxy_config_server_url=,prometheus_listen_port=2884,enable_metadb_used=false,skip_proxy_sys_private_check=true,log_dir_size_threshold=10G,rootservice_list=10.0.0.62:2881,proxy_mem_limited=2G,enable_full_username=true,enable_proxy_scramble=true,enable_strict_kernel_release=falseadmin 18902 1 0 18:33 ? 00:00:10 /bin/bash ./bin/obproxyd.sh -c checkalive -p 2883 -n OBPROXY
测试 OBProxy
OBProxy 的连接端口是 2883 ,用户名通常要包含集群和租户信息。
[root@OB02 ~]# mysql -h10.0.0.62 -uroot@sys#obdemo -P2883 -p'aaAA11__' -c -A oceanbase -e "select version()"+---------------------------+| version() |+---------------------------+| 5.7.25-OceanBase-v3.2.4.1 |+---------------------------+
OCP 部署 ORACLE 租户

新增租户资源规格


修改 OCP 的资源单元模板
MySQL [ocp]> show tables like '%unit%';+------------------------+| Tables_in_ocp (%unit%) |+------------------------+| ob_unit_spec |+------------------------+1 row in set (0.00 sec)MySQL [ocp]> select * from ob_unit_spec ;+----+---------------------+---------------------+---------+---------------+---------+---------+-------------+-------------+----------+----------+---------------+-----------------+----------+--------+| id | create_time | update_time | creator | name | max_cpu | min_cpu | max_memory | min_memory | max_iops | min_iops | max_disk_size | max_session_num | group | type |+----+---------------------+---------------------+---------+---------------+---------+---------+-------------+-------------+----------+----------+---------------+-----------------+----------+--------+| 1 | 2023-04-06 13:56:47 | 2023-04-06 13:56:47 | NULL | B | 0.25 | 0.25 | 1073741824 | 1073741824 | 250 | 250 | 128849018880 | 75 | basic | SYSTEM || 2 | 2023-04-06 13:56:47 | 2023-04-06 13:56:47 | NULL | LogOnlyNormal | 1.00 | 1.00 | 2147483648 | 2147483648 | 1000 | 1000 | 536870912000 | 300 | logonly | SYSTEM || 3 | 2023-04-06 13:56:47 | 2023-04-06 13:56:47 | NULL | LogOnlySystem | 5.00 | 5.00 | 37580963840 | 37580963840 | 5000 | 5000 | 536870912000 | 1500 | logonly | SYSTEM || 4 | 2023-04-06 13:56:47 | 2023-04-06 13:56:47 | NULL | S0 | 0.50 | 0.50 | 2147483648 | 2147483648 | 500 | 500 | 536870912000 | 150 | standard | SYSTEM || 5 | 2023-04-06 13:56:47 | 2023-04-06 13:56:47 | NULL | S1 | 1.50 | 1.50 | 6442450944 | 6442450944 | 1250 | 1250 | 536870912000 | 375 | standard | SYSTEM || 6 | 2023-04-06 13:56:47 | 2023-04-06 13:56:47 | NULL | S2 | 3.00 | 3.00 | 12884901888 | 12884901888 | 2500 | 2500 | 536870912000 | 750 | standard | SYSTEM || 7 | 2023-04-06 13:56:47 | 2023-04-06 13:56:47 | NULL | S3 | 6.00 | 6.00 | 21474836480 | 21474836480 | 5000 | 5000 | 536870912000 | 1500 | standard | SYSTEM || 8 | 2023-04-06 13:56:47 | 2023-04-06 13:56:47 | NULL | S4 | 12.00 | 12.00 | 42949672960 | 42949672960 | 5000 | 5000 | 536870912000 | 3000 | standard | SYSTEM || 16 | 2023-04-06 20:17:38 | 2023-04-06 20:17:38 | admin | S2C4G | 2.00 | 2.00 | 4294967296 | 4294967296 | 5000 | 128 | 536870912000 | 75 | default | CUSTOM |+----+---------------------+---------------------+---------+---------------+---------+---------+-------------+-------------+----------+----------+---------------+-----------------+----------+--------+9 rows in set (0.00 sec)
update ob_unit_spec set type='CUSTOM' where id=16;commit;
[root@OB03 t-oceanbase-antman]# docker restart ocp
容器资源不高,重启大概需要 1 分钟后,OCP 服务启动成功。
update ob_unit_spec set max_memory=4294967296, min_memory=4294967296, max_cpu=2, min_cpu=2 where name='S1';commit;
最终发现页面上显示的还是老的资源规格或者当改了一个规格后 OCP 上就看不到了。原因不明。
看来是绕不过去了。只好继续创建租户。
创建租户
选用最小的 S1 规格创建租户,OCP 报错,提示
操作OB失败,错误信息: (conn=524289) machine resource 'zone1' is not enough to hold a new unit
报错时符合预期的,可分配的内存不足。
还有个办法,调小 OB 集群的系统保留内存,释放更多的可用内存,等租户创建成功后,再把租户内存规格调小。
mysql -h10.0.0.62 -uroot@sys#obdemo -P2883 -p'aaAA11__' -c -A oceanbase -e "alter system set system_memory='2G';"
此时剩余内存有 6.25 G 。这回应该够了。
+-------+----------------+-----------+----------+--------------+-------------+---------------+--------------+| zone | observer | cpu_total | cpu_free | mem_total_gb | mem_free_gb | disk_total_gb | disk_free_gb |+-------+----------------+-----------+----------+--------------+-------------+---------------+--------------+| zone1 | 10.0.0.62:2882 | 14 | 9 | 8 | 6.25 | 5 | 0 |+-------+----------------+-----------+----------+--------------+-------------+---------------+--------------+1 row in set (0.00 sec)

MySQL [oceanbase]> select gmt_create , module , event, name1 , value1 , name2, value2 from `__all_rootservice_event_history` areh order by gmt_create desc limit 5;+----------------------------+--------------+----------------------+-------+------------------------------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| gmt_create | module | event | name1 | value1 | name2 | value2 |+----------------------------+--------------+----------------------+-------+------------------------------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| 2023-04-06 21:11:09.257661 | root_service | drop_resource_unit | ret | 0 | arg | unit_name:"config_oboracle_zone1_S1_upf", if_exist:true || 2023-04-06 21:11:09.257581 | unit | drop_resource_unit | name | config_oboracle_zone1_S1_upf | | || 2023-04-06 21:11:09.250401 | root_service | create_resource_pool | ret | -4624 | arg | pool_name:"pool_oboracle_zone1_upf", unit:"config_oboracle_zone1_S1_upf", unit_num:1, zone_list:["zone1"], replica_type:0, if_not_exist:false, is_tenant_sys_pool:false || 2023-04-06 21:11:09.193022 | unit | create_resource_unit | name | config_oboracle_zone1_S1_upf | | || 2023-04-06 21:07:58.633907 | root_service | admin_set_config | ret | 0 | arg | {items:[{name:"system_memory", value:"2G", comment:"", zone:"", server:"0.0.0.0", tenant_name:"", exec_tenant_id:1, tenant_ids:[]}], is_inner:false} |+----------------------------+--------------+----------------------+-------+------------------------------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+5 rows in set (0.01 sec)
从 OB 的事件日志表看是 OB 创建资源池报错了,错误号 -4624
, OCP 再报错后就回滚了这个操作。
再从 OCP 里查看 OBSERVER 日志定位到报错日志,看看具体是哪个资源不足。(OCP 这个功能让运维可以不用登录 OB 服务器就能排查问题)。

observer 日志里也没有解释是什么资源不足。明明内存资源足够,为什么还不行。原因不明。
最后调低 OB 集群的系统内存规格再释放 1G 内存出来。
alter system set system_memory='1G';+-------+----------------+-----------+----------+--------------+-------------+---------------+--------------+| zone | observer | cpu_total | cpu_free | mem_total_gb | mem_free_gb | disk_total_gb | disk_free_gb |+-------+----------------+-----------+----------+--------------+-------------+---------------+--------------+| zone1 | 10.0.0.62:2882 | 14 | 9 | 9 | 7.25 | 5 | 0 |+-------+----------------+-----------+----------+--------------+-------------+---------------+--------------+1 row in set (0.01 sec)
后面由于 OCP 创建租户的页面里资源规格还是有异常,于是彻底放弃 OCP 页面创建租户,等产品后续版本修复。
这里采用命令行下建租户方式绕过。在业务 OB 集群里执行。
CREATE resource unit my_unit_config max_cpu=4, min_cpu=4, max_memory='2G', min_memory='2G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size='1024G';CREATE resource pool oboracle_pool unit = 'my_unit_config', unit_num = 1;CREATE tenant oboracle_pool resource_pool_list=('oboracle_pool'), primary_zone='RANDOM',comment 'oracle tenant/instance', charset='utf8' set ob_tcp_invited_nodes='%', ob_compatibility_mode='oracle';
手动创建的租户,等个几分钟后,会被 OCP 采集到,自动加入 OCP 管理。这个功能不错。
OCP 使用租户
接下来在 OCP 里查看租户,有了手动创建的租户。

在后面浏览这个新租户的用户的时候自动弹框提示需要填入 ORACLE 租户的 SYS 密码。手动创建的ORACLE 租户初期 SYS 密码是空。

结束语
OCP 和 OB 的启动内存资源都是可以调整的,OCP 元数据库的租户资源也可以调整。 OCP 里任务失败可以修复后将任务跳过。 定位任务失败原因可以查看 OCP 任务日志,也可以在 OCP 里查看 OB 运行日志。 手动创建的 OB 租户或 OB 集群、OBProxy 集群,都可以通过 OCP 接管。
更多阅读
OceanBase 独立部署高级玩法二 :2C8G版 (qq.com) 5 分钟玩转 OceanBase 社区版 Docker 部署 (qq.com) OB 社区版性能监控利器 DOOBA (qq.com) OceanBase 使用内存大页技术探索 (qq.com)





