OceanBase(1)OceanBase介绍与安装部署教程

tanglu 56 2022-05-07

一、OceanBase简介

OceanBase是一种原生的分布式数据库,阿里旗下很多服务都是运行于OceanBase上,比如淘宝、支付宝、天猫、花呗等,后来随着发展又有工商银行、中国移动、招商证券等金融机构开始使用OceanBase。OceanBase有以下核心特性

· 分布式:集群形式部署,支持水平扩展,在线扩容缩容方便,能自动负载均衡

· 高可用:基于Paxos协议做到数据强一致性,即便少数副本故障也不会丢失数据,服务自动恢复(RPO=0;RTO<30S)

· 多租户:按需分配实例(集群创建好了后通过命令来创建业务实例),可以对配置在线调整,CPU和内存资源可以相互隔离

· 高兼容:原生的SQL和事务引擎,兼容MySQL、Oracle(社区版暂不支持Oracle的兼容),数据可以平滑迁移

· 高性能:在真实业务系统下单表最大3200亿行,QPS 6100万次,准内存处理性能

· 低成本:X86服务器,不依赖存储设备


OceanBase可以解决MySQL集群以下痛点

ob1.png


二、OceanBase社区版安装部署

1、OceanBase软件包介绍

oceanbase-ce(必需):OceanBase社区版核心程序

oceanbase-ce-libs(必需):OceanBase社区版库文件

ob-deploy:自动化部署工具

obproxy:OceanBase反向代理工具,当集群数量较多时建议使用

ob2.png


2、下载OceanBase软件包

可通过以下3种方式获取OceanBase安装包

· 官方下载:https://open.oceanbase.com/softwareCenter/community

· Github下载:https://github.com/oceanbase/oceanbase/releases

· 阿里云Yum:https://mirrors.aliyun.com/oceanbase/OceanBase.repo


3、手动部署OceanBase三副本集群(以下操作每个节点都需要执行)

· 下载RPM包进行安装,RPM 包将被自动安装在/home/admin/oceanbase

wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-3.1.1-4.el7.x86_64.rpm
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-libs-3.1.1-4.el7.x86_64.rpm
rpm -ivh oceanbase-ce-*


· 建立admin用户并配置sudo权限

useradd admin
usermod admin -G wheel


· 建立数据目录,和使用 OBD 自动化部署不同的是这里指定了一个集群名——obdemo

#创建总目录
mkdir -p /home/admin/oceanbase/store/obdemo  

#创建数据和日志目录
mkdir -p /data/obdemo/{sstable,etc3} 
mkdir -p /redo/obdemo/{clog,ilog,slog,etc2}

#创建软连接
for f in {clog,ilog,slog,etc2}; 
do
 ln -s /redo/obdemo/$f /home/admin/oceanbase/store/obdemo/$f
done

for f in {sstable,etc3}; 
do
 ln -s /data/obdemo/$f /home/admin/oceanbase/store/obdemo/$f
done


chown -R admin. /data/obdemo
chown -R admin. /redo/obdemo


· 最终目录结构如下

ob_tree.png


· 启动服务(如果节点之间配置一致,启动参数里只有 -z 参数不同)

-z 选项:声明节点所属的zone,三个 zone 的三个节点就可以初始化为一个三副本集群,需要注意对应关系一定要正确

-o 选项:内存相关配置,需要注意系统可用内存不要低于memory_limit 值。如果节点内存足够(大于64G),那么可以不用额外声明 -o。

-d 选项:数据存放目录

-r 选项:节点信息

-c 选项:集群标识号,节点之间配置一个相同的号码

su - admin
/home/admin/oceanbase/bin/observer -i eth0 -p 2881 -P 2882 -z zone1 -d /home/admin/oceanbase/store/obdemo -r '172.20.1.212:2882:2881;172.20.1.213:2882:2881;172.20.1.214:2882:2881' -c 20220518 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=50G,stack_size=1536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2"
/home/admin/oceanbase/bin/observer -i eth0 -p 2881 -P 2882 -z zone2 -d /home/admin/oceanbase/store/obdemo -r '172.20.1.212:2882:2881;172.20.1.213:2882:2881;172.20.1.214:2882:2881' -c 20220518 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=50G,stack_size=1536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2"
/home/admin/oceanbase/bin/observer -i eth0 -p 2881 -P 2882 -z zone3 -d /home/admin/oceanbase/store/obdemo -r '172.20.1.212:2882:2881;172.20.1.213:2882:2881;172.20.1.214:2882:2881' -c 20220518 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=50G,stack_size=1536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2"


· 初始化集群

当 OceanBase 集群三个节点都正常启动后就可以通过2881端口连接到任一节点进行bootstrap集群初始化操作,如果初始化失败的话需要排查上一步初始化时-o所配置的参数,比如内存是否不足、cpu是否配置不够等都会导致初始化集群失败

mysql -h 172.20.1.212 -u root -P 2881 -p -c -A
set session ob_query_timeout=1000000000;alter system bootstrap ZONE 'zone1' SERVER '172.20.1.212:2882', ZONE 'zone2' SERVER '172.20.1.213:2882', ZONE 'zone3' SERVER '172.20.1.214:2882' ;
#大概需要30秒左右


· 修改root用户和OBProxy用户密码

mysql -h 172.20.1.212 -u root@sys -P 2881 -p -c -A
alter user root identified by '123456' ;
#这两部这里可以先不做,等需要进行obpxory的时候再操作,可以看后面的相关文章
#create user proxyro;       # 默认 OBProxy 连接 OceanBase 集群时使用用户 proxyro 。该用户不存在,需要手动创建。
#grant select on oceanbase.* to proxyro identified by '123456' ;


版权声明
本站所有文章均为原创,转载请注明出处!小站维护不易,如果对您有所帮助,希望能点击一下站内广告,谢谢!
上一篇:【MySQL运维】如何对大表进行优化的思路
下一篇:【系统运维】文本流编辑器工具sed命令使用教程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

微信二维码