OceanBase安装
背景:
OceanBase是阿里巴巴、蚂蚁金服自主研发的可扩展的分布式关系数据库,实现了数千亿条记录、数百 TB 数据上的跨行跨表事务,主要支持支付宝核心的交易、支付、会员和账务系统等 OLTP 和 OLAP 在线业务。
在2017年双11期间,OceanBase承担了100%的交易,全球支付总笔数14.8亿笔,支付峰值25.6万笔/笔,数据库处理峰值4200万次/秒。
OceanBase群集架构:
OceanBase使用Paxos协议保证数据写到至少两个Zone中,一般情况下建议为三个Zone。也就是说若出现两个Zone都出现问题,需要DBA介入设置才能正常对外提供服务。

Oceanbase群集架构图
概念科普:
Zone:由多台OBServer组成,成为N-N-N部署架构,其中N表示OBServer的个数。
每个Zone包含两种角色:
RootService:总控服务,一主两备
PartitionService:分区服务,每个OBServer都提供
每个Zone只需一个RootService
推荐部署方式:
由于官方推荐OceanBase集群至少需要包含三个Zone,推荐三副本或者五副本的部署方式。
|
部署模式 |
说明 |
|
三副本部署 |
1-1-1 三机部署是最小规模,每个 zone 一台机器。 生产环境主要包括两地三中心部署模式, 是最普遍的模式。 |
|
五副本部署 |
包括两地三中心,三地五中心的部署模式,能够实现城市级无损容灾。 |
根据三副本的部署方式有同城三机房部署、两地三中心部署的解决方案,根据五副本的部署方式有两地三中心五副本部署、三地三中心五副本部署的解决方案。

同城三机房部署架构图
今天的分享我们是以同城三机房部署为案例,进行OceanBase群集进行安装部署。
安装流程:
OceanBase群集安装流程如图

安装流程图
l 软件要求
|
类别 |
要求 |
|
操作系统 |
Linux Redhat 6 x86-64 |
|
内核 |
2.6.32 及以上版本, 生产系统推荐 64 核 |
|
CPU |
至少8个CPU |
|
内存 |
16G 及以上,生产系统推荐 512G |
|
磁盘类型 |
推荐 SSD |
|
磁盘空间 |
内存大小的 4 倍以上 |
|
网卡 |
推荐万兆互联 |
l 安装规划
规划建议均以1-1-1 三副本最小部署 OceanBase 集群为例
- 主机规划
|
规划项 |
规划 |
|
服务器 IP |
snc-ob1:192.168.22.99 snc-ob2:192.168.22.98 snc-ob3:192.168.22.97 |
|
网卡名称 |
eth0/bond0 |
|
端口(端口必须为2881和2882无法更改!) |
RPC:服务端口 2882。 MySQL:客户端端口 2881。 |
|
安装用户 |
admin |
|
用户密码 |
****** |
|
安装目录 |
/home/admin/oceanbase |
|
集群 ID |
1 |
|
App名 |
snc |
- 磁盘规划
|
目录名 |
目录用途 |
空间大小 |
|
/data/1 |
数据盘承载了基线数据, 物理上只有一个基线数据文件 block_file,在安装目录 store/sstable 下。通过 OBServer 进程启动时一次性创建,大小根据启动参数datafile_disk_percentage 采用磁盘预分配策略,默认值为 95%,创建后无法调整大小。 |
根据存放数据量进行配置 |
|
/data/log1 |
事务日志盘包含多个固定大小的小文件, 位于安装目录store/{clog,ilog,slog}, 按需自动创建和清除,磁盘写到 80%会触发自清除逻辑,但前提是这部分日志数据对应的内存数据已经通过合并融合到了基线数据中,才能被删除。 |
至少内存数据大小的三倍,建议值为五倍 |
|
/home/admin/oceanbase |
基线数据文件和事务日志文件会通过软连接指向上述的两个独立磁盘,还有另外一个不断增长的文件是 OB 运行日志,在安装目录 log 下。 |
40GB |
l 准备安装环境
- 检查操作系统版本
使用root用户执行确认操作系统版本
# cat /proc/version
预期结果:
内核要求在 2.6.32 及以上版本64位操作系统上运行。
- 修改操作系统配置
² 检查网卡名称和 IP
使用root用户执行
# ifconfig
预期结果:IP地址与端口与规划一致,以snc-ob1为例

² 配置“sysctl.conf” 文件
为保证 OceanBase 正常运行,使用root用户在安装前运行vi编辑器修改“sysctl.conf” 文件以提高Linux 的系统性能。添加以下内容:
# for oceanbase
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
kernel.core_pattern = /data/1/core-%e-%p-%t
vm.min_free_kbytes = 2097152
执行命令以下使配置生效。
# /sbin/sysctl -p /etc/sysctl.conf
² 验证 NTP 时间同步
为什么要在这里特别提出ntp同步,oceanbase群集有一个硬性规定,若群集内各个机器的时间相差不能超过100毫秒,会导致群集无法启动。
使用root用户执行
# ntpstat
预期结果:
时间同步成功,建议同一个机房内的机器均采用同一个时钟同步源。



² 配置操作系统 ulimit 资源限制
使用root用户运行vi编辑器修改/etc/security/limits.conf 配置文件添加以下内容
* soft nofile 655350
* hard nofile 655350
* soft stack 20480
* hard stack 20480
* soft core unlimited
* hard core unlimited
执行命令,使全局生效
# ulimit -a
- 创建安装用户
使用root用户执行以下命令创建admin用户
# useradd -d /home/admin -s /bin/bash -m admin
l 准备安装包
把OceanBase RPM安装包和Mysql客户端RPM包上传至/opt目录下。
l 安装 OceanBase 软件
在安装前,需要用root用户对admin用户配置sudo操作,该操作不在此次分享范围内。
使用admin用户执行以下命令进行OceanBase软件安装,切记不能使用yum进行安装OceanBase RPM包!!!否则会导致群集无法启动!!!不建议使用不标准的方式,包括目录只要一改就一堆的问题!!!
$ sudo rpm -ivh oceanbase-1.XX.el6.x86_64.rpm --prefix=/home/admin/oceanbase;
将安装目录赋给“admin” 用户
$ sudo chown -R admin:admin /home/admin/oceanbase
l 创建所需目录
使用admin用户创建相关目录并创建相关链接
$ mkdir -p /data/1/abcbank/{sstable,etc3,sort_dir} /data/log1/abcbank/{slog,clog,ilog,etc2} /home/admin/oceanbase/store/abcbank
$ ln -sf /data/1/abcbank/sstable /home/admin/oceanbase/store/abcbank/sstable && ln -sf /data/1/abcbank/sort_dir /home/admin/oceanbase/store/abcbank/sort_dir && ln -sf /data/log1/abcbank/slog /home/admin/oceanbase/store/abcbank/slog && ln -sf /data/log1/abcbank/clog /home/admin/oceanbase/store/abcbank/clog && ln -sf /data/log1/abcbank/ilog /home/admin/oceanbase/store/abcbank/ilog
l 启动 OceanBase
在每台ZONE机器上用admin用户执行以下命令,启动OceanBase

ZONE_1这个地方需要修改为对应的ZONE名
|
服务 |
参数 |
说明 |
|
observer |
{-h | --help} |
命令帮助。 |
|
{-z | --zone} zone |
指定 zone 信息。 |
|
|
{-p | --mysql_port} port |
设置 MySQL 协议端口。 |
|
|
{-P | --rpc_port} port |
RPC 协议端口。 |
|
|
{-N | --nodaemon} |
不运行守护进程 |
|
|
{-n | --appname} appname |
指定服务的 App 名称。 |
|
|
{-c | --cluster_id} ID |
集群 ID。 |
|
|
{-d | --data_dir} DIR |
指定数据文件目录 |
|
|
{-i | --devname} dev |
网卡名。 |
|
|
{-o | --optstr} parameterexpr |
其他参数。 |
|
|
{-r | --rs_list} rs_list |
rootservice 服务器列表。 |
|
|
{-l, --log_level} log_level |
日志级别。 |
这里需要注意:ootservice_list默认第一个列出的ip为主节点,datafile_disk_percent_percentage强烈不建议创建后修改该值,创建后会预分配空间。
l 初始化 OceanBase
使用admin用户使用mysql客户端进行远程登录任意一ZONE,并运行BootStrap完成初始化。
$ mysql -h192.168.22.99 -P2881 –uroot
SQL> ALTER SYSTEM BOOTSTRAP
REGION 'HANGZHOU' ZONE 'ZONE_1' SERVER '192.168.22.99:2882',
REGION 'HANGZHOU' ZONE 'ZONE_2' SERVER '192.168.22.98:2882',
REGION 'HANGZHOU' ZONE 'ZONE_3' SERVER '192.168.22.97:2882';
OceanBase安装的更多相关文章
- OceanBase安装和使用
链接 https://mp.weixin.qq.com/s?spm=a2c6h.12873639.0.0.41f92c9bH5FL2Y&__biz=MzU3OTc2MDQxNg==&m ...
- 脱离OBDeploy工具,手工部署OceanBase方法
[简介] OBDeploy是OceanBase集群部署的工具,可以通过简单的几行命令,就能快速的进行OceanBase部署.但对于初学者来讲,可能会比较困惑,Deploy到底做了哪些事情?里面的具体步 ...
- Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)
1.NOSQL简介 nosql的产生并不是要彻底的代替关系型数据库,而是作为传统关系型数据库的一个补充. Facebook和360使用Cassandra来存储海量社交数据 Twitter在其url抓取 ...
- 阿里技术分享:阿里自研金融级数据库OceanBase的艰辛成长之路
本文原始内容由作者“阳振坤”整理发布于OceanBase技术公众号. 1.引言 OceanBase 是蚂蚁金服自研的分布式数据库,在其 9 年的发展历程里,从艰难上线到找不到业务场景濒临解散,最后在双 ...
- OceanBase数据库实践入门——手动搭建OceanBase集群
前言 目前有关OceanBase功能.案例.故事的文章已经很多,对OceanBase感兴趣的朋友都想安装一个数据库试试.本文就是分享初学者如何手动搭建一个OceanBase集群.这也是学习理解Ocea ...
- OceanBase三节点部署&&扩容
OceanBase三节点部署&&扩容 环境信息搭建三节点(1-1-1)创建资源池和租户查看数据分布 环境信息 IP OB目录 端口 192.168.43.89 /data/observ ...
- 开源实践 | 携程在OceanBase的探索与实践
写在前面:选型考虑 携程于1999年创立,2016-2018年全面推进应用 MySQL 数据库,前期线上业务.前端技术等以 SQL Server 为主,后期数据库逐步从 SQL Server 转到开源 ...
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
- 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法
如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...
随机推荐
- Unity C# 关于Attribute的使用
最近在研究Attribute,感觉挺好玩,搜到一篇不错的文章,分享给大家 原文:未知?找到后补上! 举两个例子,在变量上使用[SerializeFiled]属性,可以强制让变量进行序列化,可以在Uni ...
- Fsharp 类中的空字段
fsharp设计之初就尽可能的避免使用null.在我的编程经验中null真是个错误之源,垃圾代码之源,95%的系统奔溃之源.其实在设计之初就应该考虑你的系统需要null表现什么?是未初始化的状态,还是 ...
- Swift-取消传统For循环
1.取消传统的For循环 传统的for,在swift 3.0 被取消 i++/++i在swift 3.0 被取消 i += 1代替 for var i = 0;i<10;i +=1 { } 2. ...
- 《Head First 设计模式》之代理模式
代理模式(Proxy):控制对象访问 ——为另一个对象提供一个替身或占位符来访问这个对象. 要点: 代理模式有许多变体,如:缓存代理.同步代理.防火墙代理和写入时复制代理 代理在结构上类似装饰者,但目 ...
- php cur错误:SSL错误 unable to get local issuer certificatebool
采集https链接时出现的问题 办法:跳过SSL证书检查 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLO ...
- 在 eclipse 中调出其内置的浏览器
两种方法: 1.点击工具栏中的浏览器图标,就会在主面板中出现浏览器: 跳出一个blank页面,如下: 第二种方法:点击Window——Show view——Other 输入 "browser ...
- 类型信息(RTTI和反射)——RTTI
运行时类型信息可以让你在程序运行时发现和使用类型信息. 在Java中运行时识别对象和类的信息有两种方式:传统的RTTI,以及反射.下面就先来说下RTTI. 1.RTTI: RTTI:在运行时,识别一个 ...
- HTML5开发必备工具
现在除了移动APP开发之外,比较火的就是html5开发了,现阶段的HTML5被看做是Web开发者创建流行web应用的利器,增加了对视频和Canvas2D的支持,它的优点就是可以跨平台使用,比如你是开发 ...
- vs2008使用mysql链接错误
原因是因为安装了64位的mysql,而开发工具室32位的,需要安装32位的开发库就可以了
- Altium_Designer-如何放置总线
在绘制原理图时我们避免不了要用到总线,但是在我们使用Altium Designer绘制总线时总是出现一些问题,导致总线无法使用.下面我就来帮助大家绘制出一条的总线,希望能够帮助在这方面摸索的人们. 第 ...