文章目录
环境简介
学院资源给了很大力的支持,在内存方面直接每台虚拟机直接可以达到64GB!具体环境资源信息如下所示:
序号 | 虚拟机名称 | CPU | 内存 | 存储 |
---|---|---|---|---|
1 | BigDataMag | 2 | 64 | 100 |
2 | node2 | 2 | 64 | 100 |
3 | node3 | 2 | 64 | 100 |
虚拟机的模板镜像均为:ubuntu16.04-hadoop
。
搭建准备
在具体开始搭建OB集群之前,首先进行必要的资源文件下载,资料搜集。同时对整体安装进行规划。
资源文件与参考资料
OB迷你版安装地址
下载完成后使用文件上传,上传到虚拟机。
总体规划
目标:基于3台虚拟机搭建OceanBase集群
OCP(OceanBase Cloud Platform)企业级数据库管理平台,支持自动部署OB集群。因其占用资源较大,在此处选择绕过OCP进行手动部署。OCP是可选组件,可以不装。使用两个黑屏工具ob client和mysql客户端来替代管理。
官网下载的ob2.2迷你试用版只需2c8g即可安装,在这里选择使用其部署一个1-1-1架构的集群。可以做功能性测试,性能性测试暂且还不行。
节点ip信息:
序号 | 虚拟机名称 | IP | 内存 | zone名称 |
---|---|---|---|---|
1 | BigDataMag | 192.168.110.192 | 64 | zone1 |
2 | node2 | 192.168.110.199 | 64 | zone2 |
3 | node3 | 192.168.110.18 | 64 | zone3 |
端口:
ob集群内RPC服务端口 2882
observer客户端端口 2881
obproxy客户端端口 2883
用户管理
创建一个安装用户 admin
$ sudo adduser admin
切换用户为admin
$ su admin
使admin具有管理员权限
$ sudo adduser admin sudo
安装目录 /home/admin/oceanbase
集群名称 obdemo
磁盘规划
(1)、数据盘 /data/1
数据盘承载了基线数据,物理上只有一个基线数据文件block_file,在安装目录 store/sstable 下。
通过 OBServer 进程启动时一次性创建,大小根据启动参数 datafile_disk_percentage 采用磁盘预分配策略,默认值为 95%,创建后无法调整大小。
(2)、事务日志盘 /data/log1
事务日志盘包含多个固定大小的小文件,位于安装目录 store/{clog,ilog,slog},按需自动创建和清除,磁盘写到 80% 会触发自清除逻辑。
大小要求:内存大小3-4倍
(3)、OceanBase软件安装盘: /home
大小建议100G+
OceanBase 的 rpm 包安装目录在/home/admin/oceanbase 下,其中基线数据文件和事务日志文件会通过软连接指向上述的两个独立磁盘,
还有另外一个不断增长的文件是 OB 运行日志,在安装目录 log下。
OB 进程本身无法自删除运行日志,需要定时任务或运维脚本完成删除逻辑。
$ df -h |egrep home\|data
环境检查
操作系统
虚拟机操作系统为ubuntu,查看具体版本可以使用指令
$ cat /proc/version
软件环境:
Java环境:JDK 1.8
Python环境:2.7.12
MySQL客户端:14.14
CPU
$ lscpu
内存
详细:$ dmidecode -t memory
内存数量:$ dmidecode -t memory |grep -A16 "Memory Device$" |grep 'Size:.*MB' |wc -l
每个内存大小:$ dmidecode -t memory |grep -A16 "Memory Device$" |grep "Size:"
硬盘
硬盘数量、大小:$ fdisk -l |grep "Disk /dev/sd"
关闭防火墙
$ sudo ufw disable
(默认已经关闭)
配置时钟同步
OceanBase是个分布式数据库,要求各个observer节点的时间保持同步,时间误差控制在100ms以内。
节点时间误差偏大时,后面初始化OceanBase集群会失败,或者现有的OceanBase集群会出现异常。
节点间的时间同步要靠Linux的NTP同步来保证。
检查时间误差使用clockdiff命令。
clockdiff 192.168.110.192
clockdiff 192.168.110.199
clockdiff 192.168.110.18
注:因虚拟机位于同一主机,故检测时间误差delta均不超过100ms,不再配置时间同步
依赖软件安装
tree:$ sudo apt install tree
clockdiff:$ sudo apt install iputils-clockdiff
默认限制修改(此步未实际改动)
使用命令ulimit可以查看用户会话的默认限制(在本机中无)
ubuntu下可以修改/etc/security/limits.conf文件实现对于限制的修改永久生效。
部分可能需要的修改内容:
$ vi /etc/security/limits.conf
* soft nofile 655360
* hard nofile 655360
* soft nproc 655360
* hard nproc 655360
* soft stack unlimited
* hard stack unlimited
开始手动安装OceanBase迷你版集群
解压软件,并修改目录权限
$ tar -xvf mini-ob-deploy.tar -C /home/admin/
$ cd /home/admin
$ ls -l
查看解压后效果
总用量8
drwxr-xr-x. 11 121066 users 4096 Aug 20 11:39 mini-ob-deploy
可以修改目录权限
chown -R admin:admin /home/admin/mini-ob-deploy
drwxr-xr-x. 11 admin admin 4096 Aug 20 11:39 mini-ob-deploy
初始化目录
首先确保admin用户已经创建,相应的文件系统目录{/home/admin/ , /data/1 , /data/log1 }都存在,并且空间大小符合要求。
在ubuntu下,新建/data根目录为root权限,可以将其更改为admin权限。
mkdir -p /data/1/obdemo/{etc3,sort_dir,sstable}
mkdir -p /data/log1/obdemo/{clog,etc2,ilog,slog,oob_clog}
mkdir -p ~/oceanbase/{admin,bin,etc,store}
mkdir -p ~/oceanbase/store/obdemo
cp ~/mini-ob-deploy/bin/observer ~/oceanbase/bin/
for t in {etc3,sort_dir,sstable};do ln -s /data/1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done
for t in {clog,etc2,ilog,slog,oob_clog};do ln -s /data/log1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done
注:可以编写shell脚本文件方便部署其他服务器,多条命令同时执行,在每条命令之后添加&&
检查目录:
启动OBSever进程
到每个节点的admin用户下,启动observer进程,注意修改 zone, IP, 网卡名字。
参数 | 含义 |
---|---|
-i | 后接网卡名称。如果有2个网卡,要指定业务IP所在的网卡名称。 |
-P | RPC端口 |
-p | 客户端连接断口 |
-z | 后接Zone名称,可以自定义。Zone是逻辑机房概念,三台机器分属于不同机房,不能重复。 |
-d | 后跟集群主目录,除集群名字obdemo外,其他不要变动。 |
-r | 后跟一组服务器信息,格式是ip:RPC端口:客户端连接端口,如ip:2882:2881,分号分割,表示rootservice list信息。三台机器参数一致。 |
-c | 后跟集群ID,一组数字,可以自定义。同一个集群,ID必须相同,不同集群不要重复即可。 |
-n | 后跟集群名称,可以自定义,不同集群名称不要重复即可。 |
-o | 后跟集群参数,需要根据实际情况设置。system_memory 指定OB内部保留内存,默认是30G,机器内存比较少的情况下把这个调小,影响就是可能在性能测试时有内存不足问题。 |
datafile_size | 指定OceanBase数据文件sstable的大小(一次性初始化),根据/data/1/ 可用空间评估,建议不少于100G,同时又保留一些剩余空间.如果/data/1跟/data/log1本身就是一个文件系统(共用一个盘),那么务必保证留给/data/log1的空间大小是内存的2-4倍。config_additional_dir指定参数文件的冗余目录。 |
注意这里的参数设置,由于迷你版2c8g资源较少,因此需要特殊设置部分内存参数。参数里指定数据文件的大小、内存的大小,以方便个别环境资源不足想精确控制observer对资源的占用。
# su - admin
$ cd /home/admin/oceanbase
zone1 201节点:
$ bin/observer -i eth0 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r '192.168.110.192:2882:2881;192.168.110.199:2882:2881;192.168.110.18:2882:2881' -c 20201109 -n obdemo -o "memory_limit=24G,cpu_count=2,datafile_size=40G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"
$
$ ps -ef|grep observer
$ netstat -ntlp |grep observer
$ df -h |egrep home\|data
$
zone2 202节点:
$ bin/observer -i eth0 -P 2882 -p 2881 -z zone2 -d /home/admin/oceanbase/store/obdemo -r '192.168.0.220:2882:2881;192.168.0.213:2882:2881;192.168.0.162:2882:2881' -c 20201013 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,row_purge_thread_count=1,net_thread_count=1,enable_syslog_recycle=True,enable_merge_by_turn=FALSE,cpu_count=16,location_refresh_thread_count=2,max_syslog_file_count=3,major_freeze_duty_time=Disable,__easy_memory_limit=1G,schema_history_expire_time=1d,merge_thread_count=1,writing_throttling_trigger_percentage=70,_max_trx_size=2M,workers_per_cpu_quota=2,enable_separate_sys_clog=0,datafile_disk_percentage=90,__min_full_resource_pool_memory=536870912,system_memory=5G,memory_chunk_cache_size=128M,trace_log_slow_query_watermark=10s,writing_throttling_maximum_duration=1m,switchover_process_thread_count=1,datafile_size=40G,minor_freeze_times=500,stack_size=1536K,disk_io_thread_coun=1,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"
$ ps -ef|grep observer
$ netstat -ntlp |grep observer
$ df -h |egrep home\|data
$ cat log/observer.log
zone3 203节点:
$ bin/observer -i eth0 -P 2882 -p 2881 -z zone3 -d /home/admin/oceanbase/store/obdemo -r '192.168.0.220:2882:2881;192.168.0.213:2882:2881;192.168.0.162:2882:2881' -c 20201013 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,row_purge_thread_count=1,net_thread_count=1,enable_syslog_recycle=True,enable_merge_by_turn=FALSE,cpu_count=16,location_refresh_thread_count=2,max_syslog_file_count=3,major_freeze_duty_time=Disable,__easy_memory_limit=1G,schema_history_expire_time=1d,merge_thread_count=1,writing_throttling_trigger_percentage=70,_max_trx_size=2M,workers_per_cpu_quota=2,enable_separate_sys_clog=0,datafile_disk_percentage=90,__min_full_resource_pool_memory=536870912,system_memory=5G,memory_chunk_cache_size=128M,trace_log_slow_query_watermark=10s,writing_throttling_maximum_duration=1m,switchover_process_thread_count=1,datafile_size=40G,minor_freeze_times=500,stack_size=1536K,disk_io_thread_coun=1,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"
$ ps -ef|grep observer
$ netstat -ntlp |grep observer
$ df -h |egrep home\|data
$ cat log/observer.log
备份:
‘192.168.110.192:2882:2881;192.168.110.199:2882:2881;192.168.110.18:2882:2881’ -c 20201109 -n obdemo -o “memory_limit=24G,cache_wash_threshold=1G,row_purge_thread_count=1,net_thread_count=1,enable_syslog_recycle=True,enable_merge_by_turn=FALSE,cpu_count=16,location_refresh_thread_count=2,max_syslog_file_count=3,major_freeze_duty_time=Disable,__easy_memory_limit=1G,schema_history_expire_time=1d,merge_thread_count=1,writing_throttling_trigger_percentage=70,_max_trx_size=2M,workers_per_cpu_quota=2,enable_separate_sys_clog=0,datafile_disk_percentage=90,__min_full_resource_pool_memory=536870912,system_memory=5G,memory_chunk_cache_size=128M,trace_log_slow_query_watermark=10s,writing_throttling_maximum_duration=1m,switchover_process_thread_count=1,datafile_size=40G,minor_freeze_times=500,stack_size=1536K,disk_io_thread_coun=1,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2”
报错:
- error while loading shared libraries:libssl.so.10:cannot open shared object file:No such file or directory
解答:修复一下软链接
cd /lib/x86_64-linux-gnu/
sudo ln -s libssl.so.1.0.0 libssl.so.10
sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10