暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

实践练习二(必选):手动部署 OceanBase 集群

原创 kylin2021 2022-03-03
1807

手动部署 OceanBase 集群

1、引言

1.1关于此文档

本文档主要介绍在 RHEL 8.5 环境中,手动部署一个 OB 单副本集群,包括一个 OBProxy 节点。掌握 OceanBase 集群的手动部署技能,理解进程的相关目录、集群初始化、OBProxy和 OB 集群关系等。

1.2 参考资料

  1. 社区版官网-文档-学习中心-入门教程:如何手动部署 OceanBase 集群
  2. 社区版官网-博客-入门实战:如何手动部署 OceanBase 集群
  3. 教程视频:【2-4-如何手动部署OceanBase三副本集群.mp4】

2、安装前准备

2.1 部署规划

OceanBase 数据库以集群形态运行,生产环境中最小规模为 3 台服务器(节点)。整个集群里,业务数据会有三份,所以也叫三副本。 此次练习手动部署单副本单节点 OceanBase 集群,即在一台服务上部署OBSERVER、OBPROXY、OBCLIENT。

2.2 机器信息

机器类型 VMware虚拟机
IP 10.10.10.112
网卡名 ens160
OS Red Hat Enterprise Linux release 8.5 (Ootpa)
CPU 6C
内存 总内存 12G
磁盘1 /dev/nvme0n2 50G
磁盘2 /dev/nvme0n3 50G

2.3 初始化服务器环境

OceanBase 数据库是单进程软件,使用时需要访问网络、打开多个文件以及开启很多 TCP 连接,所以需要修改内核参数和用户会话设置。

2.3.1 内核参数调整

参考如下命令修改配置文件:

cat >> /etc/sysctl.conf <<EOF # 安装 OceanBase 数据库 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 vm.max_map_count=655360 fs.aio-max-nr=1048576 EOF
复制

注意:在4.12之后的Linux内核已移除tcp_tw_recycle内核参数,故需要注释或删除。

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4396e46187ca5070219b81773c4e65088dac50cc

https://github.com/torvalds/linux/commit/4396e46187ca5070219b81773c4e65088dac50cc

执行 sysctl -p命令使参数生效。

image20220303101110584.png

2.3.2 会话变量设置

通过配置 limits.conf 限制修改会话限制。 OceanBase 数据库的进程涉及的限制包括:线程最大栈空间大小(Stack)、最大文件句柄数(Open Files)和 core 文件大小(Core File Size)。

将会话级别的最大栈空间大小设置为 unlimited,最大文件句柄数设置为 655350,Core 文件大小设置为 unlimited 。 如果已有设置值低于这个设置值,则按照下述命令修改 /etc/security/limits.conf 配置文件。

cat >> /etc/security/limits.conf <<EOF * soft nofile 655360 * hard nofile 655360 * soft nproc 655360 * hard nproc 655360 * soft core unlimited * hard core unlimited * soft stack unlimited * hard stack unlimited EOF
复制

退出当前会话,重新登录。执行 ulimit -a ,查看配置是否生效:

image20220303101808817.png

2.3.3 关闭防火墙和 SELinux

  • 关闭防火墙

查看防火墙状态。执行命令 systemctl status firewalld ,如果当前防火墙状态为 inactive,则不需要关注。若当前防火墙状态为 active,则需要永久关闭。

image20220303102052368.png

关闭防火墙命令

systemctl disable firewalld systemctl stop firewalld systemctl status firewalld
复制

image20220303102244249.png

  • 关闭SELinux

修改 SELinux 配置文件中的 SELINUX 选项。配置文件修改后需等到重启主机后才可生效,通过命令 /usr/sbin/sestatus 查看。

image20220303103202571.png

image20220303103456304.png

2.3.4 配置时间同步服务

OceanBase 数据库是分布式数据库产品,是一个集群软件,对各个节点之间的时间同步性有要求。技术上要求所有节点之间的时间误差需控制在 50ms 以内。实际生产环境中为了稳定性和性能考虑,建议时间误差控制在 10ms 以内。

chrony 配置说明

vi /etc/chrony.conf # server 后面跟时间同步服务器 # 使用 pool.ntp.org 项目中的公共服务器。按 server 配置,理论上您想添加多少时间服务器都可以。 # 或者使用 阿里云的 ntp 服务器 # Please consider joining the pool (http://www.pool.ntp.org/join.html). server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp.aliyun.com minpoll 4 maxpoll 10 iburst server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst server ntp1.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp10.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst # 如果是测试环境,没有时间同步服务器,那就选取一台配置为时间同步服务器。 # 如果选中的是本机,则取消下面 server 注释 #server 127.127.1.0 # 根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿调整。 driftfile /var/lib/chrony/drift # chronyd 根据需求减慢或加速时间调整, # 在某些情况下系统时钟可能漂移过快,导致时间调整用时过长。 # 该指令强制 chronyd 调整时期,大于某个阀值时步进调整系统时钟。 # 只有在因 chronyd 启动时间超过指定的限制时(可使用负值来禁用限制)没有更多时钟更新时才生效。 makestep 1.0 3 # 将启用一个内核模式,在该模式中,系统时间每 11 分钟会拷贝到实时时钟(RTC)。 rtcsync # Enable hardware timestamping on all interfaces that support it. # 通过使用 hwtimestamp 指令启用硬件时间戳 #hwtimestamp eth0 #hwtimestamp eth1 #hwtimestamp * # Increase the minimum number of selectable sources required to adjust # the system clock. #minsources 2 # 指定一台主机、子网,或者网络以允许或拒绝 NTP 连接到扮演时钟服务器的机器 #allow 192.168.0.0/16 #deny 192.168/16 # 即使没有同步到时间源,也要服务时间 local stratum 10 # 指定包含 NTP 验证密钥的文件。 #keyfile /etc/chrony.keys # 指定日志文件的目录。 logdir /var/log/chrony # Select which information is logged. #log measurements statistics tracking
复制

常用命令

查看时间同步活动 chronyc activity 查看时间服务器 chronyc sources 查看同步状态 chronyc sources -v 校准时间服务器: chronyc tracking
复制

2.3.5 配置安装用户

创建用户 admin 并授予 sudo 权限。验证是否生效,需切换到 admin 用户下,执行命令:sudo date 。输入密码后查看返回结果。

image20220303104528579.png

2.3.6 磁盘文件系统划分

OceanBase 数据库读写磁盘主要是三类文件:

  • 运行日志

    在启动目录下的 log 目录里。主要记录进程 observer 的运行日志、选举服务的运行日志和 rootservice 的运行日志。主要读写特点是顺序写。

  • 数据文件

    主要是指数据文件 block_file ,一次性初始化大小,后面可以在线扩容,但是不能缩容。主要读写特点是随机读、顺序写。偶尔密集的随机写。

  • 事务日志文件

    主要是指事务和 sstable 相关的日志 ,包括 clogilogslog 等。主要读写特点是顺序写。

本文对 /dev/nvme0n2/dev/nvme0n3使用 LVM 技术,划分出两个 LV 出来,一个给数据文件用,一个给日志文件。

常用的LVM部署命令

功能/命令 物理卷管理 卷组管理 逻辑卷管理
扫描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
显示 pvdisplay vgdisplay lvdisplay
删除 pvremove vgremove lvremove
扩展 vgextend lvextend
缩小 vgreduce lvreduce

划分、格式化、挂载磁盘

# LVM划分裸磁盘 [root@obce01 ~]# pvcreate /dev/nvme0n2 /dev/nvme0n3 Physical volume "/dev/nvme0n2" successfully created. Physical volume "/dev/nvme0n3" successfully created. [root@obce01 ~]# vgcreate ob_data /dev/nvme0n2 Volume group "ob_data" successfully created [root@obce01 ~]# vgcreate ob_redo /dev/nvme0n3 Volume group "ob_redo" successfully created [root@obce01 ~]# lvdisplay /dev/ob_data/data --- Logical volume --- LV Path /dev/ob_data/data LV Name data VG Name ob_data LV UUID YHHfLl-T5QF-Gqwc-krr3-zHfZ-KDn1-YZJy1v LV Write Access read/write LV Creation host, time obce01, 2022-03-03 11:18:27 +0800 LV Status available # open 1 LV Size <50.00 GiB Current LE 12799 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 [root@obce01 ~]# lvdisplay /dev/ob_redo/redo --- Logical volume --- LV Path /dev/ob_redo/redo LV Name redo VG Name ob_redo LV UUID NKPI37-o6Rr-ltve-3qpt-AAQP-lqcV-ZoE689 LV Write Access read/write LV Creation host, time obce01, 2022-03-03 11:18:40 +0800 LV Status available # open 1 LV Size <50.00 GiB Current LE 12799 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:3 [root@obce01 ~]# lvcreate -n data -l 12799 ob_data Logical volume "data" created. [root@obce01 ~]# lvcreate -n redo -l 12799 ob_redo Logical volume "redo" created. # 格式化磁盘并创建文件系统 [root@obce01 ~]# mkfs.ext4 /dev/ob_data/data mke2fs 1.45.6 (20-Mar-2020) Creating filesystem with 13106176 4k blocks and 3276800 inodes Filesystem UUID: 7bf86d2b-2951-44f2-883a-d164d88f7077 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424 Allocating group tables: done Writing inode tables: done Creating journal (65536 blocks): done Writing superblocks and filesystem accounting information: done [root@obce01 ~]# mkfs.ext4 /dev/ob_redo/redo mke2fs 1.45.6 (20-Mar-2020) Creating filesystem with 13106176 4k blocks and 3276800 inodes Filesystem UUID: a4c7ef7a-6b0d-4898-b7b7-0ee509d14fb0 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424 Allocating group tables: done Writing inode tables: done Creating journal (65536 blocks): done Writing superblocks and filesystem accounting information: done # 挂载磁盘 [root@obce01 ~]# mkdir /data /redo [root@obce01 ~]# mount /dev/ob_data/data /data/ [root@obce01 ~]# mount /dev/ob_redo/redo /redo [root@obce01 ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 5.9G 0 5.9G 0% /dev tmpfs tmpfs 5.9G 0 5.9G 0% /dev/shm tmpfs tmpfs 5.9G 9.0M 5.9G 1% /run tmpfs tmpfs 5.9G 0 5.9G 0% /sys/fs/cgroup /dev/mapper/rhel-root xfs 45G 4.8G 41G 11% / /dev/nvme0n1p1 xfs 1014M 229M 786M 23% /boot tmpfs tmpfs 1.2G 0 1.2G 0% /run/user/0 /dev/mapper/ob_data-data ext4 49G 53M 47G 1% /data /dev/mapper/ob_redo-redo ext4 49G 53M 47G 1% /redo # 添加自动挂载配置 [root@obce01 ~]# echo "/dev/ob_data/data /data ext4 defaults 0 0" >> /etc/fstab [root@obce01 ~]# echo "/dev/ob_redo/redo /redo ext4 defaults 0 0" >> /etc/fstab [root@obce01 ~]# umount /data /redo [root@obce01 ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 5.9G 0 5.9G 0% /dev tmpfs tmpfs 5.9G 0 5.9G 0% /dev/shm tmpfs tmpfs 5.9G 9.0M 5.9G 1% /run tmpfs tmpfs 5.9G 0 5.9G 0% /sys/fs/cgroup /dev/mapper/rhel-root xfs 45G 4.8G 41G 11% / /dev/nvme0n1p1 xfs 1014M 229M 786M 23% /boot tmpfs tmpfs 1.2G 0 1.2G 0% /run/user/0 [root@obce01 ~]# mount -a [root@obce01 ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 5.9G 0 5.9G 0% /dev tmpfs tmpfs 5.9G 0 5.9G 0% /dev/shm tmpfs tmpfs 5.9G 9.0M 5.9G 1% /run tmpfs tmpfs 5.9G 0 5.9G 0% /sys/fs/cgroup /dev/mapper/rhel-root xfs 45G 4.8G 41G 11% / /dev/nvme0n1p1 xfs 1014M 229M 786M 23% /boot tmpfs tmpfs 1.2G 0 1.2G 0% /run/user/0 /dev/mapper/ob_data-data ext4 49G 53M 47G 1% /data /dev/mapper/ob_redo-redo ext4 49G 53M 47G 1% /redo
复制

3、手动部署 OceanBase 集群

软件包地址可根据 OS 版本自行选择。下载地址

wget https://mirrors.aliyun.com/oceanbase/community/stable/el/8/x86_64/oceanbase-ce-3.1.2-10000392021123010.el8.x86_64.rpm
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/8/x86_64/oceanbase-ce-libs-3.1.2-10000392021123010.el8.x86_64.rpm
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/8/x86_64/obclient-2.0.0-2.el8.x86_64.rpm
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/8/x86_64/libobclient-2.0.0-2.el8.x86_64.rpm
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/8/x86_64/obproxy-3.2.0-1.el8.x86_64.rpm
复制

3.1 安装 OceanBase 软件包

手动部署 OceanBase 集群时需要安装 OceanBase 数据库的 OBSERVER 软件。

image20220303122424467.png

软件包默认安装目录是:/home/admin/oceanbase。目录结构如下:

image20220303122512195.png

3.2 初始化数据目录

手动部署时,OceanBase 节点上的相关目录都需要手动创建(注意目录权限问题)。

sudo chown -R admin:admin /data/ /redo/ mkdir -p ~/oceanbase/store/obcetest /data/obcetest/{sstable,etc3} /redo/obcetest/{clog,ilog,slog,etc2} for f in {clog,ilog,slog,etc2}; do ln -s /redo/obcetest/$f ~/oceanbase/store/obcetest/$f ; done for f in {sstable,etc3}; do ln -s /data/obcetest/$f ~/oceanbase/store/obcetest/$f; done
复制

初始化后的目录结构(lost+found目录已删除):

image20220303123635770.png

3.3 启动 OBSERVER 进程

# ob动态库加入环境变量 echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase/lib' >> ~/.bash_profile . ~/.bash_profile # 启动 OBSERVER 进程 cd ~/oceanbase && bin/observer -i ens160 -p 2881 -P 2882 -z zone1 -d ~/oceanbase/store/obcetest -r '10.10.10.112:2882:2881' -c 20220303 -n obcetest -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=40G,stack_size=1536K,config_additional_dir=/data/obcetest/etc3;/redo/obcetest/etc2" -d ~/oceanbase/store/obcetest # 查看 OBSERVER 进程状态,主要看端口监听是否正常 netstat -ntlp | grep 288 ps -ef|grep observer
复制

image20220303124848301.png

3.4 集群自举(初始化)

当 OceanBase 集群节点都正常启动,并且监听正常时,您可连接到任一节点(通过 2881 端口直连),进行自举(bootstrap 集群初始化)操作。 初始密码是空。

安装obclient

[admin@obce01 obsoft]$ sudo rpm -ivh libobclient-2.0.0-2.el8.x86_64.rpm obclient-2.0.0-2.el8.x86_64.rpm [sudo] password for admin: warning: libobclient-2.0.0-2.el8.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID e9b4a7aa: NOKEY Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:libobclient-2.0.0-2.el8 ################################# [ 50%] 2:obclient-2.0.0-2.el8 ################################# [100%] [admin@obce01 obsoft]$
复制

登录数据库并进行集群bootstrap

obclient -h 10.10.10.112 -u root -P 2881 -p -c -A set session ob_query_timeout=1000000000; alter system bootstrap ZONE 'zone1' SERVER '10.10.10.112:2882'; obclient -h 10.10.10.112 -u root@sys -P 2881 -p -c -A
复制

image20220303130457006.png

3.5 设置相关密码

  • 集群管理员(root@sys)密码

    默认集群管理员(root@sys)的密码为空,这里需要设置一个密码。

    alter user root identified by 'admin123' ;
    复制
  • OBPROXY 用户(proxyro)密码

    默认 OBPROXY 连接 OceanBase 集群时使用用户 proxyro 。该用户不存在,需要手动创建。

    grant select on oceanbase.* to proxyro identified by 'admin123' ;
    复制

image20220303130819060.png

3.6 安装 OBPROXY 软件包

手动部署时需要安装 OceanBase 数据库的 OBPROXY 软件。

image20220303130956181.png

3.7 启动 OBPROXY 进程

启动 OBPROXY 进程推荐放在软件安装目录,进程 obproxy 会在该目录下生成目录 etc 用以保存 OBPROXY 的运行参数,以及目录 log 用以保存运行日志。

[admin@obce01 ~]$ cd ~/obproxy-3.2.0/ && bin/obproxy -r "10.10.10.112:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c obcetest bin/obproxy -r 10.10.10.112:2881 -p 2883 -o enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false -c obcetest rs list: 10.10.10.112:2881 listen port: 2883 optstr: enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false cluster_name: obcetest [admin@obce01 obproxy-3.2.0]$ ps -ef|grep obproxy admin 2776 1 3 13:16 ? 00:00:00 bin/obproxy -r 10.10.10.112:2881 -p 2883 -o enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false -c obcetest admin 2801 1922 0 13:16 pts/1 00:00:00 grep --color=auto obproxy [admin@obce01 obproxy-3.2.0]$
复制
  • 检查 OBPROXY 监听是否正常

    进程 obproxy 默认会监听2个端口:2883 和 2884。

    [admin@obce01 obproxy-3.2.0]$ netstat -ntlp |grep obproxy (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 0.0.0.0:2883 0.0.0.0:* LISTEN 2776/bin/obproxy tcp 0 0 0.0.0.0:2884 0.0.0.0:* LISTEN 2776/bin/obproxy [admin@obce01 obproxy-3.2.0]$
    复制
  • 登录 OBPROXY 修改密码

    • 登录 OBPROXY

      登录用户名:root@proxysys,端口:2883,初始密码:空。

      [admin@obce01 obproxy-3.2.0]$ obclient -h 10.10.10.112 -u root@proxysys -P 2883 -p Enter password: Welcome to the OceanBase. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.25 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]> show proxyconfig like '%sys_password%'; +------------------------+-------+--------------------------------+-------------+---------------+ | name | value | info | need_reboot | visible_level | +------------------------+-------+--------------------------------+-------------+---------------+ | observer_sys_password1 | | password for observer sys user | false | SYS | | observer_sys_password | | password for observer sys user | false | SYS | | obproxy_sys_password | | password for obproxy sys user | false | SYS | +------------------------+-------+--------------------------------+-------------+---------------+ 3 rows in set (0.002 sec) MySQL [(none)]>
      复制
    • 修改 OBPROXY 用户密码

      您可通过修改参数的方式来修改 OBPROXY 用户密码,使用命令为 alter proxyconfig set

      alter proxyconfig set obproxy_sys_password = 'admin123' ;
      复制
    • 修改 OBPROXY 连接 OceanBase 集群用户 proxyro 的密码

      在修改 OBPROXY 用户密码的同时还需要修改 OBPROXY 连接 OceanBase 集群用户 proxyro 的密码,这样 OBPROXY 才能和 OceanBase 集群正常连接。

      OBPROXY 连接 OceanBase 集群用户 proxyro 的密码就是前面 OceanBase 集群初始化后创建的用户 proxyro 的密码。

      alter proxyconfig set observer_sys_password = 'admin123' ;
      复制
    • 查看是否部署成功

      退出后,您可尝试通过 OBPROXY 连接 OceanBase 集群, 如果能查看所有会话,则说明 OBPROXY 部署成功。

      obclient -h 10.10.10.112 -uroot@sys#obcetest -P2883 -padmin123 -c -A oceanbase
      复制

      image20220303132545758.png

4、使用 OceanBase 数据库

4.1 查看系统资源

多租户原理简介

OceanBase 数据库以集群形态部署运行,提供给业务使用的是其中的租户。租户也叫实例,拥有一定的资源能力(如CPU、内存和空间)。

OceanBase 是单进程软件,进程名叫 observer ,每个进程启动后,默认会将操作系统的大部分资源据为己有。资源指的是 CPU、内存和磁盘空间。当然,这个资源的使用情况可以通过集群启动参数去设置。

查看集群可用资源

OceanBase 集群默认有个内部租户(sys),可以查看和管理集群的资源。

# 查看集群可用资源 select a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, cpu_assigned, (cpu_total-cpu_assigned) cpu_free, mem_total/1024/1024/1024 mem_total_gb, mem_assigned/1024/1024/1024 mem_assign_gb, (mem_total-mem_assigned)/1024/1024/1024 mem_free_gb from __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 ; # 资源分配细节 select t1.name resource_pool_name, t2.`name` unit_config_name, t2.max_cpu, t2.min_cpu, t2.max_memory/1024/1024/1024 max_mem_gb, t2.min_memory/1024/1024/1024 min_mem_gb, t3.unit_id, t3.zone, concat(t3.svr_ip,':',t3.`svr_port`) observer,t4.tenant_id, t4.tenant_name from __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;
复制

image20220303133331649.png

从上面可以看出,资源单元规格 sys_unit_config 的定义里 CPU 和 内存的最小值和最大值定义不一样,前面统计资源里的已分配资源是按最小值计算的。这个会导致剩余可用资源计算不那么直观。 官方建议把这个资源单元规格定义的 CPU 和内存的最小值和最大值拉平。避免创建业务租户时碰到资源不足的报错。

select * from __all_unit_config; alter resource unit sys_unit_config min_cpu=5,max_cpu=5,min_memory='1610612736B',max_memory='1610612736B';
复制

image20220303134138944.png

4.2 创建业务租户

-- 创建 resource unit create resource unit my_unit max_cpu=2, min_cpu=2, max_memory='2G', min_memory='2G', max_iops=10000, min_iops=1000, max_session_num=10000, max_disk_size='20G'; -- 创建资源池 CREATE resource pool my_pool unit = 'my_unit', unit_num = 1; -- 创建租户 create tenant my_test_tent resource_pool_list=('my_pool'); -- 查看租户 select tenant_id,tenant_name,replica_num,zone_list,primary_zone,info,status from __all_tenant;
复制

image20220303135005626.png

4.3 创建业务数据库和表

# 连接租户 obclient -h 127.1 -uroot@my_test_tent -P2881 oceanbase -A -p # 设置租户白名单 set global ob_tcp_invited_nodes='%'; # 创建业务数据库 create database mytestdb; # 创建业务用户并授权 create user mytestuser identified by 'admin123'; grant all privileges on mytestdb.* to mytestuser # 业务用户连接数据库 obclient -h 127.1 -umytestuser@my_test_tent -P2881 mytestdb -A -padmin123 # 业务用户创建表 create table t1(id int,name varchar(50)); # 插入数据及查询 insert into t1 values(1 ,'oceanbase'); commit; select * from t1;
复制

image20220303135956377.png

image20220303141344235.png

最后修改时间:2022-03-04 09:05:32
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • 手动部署 OceanBase 集群
    • 1、引言
      • 1.1关于此文档
      • 1.2 参考资料
    • 2、安装前准备
      • 2.1 部署规划
      • 2.2 机器信息
      • 2.3 初始化服务器环境
    • 3、手动部署 OceanBase 集群
      • 3.1 安装 OceanBase 软件包
      • 3.2 初始化数据目录
      • 3.3 启动 OBSERVER 进程
      • 3.4 集群自举(初始化)
      • 3.5 设置相关密码
      • 3.6 安装 OBPROXY 软件包
      • 3.7 启动 OBPROXY 进程
    • 4、使用 OceanBase 数据库
      • 4.1 查看系统资源
      • 4.2 创建业务租户
      • 4.3 创建业务数据库和表