zoukankan      html  css  js  c++  java
  • 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';

     

     

  • 相关阅读:
    阿里中间件——消息中间件Notify和MetaQ
    大型网站架构系列:分布式消息队列
    Mycat
    spring集成mybatis实现mysql读写分离
    mysql5.7.18的安装与主从复制
    NuGet学习笔记(3) 搭建属于自己的NuGet服务器
    NuGet学习笔记(1)——初识NuGet及快速安装使用
    Android 中使用 html 作布局文件
    获取WebView加载HTML时网页中的内容
    android学习——popupWindow 在指定位置上的显示
  • 原文地址:https://www.cnblogs.com/nolanchan/p/8296986.html
Copyright © 2011-2022 走看看