海通证券实践:手动部署 OceanBase 集群

2024年 5月 7日 38.4k 0

作者简介:胡晶玉,数据库工程师。

前言:

 学习一个数据库产品,一定是从安装开始的。通过安装,了解安装环境,安装步骤,目录结构,可以快速的对产品有个基本印象。所以这个手动部署的练习非常有意义。

实验环境:

笔记本电脑  Windows 11

Vmware Workstation 16.1.2

虚机 CentOS Linux release 7.2.1511 (Core),

分配 8C,13G,20G硬盘

IP: 192.168.137.106

使用笔记本虚拟机进行测试很容易出错,OB默认对资源的需求很高,出错还不能准确报出。所以使用虚拟机远比在服务器上安装难度大。但是在解决问题的过程中可以加深对产品的了解。

服务器环境准备

内核参数修改

通过修改配置文件。

vim /etc/sysctl.conf
 
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

让配置生效

sysctl -p

修改会话变量设置

vi /etc/security/limits.conf
 
* soft nofile 655360
* hard nofile 655360
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited
* soft stack unlimited
* hard stack unlimited

关闭防火墙和SELinux

systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld

 

vi /etc/selinux/config
 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#    enforcing - SELinux security policy is enforced.
#    permissive - SELinux prints warnings instead of enforcing.
#    disabled - No SELinux policy is loaded.
SELINUX=disabled

单机环境,省略了配置时间同步。

 

配置安装用户

useradd admin
echo 'admin:adminPWD123' |chpasswd
usermod admin -G wheel

环境准备好了之后,重启一下服务器,确保配置生效。并且以admin用户登录。

安装软件

软件下载:

 ​https://open.oceanbase.com/softwareCenter/community​

为了安装顺利,下载下面全部的软件,并选择了最新的版本。

海通证券实践:手动部署 OceanBase 集群-1

海通证券实践:手动部署 OceanBase 集群-2

海通证券实践:手动部署 OceanBase 集群-3

安装完成后,使用tree命令查看目录结构,默认安装在admin的home目录。

海通证券实践:手动部署 OceanBase 集群-4

创建集群

创建集群使用的目录

su – root
mkdir /data /redo
chown admin:admin /data /redo
su – admin
mkdir -p ~/oceanbase/store/obdemo /data/obdemo/{sstable,etc3} /redo/obdemo/{clog,ilog,slog,etc2}
for f in {clog,ilog,slog,etc2}; do ln -s /redo/obdemo/$f ~/oceanbase/store/obdemo/$f ; done
for f in {sstable,etc3}; do ln -s /data/obdemo/$f ~/oceanbase/store/obdemo/$f; done

检查一下创建的目录

tree ~/oceanbase/store/ /data/ /redo/

 海通证券实践:手动部署 OceanBase 集群-5

  启动observer

bin/observer -i eno16777736 -p 2881 -P 2882 -z zone1 -d ~/oceanbase/store/obdemo -r '192.168.137.106:2882:2881' -c 20211216 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=2G,memory_chunk_cache_size=128M,cpu_count=4,net_thread_count=4,datafile_size=5G,stack_size=1536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2" -d ~/oceanbase/store/obdemo

 海通证券实践:手动部署 OceanBase 集群-6

注意这里的参数-i eno16777736,这是网卡的设备名,-r '192.168.137.106:2882:2881' 这个是这块网卡上面的ip地址。datafile_size=5G是数据文件的大小,根据磁盘空间进行调整。

集群初始化

obclient -h 192.168.137.106 -u root -P 2881 -p -c
set session ob_query_timeout=1000000000;
alter system bootstrap ZONE 'zone1' server '192.168.137.106:2882';

此命令长时间没有返回。

后来再次执行,报错如下。

海通证券实践:手动部署 OceanBase 集群-7

原因是该命令仅需要在 OceanBase 数据库初次启动时执行,每个集群仅能执行一次该命令。如果该命令执行失败,不能重新运行该命令,需要重新搭建 OceanBase 数据库集群。

只能重新部署了。

首先删除目录中的文件,然后重复前面的步骤。

期待….

海通证券实践:手动部署 OceanBase 集群-8

第一次失败我看了日志,没有找到有用的信息。这方面希望OB能够改进。

我猜测可能的原因是内存不足。所以在第二次做的时候把虚拟机的内存调整到13G。

设置密码及创建obproxy用户proxyro:

alter user root identified by 'admin';
grant select on oceanbase.* to proxyro identified by 'obproxy';

记住proxyro用户的密码,后面配置obproxy时候要用到。

启动OBPROXY进程

cd ~/obproxy-3.2.0
bin/obproxy -r "192.168.137.106:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c obdemo

然后通过ps –ef |grep proxy以及netstat –ntlp |grep obproxy检查进程是否已经启动,监听是否正常。

海通证券实践:手动部署 OceanBase 集群-9

这里要吐槽一下ob命令的输出,完全看不出执行成功与否,需要通过查看进程,才能知道命令是否成功了。

海通证券实践:手动部署 OceanBase 集群-1

通过obproxy连接数据库

obclient -h 192.168.137.106 -uroot@sys#obdemo -P2883 -padmin -c -A oceanbase

海通证券实践:手动部署 OceanBase 集群-11

报错了。检查环境,发现磁盘满了。删除ob的日志文件 rm –rf /home/admin/oceanbase/log/

重新连接,成功。

海通证券实践:手动部署 OceanBase 集群-12

创建普通租户及数据库

 创建资源池

海通证券实践:手动部署 OceanBase 集群-13

这里报错了,资源不足是因为虚拟机只分配了4C,系统租户占用了过多,所以无法创建资源池。修改系统租户规格,重新创建成功。

海通证券实践:手动部署 OceanBase 集群-14

创建租户

海通证券实践:手动部署 OceanBase 集群-15

连接mysql租户:

obclient -h 127.0.0.1 -P 2881 -uroot@t_mysql

创建数据库,表,插入数据。

 create tenant t_mysql resource_pool_list=('min_pool'),primary_zone='RANDOM',charset='utf8' set ob_compatibility_mode='mysql', ob_tcp_invited_nodes='%';

创建数据库,表,用户,插入数据。

海通证券实践:手动部署 OceanBase 集群-16

海通证券实践:手动部署 OceanBase 集群-17

总结:

这个实验遇到的主要问题还是笔记本的资源不足,经常会遇到莫名其妙的错误。但同时,通过解决这些问题,使我增加了对产品的了解。总结经验如下:

第一次进行集群初始化出错,命令hang在那里长时间不返回,日志没有明确报错信息。只能重启重新初始化。但是bootstrap命令只能执行一次,所以只能删除集群,重建集群后,再次进行初始化。在第二次初始化时我把虚拟机集群的日志默认是无限制的,一旦有什么错误信息,这个日志增长非常快,会把文件系统撑爆。所以集群启动后要尽快修改日志参数。

alter system set syslog_level='WARN';
alter system set max_syslog_file_count=5;
alter system set enable_syslog_recycle='true';

如何有条件还是要使用服务器做测试,笔记本非常容易遇到资源不足的问题。

 结束语

OceanBase社区版入门到实战教程直播正在进行中~

快和小伙伴一起进群交流学习吧~

加入直播群方式一:

钉钉群号3255 4020

加入直播群方式二:

扫码下方二维码加入

海通证券实践:手动部署 OceanBase 集群-18

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论