暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

实战!基于Centos7系统OceanBase4.2版本单副本集群部署

687
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验
擅长主流数据Oracle、MySQL、PG、openGauss运维
备份恢复,安装迁移,性能优化、故障应急处理等

可提供技术业务:
1.DB故障处理/疑难杂症远程支援
2.Mysql/PG/Oracle/openGauss
数据库部署及数仓搭建

•••
微信:jem_db
QQ交流群:587159446
公众号:IT邦德

文章目录

前言

本文详细讲述基于Centos7系统OceanBase4.2版本单副本集群部署的详细过程

1.社区版介绍

OceanBase 数据库社区版:兼容 MySQL 的单机分布式一体化数据库,具有原生分布式架构,支持金融级高可用、透明水平扩展、分布式事务、多租户和语法兼容等企业级特性。OceanBase 社区版数据库内核开源,与 MySQL 兼容,对接虚拟化和大数据技术及产品,支持多种图形化的开发工具、运维监控工具和数据迁移工具;同时社区版提供开放的接口和丰富的生态能力,支持企业或个人更好的实现定制化业务需求。

2.部署环境

1.操作系统:
[root@centos79 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

2.内存
测试环境最低要求 8 GB
[root@centos79 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:          11834        1017       10142          17         674       10547
Swap:          4995           0        4995


[root@centos79 ~]# vi /etc/fstab
[root@centos79 ~]# tmpfs /dev/shm tmpfs defaults,size=10G 0 0
[root@centos79 ~]# cat /etc/fstab | grep shm
tmpfs /dev/shm tmpfs defaults,size=10G 0 0

[root@centos79 ~]# mount -o remount /dev/shm
[root@centos79 ~]# df -TH /dev/shm
Filesystem     Type   Size  Used Avail Use% Mounted on
tmpfs          tmpfs   11G     0   11G   0% /dev/shm

3.OB运行目录
/data/{observer01,observer02,observer03,obproxy}


4.关闭防火墙和 SELinux
##查看防火墙状态:
systemctl status firewalld

systemctl disable firewalld 
systemctl stop firewalld
systemctl status firewalld

##关闭 SELinux
vi /etc/selinux/config
确保:SELINUX=disabled
[root@centos79 ~]# setenforce 0
setenforce: SELinux is disabled

3.服务器参数

3.1 配置 sysctl.conf

在 /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 = 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_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
fs.file-max = 6573688

sysctl -p 生效

3.2 会话变量设置

将会话级别的最大栈空间大小设置为 unlimited,最大文件句柄数设置为 655350,Core 文件大小设置为 unlimited。

在 /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

您需查看 /etc/security/limits.d/20-nproc.conf 文件中是否存在 nproc 的配置,若存在需同步修改该文件中 nproc 的值。
退出当前会话,重新登录。执行以下命令,查看配置是否生效。
[root@centos79 ~]# ulimit -a

4.软件下载

https://www.oceanbase.com/softwarecenter
--安装包
oceanbase-all-in-one-4.2.2.0-100000192024011915.el7.x86_64.tar.gz

5.用户及目录

1.执行以下命令,创建账户 admin。
useradd -U admin -d /home/admin -s /bin/bash
mkdir -p /home/admin
sudo chown -R admin:admin /home/admin


2.执行以下命令,为账户 admin 设置密码
echo 'admin:admin' | chpasswd

3.为账户 admin 设置 sudo 权限
在 /etc/sudoers 文件添加以下内容:
## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
admin       ALL=(ALL)       NOPASSWD: ALL

[admin@centos79 ~]$ id admin
uid=1001(admin) gid=1001(admin) groups=1001(admin)

2.创建目录
[admin@jeames ~]$ mkdir -p /home/admin/data
[admin@jeames ~]$ mkdir -p /home/admin/redo

6.安装软件

在 all-in-one 安装包所在目录下执行如下命令解压安装包并安装。
[root@centos79 ~]# mkdir /opt/soft
[root@centos79 ~]# chown -R admin:admin /opt/soft
[root@centos79 ~]# su - admin
[admin@centos79 ~]$ cd /opt/soft
[admin@centos79 opt]$ tar -xzf oceanbase-all-in-one-*.tar.gz
[admin@centos79 soft]$ cd oceanbase-all-in-one/bin/
[admin@centos79 bin]$ ./install.sh

add auto set env logic to profile: /home/admin/.bash_profile

#########################################################################################
 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 
=========================================================================================

[admin@centos79 bin]$ source ~/.oceanbase-all-in-one/bin/env.sh

7.配置文件

可在 ~/.oceanbase-all-in-one/obd/usr/obd/example 目录下查看 OBD 提供的配置文件示例。
请根据您的资源条件选择相应的配置文件。

[admin@centos79 ~]$ cd ~/.oceanbase-all-in-one/obd/usr/obd/example
[admin@centos79 example]$ ll
total 144
-rw-r--r--. 1 admin admin 15449 Mar 14 21:45 all-components-min.yaml
-rw-r--r--. 1 admin admin 16102 Mar 14 21:45 all-components.yaml
drwxrwxr-x. 2 admin admin  4096 Mar 14 21:45 autodeploy
-rw-r--r--. 1 admin admin  7193 Mar 14 21:45 default-components-min.yaml
-rw-r--r--. 1 admin admin  7396 Mar 14 21:45 default-components.yaml
-rw-r--r--. 1 admin admin  4240 Mar 14 21:45 distributed-example.yaml
-rw-r--r--. 1 admin admin  5765 Mar 14 21:45 distributed-with-obproxy-example.yaml
drwxrwxr-x. 2 admin admin  4096 Mar 14 21:45 grafana
-rw-r--r--. 1 admin admin  2289 Mar 14 21:45 local-example.yaml
-rw-r--r--. 1 admin admin  4226 Mar 14 21:45 mini-distributed-example.yaml
-rw-r--r--. 1 admin admin  5736 Mar 14 21:45 mini-distributed-with-obproxy-example.yaml
-rwxr-xr-x. 1 admin admin  2453 Mar 14 21:45 mini-local-example.yaml
-rwxr-xr-x. 1 admin admin  2721 Mar 14 21:45 mini-single-example.yaml
-rw-r--r--. 1 admin admin  4197 Mar 14 21:45 mini-single-with-obproxy-example.yaml
drwxrwxr-x. 2 admin admin  4096 Mar 14 21:45 obagent
drwxrwxr-x. 2 admin admin  4096 Mar 14 21:45 ob-configserver
drwxrwxr-x. 2 admin admin  4096 Mar 14 21:45 oblogproxy
drwxrwxr-x. 2 admin admin  4096 Mar 14 21:45 obproxy
drwxrwxr-x. 2 admin admin  4096 Mar 14 21:45 oceanbase-3.x
drwxrwxr-x. 2 admin admin  4096 Mar 14 21:45 ocp-express
drwxrwxr-x. 2 admin admin  4096 Mar 14 21:45 prometheus
-rw-r--r--. 1 admin admin  2557 Mar 14 21:45 single-example.yaml
-rw-r--r--. 1 admin admin  4068 Mar 14 21:45 single-with-obproxy-example.yaml

此处以单机部署 + ODP 配置(mini-single-with-obproxy-example.yaml)

7.部署 OceanBase

1.安装集群
[admin@centos79 ~]$ cd ~/.oceanbase-all-in-one/obd/usr/obd/example
[admin@centos79 example]$ obd cluster deploy obtest -c mini-single-with-obproxy-example.yaml

[admin@centos79 example]$ obd cluster deploy obtest -c mini-single-with-obproxy-example.yaml
Package oceanbase-ce-4.2.2.0-100000192024011915.el7 is available.
Package obproxy-ce-4.2.1.0-11.el7 is available.
install oceanbase-ce-4.2.2.0 for local ok
install obproxy-ce-4.2.1.0 for local ok
+--------------------------------------------------------------------------------------------+
|                                          Packages                                          |
+--------------+---------+------------------------+------------------------------------------+
| Repository   | Version | Release                | Md5                                      |
+--------------+---------+------------------------+------------------------------------------+
| oceanbase-ce | 4.2.2.0 | 100000192024011915.el7 | aa3053da7370a6685a2ef457cd202d50e5ab75d3 |
| obproxy-ce   | 4.2.1.0 | 11.el7                 | 0aed4b782120e4248b749f67be3d2cc82cdcb70d |
+--------------+---------+------------------------+------------------------------------------+
Repository integrity check ok
Parameter check ok
Cluster status check ok
Initializes observer work home ok
Initializes obproxy work home ok
Remote oceanbase-ce-4.2.2.0-100000192024011915.el7-aa3053da7370a6685a2ef457cd202d50e5ab75d3 repository install ok
Remote oceanbase-ce-4.2.2.0-100000192024011915.el7-aa3053da7370a6685a2ef457cd202d50e5ab75d3 repository lib check !!
Remote obproxy-ce-4.2.1.0-11.el7-0aed4b782120e4248b749f67be3d2cc82cdcb70d repository install ok
Remote obproxy-ce-4.2.1.0-11.el7-0aed4b782120e4248b749f67be3d2cc82cdcb70d repository lib check ok
Try to get lib-repository
Package oceanbase-ce-libs-4.2.2.0-100000192024011915.el7 is available.
install oceanbase-ce-libs-4.2.2.0 for local ok
Remote oceanbase-ce-libs-4.2.2.0-100000192024011915.el7-3ef68164e36c5a344b257e57575833134d34a27a repository install ok
Remote oceanbase-ce-4.2.2.0-100000192024011915.el7-aa3053da7370a6685a2ef457cd202d50e5ab75d3 repository lib check ok
obtest deployed
Please execute ` obd cluster start obtest ` to start
Trace ID: a4159da4-e20e-11ee-bed7-000c29377d62
If you want to view detailed obd logs, please run: obd display-trace a4159da4-e20e-11ee-bed7-000c29377d62

2.启动 OceanBase 数据库
[admin@centos79 ~]$ obd cluster start obtest

8.使用OB

8.1 连接 OceanBase

[admin@centos79 ~]$ obclient -h192.168.3.20 -uroot@sys -P2883 -p'gxmxiv4fV6uKhJfgDktn'
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 6
Server version: OceanBase_CE 4.2.2.0 (r100000192024011915-fac02c6690de9ff9f9f96c0bdf86ffe39ae0d7e7) (Built Jan 19 2024 15:14:05)

Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

obclient [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| LBACSYS            |
| mysql              |
| oceanbase          |
| ocs                |
| ORAAUDITOR         |
| SYS                |
| test               |
+--------------------+
8 rows in set (0.003 sec)

8.2 租户创建

1.创建一个名称为 S1_unit_config 的资源规格,
其资源配置为 CPU 为 1 核,内存 4G,
日志盘空间 6G。
obclient [oceanbase]> 
CREATE RESOURCE UNIT S1_unit_config
                MEMORY_SIZE = '4G',
                MAX_CPU = 1, MIN_CPU = 1,
                LOG_DISK_SIZE = '6G',
                MAX_IOPS = 10000, MIN_IOPS = 10000, IOPS_WEIGHT=1;
                
2.创建一个名为 mq_pool_01 的资源池,
在 zone1 里各创建 1 个 Unit,
每个 Unit 的资源规格为 S1_unit_config

obclient [oceanbase]> CREATE RESOURCE POOL mq_pool_01 
                UNIT='S1_unit_config', 
                UNIT_NUM=1, 
                ZONE_LIST=('zone1'); 
                
3.通过 CREATE TENANT 语句,创建租户
obclient [oceanbase]> 
CREATE TENANT IF NOT EXISTS mq_t1 
PRIMARY_ZONE='zone1', 
RESOURCE_POOL_LIST=('mq_pool_01')
set OB_TCP_INVITED_NODES='%';

8.3 建库建表

默认管理员用户(MySQL 模式为 root,Oracle 模式为 sys)的密码为空,您需要及时修改管理员用户的密码。
MySQL 兼容模式

--登录 mq_t1 租户的 root 用户。
obclient -h192.168.3.20 -uroot@mq_t1 -P2883 -A


--执行以下语句修改 root 用户的密码
obclient [(none)]> ALTER USER root IDENTIFIED BY '123456';

--退出后重新登陆
obclient -uroot@mq_t1 -h127.1 -P2883 -p123456 -A

--创建数据库并指定字符集
CREATE DATABASE testdb DEFAULT CHARACTER SET UTF8;
obclient [(none)]> use testdb

--建表
CREATE TABLE course_tb(
course_id int(10) NOT NULL, 
course_name char(10) NOT NULL,
course_datetime char(30) NOT NULL);

INSERT INTO course_tb VALUES(1, 'Python', '2021-12-1 19:00-21:00');
INSERT INTO course_tb VALUES(2, 'SQL', '2021-12-2 19:00-21:00');
INSERT INTO course_tb VALUES(3, 'R', '2021-12-3 19:00-21:00');

obclient [testdb]> desc course_tb
    -> ;
+-----------------+----------+------+-----+---------+-------+
| Field           | Type     | Null | Key | Default | Extra |
+-----------------+----------+------+-----+---------+-------+
| course_id       | int(10)  | NO   |     | NULL    |       |
| course_name     | char(10) | NO   |     | NULL    |       |
| course_datetime | char(30) | NO   |     | NULL    |       |
+-----------------+----------+------+-----+---------+-------+

obclient [testdb]> select * from course_tb;
+-----------+-------------+-----------------------+
| course_id | course_name | course_datetime       |
+-----------+-------------+-----------------------+
|         1 | Python      | 2021-12-1 19:00-21:00 |
|         2 | SQL         | 2021-12-2 19:00-21:00 |
|         3 | R           | 2021-12-3 19:00-21:00 |
+-----------+-------------+-----------------------+

9.报错处理

1.资源池创建内存不足报错
obclient [oceanbase]> CREATE RESOURCE POOL mq_pool_01 
    ->                 UNIT='S1_unit_config', 
    ->                 UNIT_NUM=1, 
    ->                 ZONE_LIST=('zone1'); 
ERROR 4733 (HY000): zone 'zone1' resource not enough to hold 1 unit. You can check resource info by views: DBA_OB_UNITS, GV$OB_UNITS, GV$OB_SERVERS.
server '"192.168.3.20:2882"' MEMORY resource not enough

此处报错记得跳到配置文件内存即可,调大即可,给到10G

# 使用 edit-config 命令进入编辑模式,修改集群配置
# 修改配置并保存退出后,OBD 会告知如何使得此次修改生效,复制 OBD 输出的命令即可
[admin@centos79 ~]$  obd cluster edit-config obtest
# 保存修改后输输入以下命令加载
[admin@test001 ~]$ obd cluster reload obtest


2.启动报系统参数
[admin@centos79 ~]$ obd cluster start obtest
Get local repositories ok
Search plugins ok
Load cluster param plugin ok
Open ssh connection ok
Check before start observer x
[ERROR] OBD-1007: (192.168.3.20) The value of the ulimit parameter "open files" must not be less than 20000 (Current value: 1024), Please execute `echo -e "* soft nofile 20000\n* hard nofile 20000" >> /etc/security/limits.d/nofile.conf` as root in 192.168.3.20. if it dosen't work, please check whether UsePAM is yes in /etc/ssh/sshd_config.
[ERROR] OBD-1007: (192.168.3.20) The value of the ulimit parameter "max user processes" must not be less than 120000 (Current value: 4096), Please execute `echo -e "* soft nproc 120000\n* hard nproc 120000" >> /etc/security/limits.d/nproc.conf` as root in 192.168.3.20. if it dosen't work, please check whether UsePAM is yes in /etc/ssh/sshd_config.
[WARN] OBD-1007: (192.168.3.20) The recommended number of core file size is unlimited (Current value: 0)
[WARN] OBD-1007: (192.168.3.20) The recommended number of stack size is unlimited (Current value: 8192)
[WARN] OBD-1017: (192.168.3.20) The value of the "vm.max_map_count" must be within [327600, 1310720] (Current value: 65530, Recommended value: 655360)
[WARN] OBD-1017: (192.168.3.20) The value of the "fs.file-max" must be greater than 6573688 (Current value: 1155354, Recommended value: 6573688)
[WARN] OBD-2000: (192.168.3.20) not enough memory. (Free: 5.4G, Need: 6.0G)
[WARN] OBD-1012: (192.168.3.20) clog and data use the same disk (/)


修改系统参数即可

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

您需查看 /etc/security/limits.d/20-nproc.conf 文件中是否存在 nproc 的配置,若存在需同步修改该文件中 nproc 的值。
退出当前会话,重新登录。执行以下命令,查看配置是否生效。
[root@centos79 ~]# ulimit -a

10.总结

通过本文让大家快速掌握OceanBase集群的手动部署技能,理解进程的相关目录、集群初始化、OBProxy和 OB 集群关系等

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

文章被以下合辑收录

评论