一.简介

OceanBase社区版是开源的分布式国产数据库,兼容 MySQL ,具有原生分布式架构,支持金融级高可用、透明水平扩展、分布式事务、多租户和语法兼容等企业级特性。目前社区版最新版本为V4.3.2,支持X86和ARM架构。OceanBase 数据库支持单机、机房、城市级别的高可用和容灾,可以进行单机房、双机房“主-备”、两地三中心“主-备”、两地三中心三副本、三地五中心五副本部署等。

上一套OceanBase数据库,如何规划部署?OceanBase集群_oceanbase集群部署

二.集群部署前准备

0.资源规划

数据库及相关组件可部署在Alibaba Cloud Linux 2、CentOS 7、RedHat 7、Ubuntu 16.X、Debian 9.X操作系统安装,本次使用centos7.6操作系统,安装操作系统资源信息如下:

资源  4C 16G 100G+500G+100G+100G

centos7.6

192.168.77.171  

OBServer 节点1 /Proxy

资源  4C 16G 100G+500G+100G+100G

centos7.6

192.168.77.172 

OBServer 节点2 /Proxy

资源  4C 16G 100G+500G+100G+100G

centos7.6

192.168.77.173  

OBServer 节点3 /Proxy

资源  4C 16G 100G+500G+100G+100G

centos7.6

192.168.77.174  

OBD/OCP Express

192.168.77.171-173为OBServer 节点,同时部署代理Proxy;

192.168.77.174为中控机,集群自动化部署节点,同时部署OCP。

目录规划:

/data 为数据盘,大小为500G。
/redo 存放 redo 日志,大小为100G。
/home/admin/oceanbase 存放OceanBase数据库的二进制文件和运行日志,大小为100G。
  • 1.
  • 2.
  • 3.

1.部署前准备(所有节点执行)

#配置hosts
cat >>/etc/hosts<<'EOF'
192.168.77.171 oceanbaseserver1
192.168.77.172 oceanbaseserver2
192.168.77.173 oceanbaseserver3
192.168.77.174 oceanbaseocpobd
EOF
#配置阿里云yum源或本地yum源安装依赖
cd /etc/yum.repos.d/
gzip CentOS-*
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#本地yum源
#使用系统镜像包 配置yum源
mount /dev/cdrom /mnt
cd /etc/yum.repos.d/
gzip CentOS-*
cat >centos.repo<<'EOF'
[centos7]
name=centos7
baseurl=file:///mnt
gpgcheck=0
enable=1
EOF
#安装依赖
yum -y install expect mariadb mariadb-devel python-devel openssl-devel gcc gcc-gfortran gcc-c++
yum -y install python-setuptools bc et-tools mtr chrony bind-utils libaio tree
#关闭内存大页
sed -i '/^GRUB_CMDLINE_LINUX/d' /etc/default/grub
cat >> /etc/default/grub<<'EOF'
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet  transparent_hugepage=never elevator=deadline"
EOF
grub2-mkconfig -o /etc/grub2.cfg

#设置时区   
timedatectl set-timezone Asia/Shanghai
#配置时间同步服务NTP或chrond
#中控机本身作为服务端,仅中控机配置
yum -y install chrony
systemctl start chronyd
systemctl enable chronyd
cp /etc/chrony.conf /etc/chrony.conf.bak
cat >>/etc/chrony.conf<<'EOF'
server 127.0.0.1
allow 192.168.77.0/24
local stratum 10
EOF
######除中控机其他主机执行########
yum -y install chrony
systemctl start chronyd
systemctl enable chronyd
cp /etc/chrony.conf /etc/chrony.conf.bak
cat >>/etc/chrony.conf<<'EOF'
server 192.168.77.174
allow 192.168.77.0/24
local stratum 10
EOF
#磁盘准备
pvcreate /dev/sdb /dev/sdc /dev/sdd
vgcreate datavg /dev/sdb
vgcreate redovg /dev/sdc
vgcreate adminvg /dev/sdd
lvcreate -n datalv -L 500000M  datavg
lvcreate -n redolv -L 100000M  redovg
lvcreate -n adminlv -L 100000M adminvg
mkfs.xfs /dev/datavg/datalv
mkfs.xfs /dev/redovg/redolv
mkfs.xfs /dev/adminvg/adminlv

cat >>/etc/fstab<<'EOF'
/dev/datavg/datalv     /data                 xfs    defaults        0 0
/dev/redovg/redolv     /redo                 xfs    defaults        0 0
/dev/adminvg/adminlv   /home/admin           xfs    defaults        0 0
EOF
mkdir -p /data
mkdir -p /redo
mkdir -p /home/admin
mount -a 

#IO调度算法
#sas盘deadline;ssd盘NOOP
echo 'deadline' > /sys/block/sdb/queue/scheduler
echo 'deadline' > /sys/block/sdc/queue/scheduler
echo 'deadline' > /sys/block/sdd/queue/scheduler
#配置资源限制
cat >>/etc/security/limits.conf<<'EOF'
root soft nofile 655350
root hard nofile 655350
* soft nofile 655350
* hard nofile 655350
* soft stack unlimited
* hard stack unlimited
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited
EOF
echo "* - nproc 65535" > /etc/security/limits.d/90-nproc.conf
#系统检查出,补充在这里了
echo -e "* soft nproc 120000\n* hard nproc 120000" >> /etc/security/limits.d/nproc.conf
#内核参数优化
cat >>/etc/sysctl.conf<<'EOF'
# 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_forward = 0 
net.ipv4.conf.default.rp_filter = 1 
net.ipv4.conf.default.accept_source_route = 0 
net.ipv4.tcp_syncookies = 1 
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_tw_recycle = 1 
net.ipv4.tcp_slow_start_after_idle=0
vm.swappiness = 0
vm.min_free_kbytes = 2097152
vm.overcommit_memory = 0
fs.file-max = 6573688
# 修改进程可以拥有的虚拟内存区域数量
vm.max_map_count = 655360
# 此处为 OceanBase 数据库的 data 目录
kernel.core_pattern = /data/core-%e-%p-%t
EOF
sysctl -p
#关闭防火墙和SELINUX
systemctl disable firewalld
systemctl stop firewalld
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0

#创建用户和目录并授权
useradd -U admin -d /home/admin -s /bin/bash
mkdir -p /home/admin
chown -R admin:admin /home/admin
echo 123456 | passwd --stdin  admin
#出现-bash-4.2$可执行
cp /etc/skel/.bash* /home/admin
#配置sudoer
cat >>/etc/sudoers<<'EOF'
admin       ALL=(ALL)       NOPASSWD: ALL
EOF
#目录授权
chown -R admin:admin /data
chown -R admin:admin /redo
chown -R admin:admin /home/admin
#ssh免密登录设置,中控机上执行
#必须将脚本前两行的 SERVERS 列表和 PASSWORD 替换成您自己的实际机器列表和密码
su - admin
cd /home/admin
cat >admin_ssh.sh<<'EOF'
#!/usr/bin/bash 
SERVERS=("admin@192.168.77.171" "admin@192.168.77.172" "admin@192.168.77.173" "admin@192.168.77.174")
PASSWORD="123456"
keygen() {
sudo yum -y install expect
expect -c "
   spawn ssh-keygen -t rsa
   expect {
      *(~/.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
EOF
#执行脚本,实现admin用户免密登录
sh admin_ssh.sh
#设置multi-user模式
systemctl set-default multi-user.target
#配置amdin环境变量
su - admin
cat >> ~/.bash_profile<<'EOF'
export LANG=en_US.UTF8
EOF
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127.
  • 128.
  • 129.
  • 130.
  • 131.
  • 132.
  • 133.
  • 134.
  • 135.
  • 136.
  • 137.
  • 138.
  • 139.
  • 140.
  • 141.
  • 142.
  • 143.
  • 144.
  • 145.
  • 146.
  • 147.
  • 148.
  • 149.
  • 150.
  • 151.
  • 152.
  • 153.
  • 154.
  • 155.
  • 156.
  • 157.
  • 158.
  • 159.
  • 160.
  • 161.
  • 162.
  • 163.
  • 164.
  • 165.
  • 166.
  • 167.
  • 168.
  • 169.
  • 170.
  • 171.
  • 172.
  • 173.
  • 174.
  • 175.
  • 176.
  • 177.
  • 178.
  • 179.
  • 180.
  • 181.
  • 182.
  • 183.
  • 184.
  • 185.
  • 186.
  • 187.
  • 188.
  • 189.
  • 190.
  • 191.
  • 192.
  • 193.
  • 194.
  • 195.
  • 196.
  • 197.
  • 198.
  • 199.
  • 200.
  • 201.
  • 202.
  • 203.
  • 204.
  • 205.

三.通过图形化界面部署集群

前提条件:部署OCP Express 组件需先安装配置 Java 环境,目前仅支持 JDK1.8 版本。
#验证
su - admin
ssh admin@192.168.77.174 'java -version'
  • 1.
  • 2.
  • 3.
  • 4.

1.安装并配置obd

#obd安装有多种方式:
使用RPM包安装(在线或离线);
使用all-in-one包安装(在线或离线);
OceanBase 从 V4.0.0 开始提供统一的安装包 all-in-one package。
all-in-one安装包一次性完成 obd、OceanBase 数据库、ODP、OBAgent、Grafana、Prometheus 和 OCP Express(自 V4.1.0 起支持)的安装。
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
#通过all-in-one安装obd
su - admin
cd /home/admin
#上传all-in-one安装包
rz oceanbase-all-in-one-4.2.4.0-100000082024070810.el7.x86_64.tar.gz
#解压后安装
tar xf oceanbase-all-in-one-4.2.4.0-100000082024070810.el7.x86_64.tar.gz
cd oceanbase-all-in-one/bin
./install.sh
#安装完成提示
 Install Finished 
=========================================================================================
Setup Environment:              source ~/.oceanbase-all-in-one/bin/env.sh 
Quick Start:                    obd demo 
Use Web Service to install:     obd web 
Use Web Service to upgrade:     obd web upgrade 
More Details:                   obd -h 
#设置环境变量
source ~/.oceanbase-all-in-one/bin/env.sh 

#配置obd
#因为是离线,所以禁止远程仓库,不然会联网下载
su - admin
obd  mirror disable remote
#将all-in-one里面的安装包clone到本地仓库
cd oceanbase-all-in-one/rpms
obd mirror clone *.rpm
#查看本地仓库的安装包列表
obd mirror list local
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.

2.通过odb白屏部署OceanBase集群(中控机192.168.77.174上操作)的操作步骤

启动白屏界面

#admin用户前台启动web界面,默认端口8680,IP为内网地址,非公网地址
obd web 
#提示please open http://192.168.77.174:8680
  • 1.
  • 2.
  • 3.

浏览器访问http://192.168.77.174:8680

选中文---开启部署之旅---OceanBase及配套工具---确定

部署配置:自定义集群名称,选版本选组件。

上一套OceanBase数据库,如何规划部署?OceanBase集群_oceanbase集群部署_02

节点配置:界面可以配置数据库和组件节点,部署用户以及软件安装路径。

上一套OceanBase数据库,如何规划部署?OceanBase集群_oceanbase集群部署_03

集群配置:界面可对集群进行配置,包括系统租户的管理员用户(root@sys)密码、数据和日志目录、数据库及各组件的端口和参数配置等。

上一套OceanBase数据库,如何规划部署?OceanBase集群_oceanbase集群部署_04

预检查:

上一套OceanBase数据库,如何规划部署?OceanBase集群_oceanbase集群部署_05

根据页面建议选择 自动修复 或者单击 了解更多方案 跳转至错误码文档,参考文档自行修改。

上一套OceanBase数据库,如何规划部署?OceanBase集群_oceanbase集群部署_06

#一键复制的内容
[
    {
        "component": "oceanbase-ce",
        "access_url": "192.168.77.171:2881",
        "user": "root",
        "password": "D6&mj..!E}",
        "connect_url": "obclient -h192.168.77.171 -P2881 -uroot -p'D6&mj..!E}' -Doceanbase -A"
    },
    {
        "component": "obproxy-ce",
        "access_url": "192.168.77.171:2883",
        "user": "root@proxysys",
        "password": "qr8EN1Dt1j",
        "connect_url": "obclient -h192.168.77.171 -P2883 -uroot@proxysys -p'qr8EN1Dt1j' -Doceanbase -A \n"
    },
    {
        "component": "ocp-express",
        "access_url": "192.168.77.174:8180",
        "user": "admin",
        "password": "..7zK9fN",
        "connect_url": "http://192.168.77.174:8180"
    }
]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

上一套OceanBase数据库,如何规划部署?OceanBase集群_oceanbase集群部署_07

OCP Express 的登录界面。   http://192.168.77.174:8180   admin/..7zK9fN

部署成功后可复制显示的连接串,在黑屏界面执行连接 OceanBase 数据库。

#中控机上连接数据库服务器
obd tool command alioceanbase log -c oceanbase-ce -s 192.168.77.171
obd tool command alioceanbase log -c oceanbase-ce -s 192.168.77.172
obd tool command alioceanbase log -c oceanbase-ce -s 192.168.77.173
#中控机上连接数据库
obclient -h192.168.77.171 -P2881 -uroot -p'D6&mj..!E}' -Doceanbase -A
select version();
select user,host from mysql.user;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

3.管理部署后的集群

#中控机上操作
#查看集群列表
obd cluster list
#查看集群状态,以部署名为 alioceanbase 为例
obd cluster display alioceanbase
#停止运行中的集群,以部署名为 alioceanbase 为例
obd cluster stop alioceanbase
#销毁已部署的集群,以部署名为 alioceanbase 为例
obd cluster destroy alioceanbase
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.