OceanBase-安装

news2024/11/25 6:51:28

文章目录

      • 部署规划
      • 机器准备
      • 统一配置
        • hosts设置
        • 设置机器名和静态ip
        • 关闭大页
        • 配置信息查看
        • 时钟源ntp配置(需要所有机器root)
        • 磁盘规划
        • 创建用户
        • 配置limits.conf
        • 配置sysctl.conf
        • 关闭防火墙
        • 关闭SELinux
      • 克隆虚拟机
      • 差异化配置
        • 中控机设置无密码SSH登录目标机器
        • 时钟源ntp配置(需要所有机器root)
      • 部署
        • 下载&解压
        • 安装OBD
        • 安装数据库

部署规划

本文主要是安装部署oceanbase4.0.
按照官方的要求,测试环境要求最低2C8G(实测可用内存最少10g,虚拟机设置12g采购)我准备了几台centos7.9的虚拟机,配置如下

机器名ip地址配置说明
dev3192.168.1.1534C12G 磁盘80g/app/observer 部署OceanBase ,/data作为数据目录
dev4192.168.1.1544C12G 磁盘80g/app/observer 部署OceanBase ,/data作为数据目录
dev5192.168.1.1554C12G磁盘80g/app/observer 部署OceanBase ,/data作为数据目录
dev6192.168.1.1564C12G中控机、OBD、OBProxy、OCP、NTP服务器

名词解析

  • 中控机:存储Oceanbase数据库安装包和集群配置信息的机器
  • 目标机器:安装OceanBase数据库的机器
  • OBD:Oceanbase Deployer,Oceanbase 开源软件的安装部署工具,简称OBD
  • OBProxy:Oceanbase Database Proxy, OceanBase高性能反向代理服务器,简称OBProxy
  • OCP: OceanBase cloud Platform OceanBase运维管理工具,简称OCP

note: 1,ob数据库的安装需要至少50g的磁盘,如果你计划将ob安装到指定目录,必须保证磁盘空间大于50g,我使用虚拟机,手动分区;2,部署ob虚拟机设置内存最少12g(可用内存得10g,cache不算进去);

机器准备

说明几点:

  • 我物理机48G内存,使用VMware虚拟机;

  • 服务统一使用centos 7.9;

  • 虚拟机创建时,最大磁盘填写100g,将虚拟机磁盘存储为单个文件

  • 内存设置12g,11g内存ob在操作时只识别到5.7,最低要求可用8g内存(4.0应该是至少10G内存);

    • 通过echo 3 > /proc/sys/vm/drop_caches 释放缓存
  • cpu设置为2个处理器,每个处理器2核

  • 网络模式为桥接模式

    特别提醒:安装操作系统时磁盘要选手动设置,如果不选手动设置,自动分区,会平分,导致不够50g,手动分区如下:

image-20221201233105120

统一配置

note: 先在一个虚拟机里把所有的配置都配置好,等配置完成后,再复制出来3台,个性化的修改下,省的一个个的配置了。

hosts设置

[root@dev ~]# vim /etc/hosts 
# 添加的内容
192.168.1.153 dev3
192.168.1.154 dev4
192.168.1.155 dev5
192.168.1.156 dev6  
# 保存并退出

设置机器名和静态ip

#修改主机名,先统一为dev
[root@dev ~]# vim /etc/hostname

# 修改为静态ip
[root@dev ~]#  vim /etc/sysconfig/network-scripts/ifcfg-ens33
#替换为以下内容
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7ab82905-739a-4a1a-8784-57f62d25ef32
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.153
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
DNS2=8.8.8.8

关闭大页

#关闭透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled

配置信息查看

# 查看内存
[root@dev ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:             10           1           8           0           1           5
Swap:             5           0           5
#查看磁盘
[root@dev ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 5.3G     0  5.3G    0% /dev
tmpfs                    5.3G     0  5.3G    0% /dev/shm
tmpfs                    5.3G   13M  5.3G    1% /run
tmpfs                    5.3G     0  5.3G    0% /sys/fs/cgroup
/dev/mapper/centos-root   84G  4.2G   80G    5% /
/dev/mapper/centos-home   10G   33M   10G    1% /home
/dev/sda1               1014M  185M  830M   19% /boot
tmpfs                    1.1G  4.0K  1.1G    1% /run/user/42
tmpfs                    1.1G   24K  1.1G    1% /run/user/0
/dev/sr0                 4.4G  4.4G     0  100% /run/media/root/CentOS 7 x86_64

#查看网卡,网卡为ens33
[root@dev ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.153  netmask 255.255.255.0  broadcast 192.168.1.255

时钟源ntp配置(需要所有机器root)

先把所有虚拟机的ntp的server都设置为192.168.1.156,等到虚拟机配置调整完毕,复制出几份以后,再调整156的配置

OceanBase集群中的服务器时间必须保持一致。

  • 不一致会导致无法启动,运行时无主
  • 误差在50ms以下认为是同步状态
  • 最大容忍误差不超过100ms,超过100ms会出现无主情况;
#首先在所有的机器上安装ntp服务(默认有)
[root@dev ~]# yum install ntp ntpdate -y

[root@dev ~]# vim /etc/ntp.conf 
#修改内容如下
#默认Centos提供了4个时间同步服务器,都注释掉
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#以156的ntp服务,作为其他机器的ntp源,prefer优先本地主机
server 192.168.1.156  prefer  
# 保存并退出

# 重启ntp服务端
[root@dev ~]# service ntpd restart

# 设置ntp开启自动启动
[root@dev ~]# chkconfig ntpd on
注意:正在将请求转发到“systemctl enable ntpd.service”。
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.


磁盘规划

生产环境做好划分,测试环境,就自己玩了;

  • /data/ob 为数据盘
  • /redo/ob 存放redo日志(可以不配置,不配置就和数据一起了,注意:配置的话不能放到/data/ob目录下)
  • /app/observer 存放ob数据库的二进制文件和运行日志

创建用户

个人自己玩,直接root即可,如果是生产,最好创建一个账户,并把ob相关的目录授权给该用户;

注意:我直接用root,没有创建用户

# 创建appuser账户
[root@dev ~]# useradd -U appuser -d /home/appuser -s /bin/bash
[root@dev ~]# mkdir -p /home/appuser
[root@dev ~]# sudo chown -R appuser:appuser /home/appuser
# 更改密码
[root@dev ~]# passwd appuser
101790
# 为appuser设置sudo 权限
[root@dev ~]# vim /etc/sudoers
#修改为sudo 的时候不需要密码
%wheel  ALL=(ALL)       NOPASSWD:ALL   # 修改
appuser ALL=(ALL)       NOPASSWD:ALL   #添加

# 查看目录权限
[root@dev ~]# ls -al /home/
总用量 0
drwxr-xr-x.  3 root    root     21 1127 19:40 .
dr-xr-xr-x. 19 root    root    267 1127 19:24 ..
drwx------   5 appuser appuser 128 1127 19:43 appuser
# 将ob的运行目录的所有权改为appuser
[root@dev ~]# chown -R appuser.appuser /data /app /redo

配置limits.conf

调整最大栈空间大小、可打开的最大文件句柄数、core文件大小;(不需要压测的话,不需要调整)

[root@dev ~]# vim /etc/security/limits.conf
# 添加的内容
root soft nofile 655350
root hard nofile 655350
* soft nofile 655350
* hard nofile 655350
* soft stack 20480
* hard stack 20480
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited

# 注意下limits.d 目录下的文件,这里的默认值4096,不更改,这个appuser不会生效
[root@dev ~]#  vim /etc/security/limits.d/20-nproc.conf 
# 所有用户默认为4096,我改成了10240
*          soft    nproc     4096

# 切换到appuser账户,查看下max user processes  是否已经变了
[appuser@dev root]$ ulimit -a

配置sysctl.conf

优化服务器,调整服务器的sysctl.conf,以提高linux系统的性能;(不需要压测的话,开发环境不需要调整)

[root@dev ~]# vim /etc/sysctl.conf
# for oceanbase
## 修改内核异步 I/O 限制 (测试环境,可以只设置这里)
fs.aio-max-nr=1048576

## 网络优化
net.core.somaxconn = 2048
net.core.netdev_max_backlog = 10000 
net.core.rmem_default = 16777216 
net.core.wmem_default = 16777216 
net.core.rmem_max = 16777216 
net.core.wmem_max = 16777216

net.ipv4.ip_local_port_range = 3500 65535 
net.ipv4.ip_forward = 0 
net.ipv4.conf.default.rp_filter = 1 
net.ipv4.conf.default.accept_source_route = 0 
net.ipv4.tcp_syncookies = 0 
net.ipv4.tcp_rmem = 4096 87380 16777216 
net.ipv4.tcp_wmem = 4096 65536 16777216 
net.ipv4.tcp_max_syn_backlog = 16384 
net.ipv4.tcp_fin_timeout = 15 
net.ipv4.tcp_max_syn_backlog = 16384 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_tw_recycle = 1 
net.ipv4.tcp_slow_start_after_idle=0

vm.swappiness = 0
vm.min_free_kbytes = 2097152
# 此处为 OceanBase 数据库的 data 目录
kernel.core_pattern = /data/ob/core-%e-%p-%t
# 保存退出

# 加载配置
[root@dev ~]# sysctl -p
fs.aio-max-nr = 1048576
net.core.somaxconn = 2048
net.core.netdev_max_backlog = 10000
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.ip_local_port_range = 3500 65535
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_slow_start_after_idle = 0
vm.swappiness = 0
vm.min_free_kbytes = 209715
kernel.core_pattern = /data/ob/core-%e-%p-%t

关闭防火墙

#依次执行以下命令关闭防火墙
systemctl disable firewalld 
systemctl stop firewalld
systemctl status firewalld

[root@dev ~]# systemctl disable firewalld 
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@dev ~]# systemctl stop firewalld
[root@dev ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

关闭SELinux

[root@dev ~]# vim /etc/selinux/config 
将配置
SELINUX=enforcing 
改为 
SELINUX=disabled
# 保存并退出

# 更改前的状态
[root@dev ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          disabled
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

# 使生效(重启服务器,或执行以下命令)
[root@dev ~]# setenforce 0
# 重启
[root@dev ~]# reboot
# 重启后的状态
[root@dev ~]# sestatus
SELinux status:                 disabled

克隆虚拟机

关闭虚拟机,将配置好的机器再克隆出来3份(注意,是完整克隆)

差异化配置

每次开启一台虚拟机(ip相同,别同时起,这样一个ssh就搞定了),调整主机名和ip地址,一次设置为153、154、155、156

#修改主机名
[root@dev ~]# vim /etc/host
改为对应的dev3、dev4、dev5
# 修改静态ip
[root@dev ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
# 修改IPADDR
IPADDR=192.168.1.156

中控机设置无密码SSH登录目标机器

ps: 需要拥有目标机器的root用户权限。原理,就是通过ssh-copy-id将本机的密钥复制到目标机器的authorized_keys文件中,让目标机器信任中控机;

可以跳过这3步,复制下面的脚本

  • 检查中控机上是否有密钥存在(新机器铁定没有)

    ls ~/.ssh/id_rsa.pub
    
  • 中控机生成SSH公钥和私钥(执行命令后后一直回车即可)

    [root@dev6 ~]# ssh-keygen -t rsa
    
  • 在中控机器上登录目标机器(需要输入密码,输入密码后,以后就不用再输密码了)

    [root@dev6 ~]# ssh-copy-id root@192.168.1.153
    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
    The authenticity of host '192.168.1.153 (192.168.1.153)' can't be established.
    ECDSA key fingerprint is SHA256:/3F5WaADETxAuquKv63YuXs/bAWZu50NOHetNZCKa9o.
    ECDSA key fingerprint is MD5:f8:c0:de:e0:e8:46:80:2f:af:56:fc:14:d7:78:29:7a.
    Are you sure you want to continue connecting (yes/no)? yes
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    root@192.168.1.153's password: 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'root@192.168.1.153'"
    and check to make sure that only the key(s) you wanted were added.
    # 完成以后,就可以直接免密登录了
    [root@dev6 ~]# ssh root@192.168.1.153
    Last failed login: Sun Nov 27 10:33:46 CST 2022 from 192.168.1.156 on ssh:notty
    There was 1 failed login attempt since the last successful login.
    Last login: Sat Nov 26 21:27:10 2022 from 192.168.1.108
    
#在中控机上做appuser免密登录
[root@dev6 ~]# ssh-copy-id appuser@192.168.1.153
[root@dev6 ~]# ssh-copy-id appuser@192.168.1.154
[root@dev6 ~]# ssh-copy-id appuser@192.168.1.155
[root@dev6 ~]# ssh-copy-id appuser@192.168.1.156

注意,用什么用户部署,就需要这个用户做免密登录,执行类似的ssh-copy-id appuser@192.168.1.156

以上的三步可以封装成脚本

我的root和appuser的密码都一样,shell没有进行id_rsa.pub 校验,每次执行都是重新生成

#!/usr/bin/bash
   SERVERS=("root@192.168.1.153" "root@192.168.1.154" "root@192.168.1.155" "appuser@192.168.1.153" "appuser@192.168.1.154" "appuser@192.168.1.155" "appuser@192.168.1.156")
   PASSWORD="101790"
   keygen() {
   yum -y install expect
   expect -c "
      spawn ssh-keygen -t rsa
      expect {
         *(/root/.ssh/id_rsa):* { send -- \r;exp_continue}
         *(y/n)* { send -- y\r;exp_continue}
         *Enter* { send -- \r;exp_continue}
         *(y/n)* { send -- y\r;exp_continue}
         *Enter* { send -- \r;exp_continue}
         eof {exit 0}
      }
      expect eof
   "
   }
   copy(){
   expect -c "
      set timeout -1
      spawn ssh-copy-id $1
      expect {
         *(yes/no)* { send -- yes\r; exp_continue }
         *password:* { send -- $PASSWORD\r; exp_continue}
         eof {exit 0}
      }
      expect eof
   "
   }
   ssh_copy_id_to_all(){
   keygen ;
   for host in ${SERVERS[@]}
   do
         copy $host
   done
   }
   ssh_copy_id_to_all

时钟源ntp配置(需要所有机器root)

修改中控的ntp源

[root@dev6 ~]# vim /etc/ntp.conf 
#将下面一行
server  192.168.1.156
# 修改为 阿里云的ntp服务,作为中控机的ntp源
server  ntp.aliyun.com    
# 保存并退出

# 重启ntp服务端
[root@dev6 ~]# service ntpd restart
# 查看ntp是否启动成功
[root@dev6 ~]# netstat -anp | grep   ntpd
udp        0      0 192.168.122.1:123       0.0.0.0:*                           12498/ntpd          
udp        0      0 192.168.1.156:123       0.0.0.0:*                           12498/ntpd          
udp        0      0 127.0.0.1:123           0.0.0.0:*                           12498/ntpd          
udp        0      0 0.0.0.0:123             0.0.0.0:*                           12498/ntpd          
udp6       0      0 fe80::20c:29ff:fea2:123 :::*                                12498/ntpd          
udp6       0      0 ::1:123                 :::*                                12498/ntpd          
udp6       0      0 :::123                  :::*                                12498/ntpd          
unix  2      [ ]         DGRAM                    140639   12498/ntpd    

#我们看下ntp.aliyun.com的ip地址是什么
[root@dev6 ~]# ping ntp.aliyun.com
PING ntp.aliyun.com (203.107.6.88) 56(84) bytes of data.
64 bytes from 203.107.6.88 (203.107.6.88): icmp_seq=1 ttl=53 time=17.1 ms
#我们看下ntp 服务的源也是203.107.6.88 ,说明配置成功
[root@dev6 ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 203.107.6.88    100.107.25.114   2 u    3   64    3   20.746  -145.90   0.787

#刚配置完,并没有同步
[root@dev6 ~]# ntpstat
unsynchronised
  time server re-starting
   polling server every 8 s
#同步成功以后   
[root@dev6 ~]# ntpstat
synchronised to NTP server (203.107.6.88) at stratum 3
   time correct to within 26 ms
   polling server every 64 s   

在目标机器开启NTP客户端服务

ps: NTP 服务端服务启动后,您需要等待 5 分钟再开启 NTP 客户端服务。否则系统会提示 no server suitable for synchronization found

使用ntpdate手动立即同步

# 修改客户端时间
[root@dev3 ~]# date -s "2022-10-30 10:27:16"
20221030日 星期日 10:27:16 CST
# 查看修改后的时间
[root@dev3 ~]# date
20221030日 星期日 10:27:32 CST
#使用ntpdate立即同步ntp服务器时间
[root@dev3 ~]# ntpdate 192.168.1.156
27 Nov 15:51:50 ntpdate[14021]: step time server 192.168.1.156 offset 2438624.076604 sec
# 同步后的时间
[root@dev3 ~]# date
20221127日 星期日 15:52:25 CST

注意:以上只是同步一次时间,可以设置为定时任务,每天进行同步

[root@dev3 ~]# crontab -e
0 12 * * * /usr/sbin/ntpdate 192.168.1.156

自动同步(以ntp作为客户端)

[root@dev3 ~]#  vim /etc/ntp.conf
#修改内容如下
server 192.168.1.156  prefer 
# 保存并退出

# 启动ntpd服务
#[root@dev3 ~]# service ntpd restart
# 查看ntp的状态,可以看到已经指向了192.168.1.156
[root@dev3 ~]# ntpstat
synchronised to NTP server (192.168.1.156) at stratum 4
   time correct to within 37 ms
   polling server every 128 s

部署

从4.0开始,ob提供了统一的安装包all-in-one package。我们可以通过这个包一次性完成OBD、OceanBase数据库、OBProxy、obagent等的安装。

下载&解压

在dev6上下载

# 下载
[root@dev6 ~]# cd /app/
[root@dev6 app]# wget https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/oceanbase-all-in-one/7/x86_64/oceanbase-all-in-one.4.0.0.0-beta-100120221102135736.el7.x86_64.tar.gz

#解压
[root@dev6 app]# tar zxvf oceanbase-all-in-one.4.0.0.0-beta-100120221102135736.el7.x86_64.tar.gz

安装OBD

[root@dev6 app]# cd oceanbase-all-in-one/bin/
[root@dev6 bin]# ls
env.sh  install.sh  uninstall.sh
#安装
[root@dev6 bin]# ./install.sh 
# 检验obd
[root@dev6 bin]# which obd
/root/.oceanbase-all-in-one/obd/usr/bin/obd
[root@dev6 bin]# which obclient
/root/.oceanbase-all-in-one/obclient/u01/obclient/bin/obclient

安装数据库

安装成功以后,在 ~/.oceanbase-all-in-one/conf/autodeploy目录下会有相关的配置文件,我们重点看下autodeploy目录下的配置文件。

  • single-example.yaml单机版部署配置文件
  • default-example.yaml集群版部署配置文件

我部署的是集群版

[root@dev6 autodeploy]# cd ~/.oceanbase-all-in-one/conf/autodeploy
[root@dev6 autodeploy]# vim default-example.yaml 
# 说明
##  如果使用root部署,就不需要再改user这里了,我用appuser部署,就改了(root之前已经做了免密登录)
user:
   username: appuser
   password: 101790
## 修改部署的服务器和相关目录
oceanbase-ce:
  servers:
    - name: server1 # 起的名字,在后面可以根据名字配置不同的配置,后面只配置了zone
      # Please don't use hostname, only IP can be supported
      ip: 192.168.1.153
    - name: server2
      ip: 192.168.1.154
    - name: server3
      ip: 192.168.1.155
  global:
    # ob 部署的目录
    home_path: /app/observer
    # 数据目录,数据目录一定要是空的,存储的是sstable的文件
    data_dir: /data/ob
    # ob的 clog, ilog, and slog. 不配置在data目录,测试就放一起了
    #redo_dir: /redo/ob
    # 前面找的网卡名称,跟servers里指定的ip对应的网卡,如果网卡不同,可以参考zone那里,每个server填写
    devname: ens33    
    #进程observer对应的链接端口,默认2181
    #mysql_port: 2881 
    #observer跟其他进程之间的rpc通信端口,默认2182
    #rpc_port: 2882 
    #ob设置的最大内存,最小不少于8G
    #memory_limit: 8G 
    # OB留给集群内部用的保留内存,会占用memory_limit
    #system_memory: 4G
    #运行日志的级别,默认日志级别是INFO,支持 DEBUG, TRACE, INFO, WARN, USER_ERR, ERROR 六种级别
    #syslog_level: WARN
    # 日志是否覆盖,最多保留max_syslog_file_count 数量的日志文件
    #enable_syslog_recycle: TRUE
    #日志文件数量,这里默认保留最多 10 个历史运行日志文件
    #max_syslog_file_count: 10
    #OB集群的超级管理员root@sys的密码,默认为空
    #root_password: 密码
    #OBProxy连接OB集群使用的账户名(proxyro)的密码,默认为空
    #proxyro_password: 密码
  server1:
    zone: zone1 # 逻辑机房的概念
  server2:
    zone: zone2
  server3:
    zone: zone3
obproxy-ce:
  depends:
    - oceanbase-ce
  servers:
    - 192.168.1.156
  global:
    # The working directory for obproxy. Obproxy is started under this directory. This is a required field.
    home_path: /app/obproxy
    skip_proxy_sys_private_check: true
    enable_strict_kernel_release: false
obagent:
  depends:
    #依赖的配置,会自动复用集群的`proxyro`密码、集群名等
    - oceanbase-ce 
  servers:
    - name: server1
      # Please don't use hostname, only IP is supported.
      ip: 192.168.1.153
    - name: server2
      ip: 192.168.1.154
    - name: server3
      ip: 192.168.1.155
  global:
    # The working directory for obagent. obagent is started under this directory. This is a required field.
    home_path: /app/obagent
#prometheus:
#  servers:
#    - 192.168.1.156
#  global:
#    home_path: /app/prometheus    
#grafana:
#  servers:
#    - 192.168.1.156
#  depends:
#    - prometheus
#  global:
#    home_path: /app/grafana
#    login_password: oceanbase    

部署

#在  ~/.oceanbase-all-in-one/conf/autodeploy  目录下执行
[root@dev6 autodeploy]$ obd cluster autodeploy obtest -c default-example.yaml

友情提示:deploy name 使用_命名不要用-命名,否则在ocp中无法显示,ob的命名规范是_

# 如果部署过程中失败,[ERROR] Deploy "obdev" is deployed. You could not deploy an deployed cluster. 
# 通过obd cluster list 查看部署的集群,然后,删除对应的配置
[root@dev6 autodeploy]# obd cluster list
+------------------------------------------------------+
|                     Cluster List                     |
+--------+---------------------------+-----------------+
| Name   | Configuration Path        | Status (Cached) |
+--------+---------------------------+-----------------+
| obtest | /root/.obd/cluster/obtest | deployed        |
| obdev  | /root/.obd/cluster/obdev  | deployed        |
+--------+---------------------------+-----------------+
#删除
[root@dev6 autodeploy]# rm -rf ~/.obd/cluster/obtest

部署成功后,default-example.yaml会复制到/root/.obd/cluster/obtest 目录下,并改名,以后集群读取的就是这个文件了

我们看下obd的语法

#我们可以一层层的使用 -help获取对应命令的帮助文档
[root@dev6 autodeploy]# obd cluster autodeploy -help
Usage: obd cluster autodeploy <deploy name> [options]
- deploy name 为集群名称,友情提示下,如果
Options:
  -c CONFIG, --config=CONFIG  # 指定配置文件
                        Path to the configuration file.
  -f, --force           Force autodeploy, overwrite the home_path.
  -C, --clean           Clean the home path if the directory belong to you.
  -U, --unuselibrepo, --ulp
                        Disable OBD from installing the libs mirror
                        automatically.
  -A, --auto-create-tenant, --act
                        Automatically create a tenant named `test` by using
                        all the available resource of the cluster.
  --force-delete        Force delete, delete the registered cluster.
  -s, --strict-check    Throw errors instead of warnings when check fails.
  -h, --help            Show help and exit.
  -v, --verbose         Activate verbose output.

image-20221202164115831

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【推送位置苹果群发iMessage推】如果Windows和Linux实现不同的传输层协议,那末因为数据格式的不同

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

Qt-Web混合开发-QWebEngineView加载网页最小示例(2)

Qt-Web混合开发-QWebEngineView加载网页最小示例 2&#x1f30d; 文章目录Qt-Web混合开发-QWebEngineView加载网页最小示例 2&#x1f30d;1、概述&#x1f310;2、实现效果&#x1f9ed;3、实现功能&#x1f685;4、关键代码&#x1f69a;5、源代码&#x1f680;更多精彩内容&…

高斯定理的理解——工程电磁场 P2~P5

证明&#xff1a;静电场是无旋场 根据斯托克斯公式上式等于 电位的引入 由于静电场是无源场&#xff0c;我们可以得到 又因为 再结合电场的物理意义&#xff0c;我们可以定义 功函数表达式的化简 原先功函数表达式 高斯定律的理解 不管是导体还是电解质&#xff0c;对于电…

【图像处理】FAST、BRIEF、ORB算法原理

整理FAST、BRIEF、ORB算法的原理。 FAST算法 一、FAST简介 FAST&#xff08;features from accelerated segment test&#xff09;是一种角点检测算法&#xff0c;可以用于提取特征点&#xff0c;后来也长用于目标跟踪等计算机视觉任务中。FAST角点检测算法最初由 Edward Ro…

LL(1)文法分析程序

一、实验目的 设计一个非递归预测分析器&#xff0c;实现对表达式语言的分析&#xff0c;理解自上而下语法 分析方法的基本思想&#xff0c;掌握设计LL&#xff08;&#xff09;文法分析程序设计的基本原理和方法。 根据给定LL&#xff08;1&#xff09;分析表&#xff0c;输入…

22-31-spark-核心编程-RDD概念及理解

22-spark-核心编程-RDD概念&#xff1a; 分布式计算基础测试&#xff1a; big-data-study\Spark-demo\src\main\java\spark\core\com\zh\test02 Spark 核心编程 Spark 计算框架为了能够进行高并发和高吞吐的数据处理&#xff0c;封装了三大数据结构&#xff0c;用于处理不同的…

vscode 离线安装ssh

首先打开官方插件地址&#xff1a;https://marketplace.visualstudio.com/VSCode 然后输入ssh 下载这两个插件&#xff1a; 安装这两个插件&#xff1a; 这样便在windows下安装成功了ssh。 接下来需要在服务器端进行配置。 首先查看windows上的vscode版本&#xff1a; 这…

Arduino 崩溃或挂起的 7 种方式及如何防止

Arduino 崩溃或挂起的 7 种方式&#xff08;以及如何防止它发生&#xff09; 作者&#xff1a;Chris in Arduino 查看原文 为了帮助防止Arduino崩溃或挂起&#xff0c;我进行了一系列实验&#xff0c;以确定Arduino崩溃&#xff0c;挂起&#xff0c;重置&#xff0c;冻结&am…

5.大型电商项目之创建前端展示模板并调用

1. templates前端模板的使用 1.1 templates前端模板的创建 首先&#xff0c;我们页面很多地方是相似的&#xff0c;这里就创建一个基础模板&#xff0c;不同的地方&#xff0c;对模板内容的block进行修改即可&#xff1b;对于相同的地方&#xff0c;我们就使用include包含即可…

B. Hossam and Friends #837 div2

Problem - B - Codeforces 题意就是给你m个数对&#xff0c;这两个人不是好朋友&#xff0c;其他的所有人都是好朋友&#xff0c;问1~n里面有多少个区间里面所有数都是好朋友 分析: 这题我分析的没错&#xff0c;但是在计算区间的时候&#xff0c;想的复杂了&#xff0c;用模…

JS中,a标签里的javascript:;和 javascript:void(0)还有##

目录 1. javascript:;【常用】点击链接之后不会刷新页面&#xff0c;不会跳转链接&#xff0c;也不会传递参数 2. javascript:void(0) 【少用】点击链接后不会刷新页面&#xff0c;不会跳转链接&#xff0c;也不会传递参数 3. a标签中的# 点击链接后会刷新页面…

Spring Batch批处理-作业Job简介

引言 书接上篇Spring Batch 批处理入门案例解析&#xff0c;上篇带小伙伴们写了一个Spring Batch 入门案例解析&#xff0c;本篇就开始批处理正文啦&#xff0c;今天先对作业Job做个全面了解。 作业介绍 目前很多项目都流程的概念&#xff0c;比如web应用&#xff0c;集成应…

Java基础03_数据类型

数据类型 强类型语言 要求变量的使用要严格符合规定&#xff0c;所有的变量必须先定义后使用&#xff1b;安全性高但是速度低&#xff1b; 弱类型语言 例如&#xff1a;‘12’ 3 123 或者 ‘12’ 3 ‘123’ 在强类型语言中是有明显的区别的。而在弱类型语言中是不区分的…

算符优先分析器的构造

一、实验目的 &#xff08;1&#xff09;理解自底向上的语法分析的基本思想。 &#xff08;2&#xff09;理解算符优先文法的概念。 &#xff08;4&#xff09;掌握算符优先分析器的工作原理和工作流程。 &#xff08;3&#xff09;掌握算符分析表和优先函数的构造。 二、实验…

函数式接口

Lambda表达式的本质&#xff1a;作为函数式接口的实例 如果一个接口中&#xff0c;只声明一个抽象方法&#xff0c;则此接口就称为函数式接口 FunctionalInnterface public interface MyInterface{void method1(); }要想用Lambda表达式就一定要在函数式接口的条件下使用 相当于…

微信小程序直播状态接口如何获取

现如今&#xff0c;小程序直播非常的红火&#xff0c;越来越多的商家开通了微信小程序直播&#xff0c;但是在直播的过程中&#xff0c;偶尔会出现一些小问题&#xff0c;如禁播&#xff0c;异常状态等等&#xff0c;下面小编就来介绍一下微信小程序直播状态接口如何获取。 一、…

echarts5.4立体柱状图

资源下载&#xff1a;https://www.jsdelivr.com/package/npm/echarts 效果图&#xff1a; 借鉴资源&#xff1a;echarts 如何绘制三维 3D 立体柱状图 - 简书 代码示例&#xff1a; <!DOCTYPE html> <head><meta charset"utf-8"><title>ECh…

基于51单片机的智能小车系统设计

原理图&#xff1a; 程序运行图&#xff1a; 部分程序&#xff1a; /******************************************************************************* * 文件名称&#xff1a;main.c * 说明&#xff1a;本文件为小车控制的主函数 * 功能&…

分布式websocket探索

单体式架构 根据基于golang的gin框架开发的web项目所展开 如果一个Web项目采用单体式架构且配备了websocket通讯的功能&#xff0c;那么在单个实例中是能够正常运行的 在我的项目中&#xff0c;用户可以通过websocket来进行实时通讯和实时消息通知&#xff0c;同时如果在web业务…

AcrelEMS-IDC数据中心综合能效管理系统解决方案-Susie 周

1、概述 安科瑞电气紧跟数据中心发展形式&#xff0c;推出AcrelEMS-IDC数据中心综合能效管理解决方案&#xff0c;包含有电力监控、动环监控、消防监控、能耗统计分析、智能照明控制以及新能源监测几个子系统。集成了变配电监测、电源备自投、电气接点测温、智能照明控制、电能…