OBD 白屏部署单机 OceanBase-CE 4.2.0
官网文档
● https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001697442
软件下载
● https://www.oceanbase.com/softwarecenter
注意:以下显示obadmin的地方,全部改为admin
一、准备工作
一、测试服务器配置
IP | CPU | 内存 | 磁盘 |
---|---|---|---|
192.166.0.215 | 4C | 16G | 380G机械 |
● 注意:即使是单机部署,最好可以挂载多块磁盘,分别用来存储不同组件的数据,防止出现问题
● 由于是单机部署单实例数据库,因此,OBProxy 和监控不用装
● 通过实际安装,对比mysql(单体),mysql除了实例安装以外,就只剩下运行时占用内存,包括session、sql执行、数据缓存等;OceanBase存在租户概念,每个租户都要占用一部分内存,在小型应用场景下,首先系统租户需要占用一定的CPU和内存,其次是数据库系统服务需要占用一定的CPU和内存,最后是多租户公共资源,这是比mysql多的地方;除此以外,OceanBase有官方监控,这个不建议安装和使用,因为只有一台服务器,那么数据库和监控就会在一起,增加服务器负担(监控服务资源占用较高);剩下的就是业务使用了;为了业务使用,需要建立一个业务租户
● 实际使用中,建议不要使用机械硬盘
二、注意时间同步
1、在内网环境下,可能存在服务器时间慢的问题,需要部署一个NTP服务器,数据库服务器和NTP服务器保持时间同步
2、如果可以连接外网,看看是否安装了 chrony,安装了以后可以自动同步网络时间
三、目录安排
1、backup-job: 物理备份脚本所在位置,使用crontab调用,详情见《物理备份脚本》
2、core-dump:存储系统内核的dump日志,在修改系统参数时需要使用
3、install:安装包
4、singleob:数据库
5、startup:数据库开机自动启动脚本
※注意:为了日后扩展方便,安装数据库的非root租户需要是admin用户,其余用户名称都可能出现问题
二、安装部署
一、配置服务器用户(之后的安装不用root用户)
● useradd -U admin -d /home/admin -s /bin/bash
● mkdir -p /home/admin
● sudo chown -R admin:admin /home/admin
● passwd admin
※ 密码:xxx
● 为admin用户设置sudo权限
vim /etc/sudoers
添加以下内容:admin ALL=(ALL) NOPASSWD: ALL
保存
二、服务器上切换 admin 用户,并创建目录
● su admin
● cd ~
● 创建目录:mkdir core-dump singleob startup install
三、上传 oceanbase-all-in-one-4.2.0 到服务器,解压安装
● scp oceanbase-all-in-one-4.2.0-xxxx.tar.gz root@192.168.0.220:/home/admin/install
● tar -xzf oceanbase-all-in-one-*.tar.gz
● cd oceanbase-all-in-one/bin/
● ./install.sh
● source ~/.oceanbase-all-in-one/bin/env.sh
● vim ~/.bashrc
source ~/.oceanbase-all-in-one/bin/env.sh
四、修改 limits.conf
● 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
● 退出当前会话,ulimit -a验证是否生效
五、配置 /etc/sysctl.conf
● vim /etc/sysctl.conf
fs.aio-max-nr=1048576 # 修改内核异步 I/O 限制
net.core.somaxconn = 2048 # Socket 监听队列的最大长度,频繁建立连接需要调大该值
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.tcp_rmem = 4096 87380 16777216 # Socket 接收缓冲区的大小,分别为最小值、默认值、最大值
net.ipv4.tcp_wmem = 4096 65536 16777216 # Socket 发送缓冲区的大小,分别为最小值、默认值、最大值
net.ipv4.tcp_max_syn_backlog = 16384 # 处于 SYN_RECVD 状态的连接数
net.ipv4.tcp_fin_timeout = 15 # Socket 主动断开之后 FIN-WAIT-2 状态的持续时间
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1 # 允许重用处于 TIME WAIT 状态的 Socket
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_slow_start_after_idle=0 # 禁止 TCP 连接从 Idle 状态的慢启动,降低某些情况的网络延迟
vm.swappiness = 0 # 优先使用物理内存
vm.min_free_kbytes = 2097152
# 系统内核dump日志存储目录,结合具体使用修改目录位置
kernel.core_pattern = /home/admin/core-dump/core-%e-%p-%t
● 生效:sysctl -p
六、关闭防火墙和SELinux
● 关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
● 关闭 SELinux
vim /etc/selinux/config
SELINUX=disabled
● 查看 SELinux 状态:sestatus
● 重启sudo reboot
七、启动 obd web
● 单机部署,资源不足,不部署代理服务和监控服务
● 因为只有一个虚拟机,因此全部节点IP都是当前的虚拟机IP
● datafile_size:数据文件使用的磁盘空间量;
● log_disk_size:redolog 使用的磁盘空间量;
● 当datafile和logfile在一个磁盘上的时候,二者总使用量可设置为总磁盘空间的90%,其中datafile_size占60%,log_disk_size占30%;log_disk_size可复用,除非出现BUG,否则不会持续增长
● memory_limit 是整个数据库能使用的最大内存量
● system_memory:是在memory_limit中预留出的给非用户租户和系统租户使用的内存(500租户),即租户共享内存,不要设置的太小,建议设置为memory_limit的1/4
● cpu_count:为实际的主机(虚拟机)核数
● enable_syslog_recycle + max_syslog_file_count:使得observer.log.20230915110215490 这种日志的数量<=max_syslog_file_count配置的值,避免无限使用磁盘空间
● datafile_maxsize:数据文件可使用的磁盘空间的最大值,该值可比当前服务器剩余磁盘空间大,这样方便日后磁盘扩容
● datafile_next:当数据文件占用磁盘空间达到datafile_size时,下一步扩容的空间;比如datafile_size设置为20G,datafile_next设置为2G,当20G快用完时,数据库会再向系统申请2G的空间用于存储数据文件
※ 注意系统日志使用的磁盘空间:
系统日志文件一共为4种,最大使用磁盘空间的计算公式为:
max_syslog_file_count * 256M * 4 * (enable_syslog_wf ? 2 : 1)
max_syslog_file_count 是设置的,假如是20,enable_syslog_wf默认是开启的,4是指系统日志类型有4种
带入公式, 20 * 256M * 4 * 2 = 30G
由于 .wf 类型日志数据量,在通常情况下会很少,因此磁盘空间使用会低于40G
因此,在设置 数据空间 + 日志空间磁盘占用的时候,需要考虑一下系统日志(数据库运行日志) + 操作系统使用的空间
※ 注意,datafile_next的值不应过小,否则数据量增长过快时,数据库会频繁向操作系统申请空间
※ 比如磁盘剩余空间500G,datafile_size设置为100G,datafile_maxsize设置的比500G大,则在OB中查询服务器资源的时候(查询GV$OB_SERVERS),DATA_DISK_CAPACITY实际上显示的是磁盘剩余空间的95%,即470G左右,当剩余磁盘空间不断被其他程序挤占,则DATA_DISK_CAPACITY会随着占用而减小
● 预检查
此处发生了个问题,ssh 失败,但是用户名密码都对,最后发现是ssh连接太慢
三、部署完成
一、创建用户租户
● 略
● 注意:直连业务租户的数据库时,注意用户名后,需要跟着租户,比如:root@租户
二、集群运维
● 查看集群状态
obd cluster display singleob
● 停止已部署的集群
obd cluster stop singleob
● 销毁已部署的集群
obd cluster destroy singleob
三、配置开机自启
※ 注意:如果配置了物理备份,则需要先启动NFS、挂载NFS服务端目录,最后再启动数据库
※ 开机自启脚本略