分布式数据库oceanBase部署

相关链接

文档中心

视频中心

软件下载

OceanBase数据库基本操作

OceanBase简介

SQL执行计划

基本概念

为了更好地管理 OceanBase 数据库,您需要了解 OceanBase 数据库的基础概念,包括 OceanBase 集群、Zone 、OceanBase服务器(运行 observer 进程的服务器,简称OBServer)、资源池、租户、分区等。

OceanBase 数据库通过OceanBase 集群来进行管理。一个 OceanBase 集群由多个 OBServer 节点组成,每个 OBServer 节点属于一个 Zone。一般情况下,各个 Zone 内的机器配置与数量保持一致,多台 OBServer 作为资源组成各个业务所需的资源池。

管理员可以根据业务情况,将资源再划分成不同大小的资源池分配给租户使用,一般建议高性能要求的业务分配大资源池,低性能要求的业务分配小资源池。

租户拥有资源池后,可以创建数据库、表、分区等。

OceanBase 数据库基础概念之间的关系如下图所示。

部署

名词解释

  • 中控机器

    存储 OceanBase 数据库安装包和集群配置信息的机器。
  • 目标机器

    安装 OceanBase 数据库的机器。
  • OBD

    OceanBase Deployer,OceanBase

    开源软件的安装部署工具,简称为 OBD。
  • ODP

    OceanBase Database Proxy,OceanBase 高性能反向代理服务器,简称为 ODP。

节点规划

规划节点 节点IP
中控机器 10.20.200.62
oceanbase1 10.20.200.63
oceanbase2 10.20.200.64
oceanbase3 10.20.200.65

虚机规格全部为8核16G,一块50G系统盘,一块200G数据盘。具体硬盘规划见下文。

环境检查与初始化

参考官网链接

  • 系统与硬件

  • 设置免密

  • 检查时钟配置与误差

  • 规划硬盘

    新增挂载点 分区规划
    /data 规划165G data
    /redo 规划30G redo

注意:

数据盘

data_dir 创建后无法调整大小。您可以通过加减机器为 OceanBase 数据库进行扩容和缩容。目前,OceanBase 数据库不支持单机的磁盘级扩容和缩容。

事务日志盘

redo_dir事务日志达到磁盘总量的80% 时,将触发自动清除。但是,只有事务日志对应的内存数据已经合并融至基线数据中时,事务日志才能被删除。在相同数据量的情况下,事务日志的大小约为内存数据大小的三倍。因此事务日志盘所需空间上限与两次合并后的数据总量成正比。经验公式:事务日志文件大小 = 增量数据内存上限的 3 到 4 倍。

OceanBase 数据库安装盘

home_path。建议您为OceanBase 数据库安装盘预留至少 200 G 空间,以保存 7 天及以上的日志。OceanBase 数据库的 RPM 包安装目录位于${home_path}/log 下。运行日志会不断增长,并且 OceanBase 数据库无法自动删除运行日志。因此您需要定时删除运行日志。

  • 配置 limits.conf
  • 关闭防火墙和selinux
  • 创建用户

安装OBD,获取 OceanBase 数据库安装包

参考官网链接

国内下载地址

wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/ob-deploy-1.3.3-11.el7.x86_64.rpm
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-3.1.3-10100032022041510.el7.x86_64.rpm
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-libs-3.1.3-10100032022041510.el7.x86_64.rpm
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/obproxy-ce-3.2.3-2.el7.x86_64.rpm
yum install -y ob-deploy-1.3.3-11.el7.x86_64.rpm
obd mirror disable remote
obd mirror clone oceanbase-ce-libs-3.1.3-10100032022041510.el7.x86_64.rpm
obd mirror clone oceanbase-ce-3.1.3-10100032022041510.el7.x86_64.rpm
obd mirror clone obproxy-ce-3.2.3-2.el7.x86_64.rpm
obd mirror list local

使用OBD部署OceanBase数据库

参考官网链接

模板下载地址

连接 OceanBase 数据库

直连方式,使用2881端口:

obclient -h<your_ip> -P<observer_mysql_port> -uroot

语法

obclient -h10.10.10.1 -uusername@obtenant -P2881 -ppassword -c -A oceanbase

-h:提供 OceanBase 数据库连接IP,通常是一个 OBServer 的IP 地址。

-u:提供租户的连接账户,格式:用户名@租户名。MySQL 租户的管理员用户名默认是 root

-P:提供 OceanBase 数据库连接端口,默认是 2881,可以自定义。

-p:提供账户密码,为了安全可以不提供,改为在后面提示符下输入,密码文本不可见。

-c:表示在 MySQL 运行环境中不要忽略注释。

-A:表示在 MySQL 连接数据库时不自动获取统计信息。

oceanbase:访问的数据库的名称,可以更改为业务数据库。

普通租户通过直连方式连接时,需要确保该租户的资源分布在该 OBServer上,如果该租户的资源未分布在该 OBServer 上,则无法通过直连该 OBServer 连接到该租户。

使用 dbeaver 连接

集群和多租户管理

参考链接

配置管理

OceanBase 数据库通过设置配置项和系统变量来完成配置管理。

配置项主要用于运维,常用于控制机器及其以上级别的系统行为。可以作为 OBServer 启动参数和租户创建参数,也可以在 OBServer 运行时进行修改以调整系统行为。

系统变量通常和用户 Session 绑定,用于控制 Session 级别的 SQL 行为。

支持设置 Global 和Session 级别的变量。

设置 Global 级别的系统变量后,当前 Session 上不会生效,新建的任何 Session 都能读到新的变量值。设置 Session 级别的系统变量后,仅对当前 Session 生效。

  • 查看命令

SHOW PARAMETERS; SHOW [GLOBAL] VARIABLES;

  • 修改参数

memory_limit:用于配置OBServer最大可使用的总内存大小。当前该值无上限,如果设置的内存的最大上限超过了实际的物理内存总和,则会导致系统中其他按总内存计算的值偏大。

ALTER SYSTEM SET memory_limit='15G';

system_memory:用于设置系统预留的内存容量。

ALTER SYSTEM SET system_memory='3G';

资源管理

资源单元

SELECT * FROM oceanbase.__all_unit_config;

CREATE RESOURCE UNIT proya_unit MAX_CPU8, MAX_MEMORY'10G', MAX_IOPS10000,MAX_DISK_SIZE'100G', MAX_SESSION_NUM100000, MIN_CPU=8, MIN_MEMORY='10G', MIN_IOPS=10000;

ALTER RESOURCE UNIT unit1 MAX_CPU 15, MAX_MEMORY '20G', MAX_IOPS 128,max_disk_size '100G', MAX_SESSION_NUM 64, MIN_CPU=10, MIN_MEMORY='10G', MIN_IOPS=128;

DROP RESOURCE UNIT unit1;

资源池

SELECT * FROM oceanbase.__all_resource_pool;

CREATE RESOURCE POOL proya_pool UNIT='proya_unit',UNIT_NUM=1,ZONE_LIST=('zone1','zone2','zone3');

ALTER RESOURCE POOL pool_name UNIT [=] unit_name, UNIT_NUM [=] unit_num [DELETE UNIT = (unit_id_list)], ZONE_LIST [=] ('zone'[, 'zone' ...]);

ALTER RESOURCE POOL MERGE ('pool_name'[, 'pool_name' ...]) INTO ('merge_pool_name') ALTER RESOURCE POOL SPLIT INTO ('pool_name' [, 'pool_name' ...]) ON ('zone' [, 'zone' ...])

ALTER TENANT tenant_name RESOURCE_POOL_LIST [=](pool_name [, pool_name...]) ;

DROP RESOURCE POOL pool_name;

参数 UNIT_NUM 表示在集群的一个 Zone 里面包含的资源单元个数。该值小于等于一个 Zone 中的 OBServer 的个数。

参数 ZONE_LIST 表示资源池的 Zone 列表,显示该资源池的资源在哪些 Zone 中被使用。

租户管理

SELECT * FROM oceanbase.gv$tenant;

CREATE TENANT IF NOT EXISTS proya CHARSET='utf8mb4',ZONE_LIST=('zone1','zone2','zone3'), PRIMARY_ZONE='zone1;zone2,zone3', RESOURCE_POOL_LIST=('proya_pool') SET ob_tcp_invited_nodes='%' ;

ALTER TENANT {tenant_name | ALL}
[SET] [tenant_option_list] [opt_global_sys_vars_set]
tenant_option_list:
tenant_option [, tenant_option ...] tenant_option:
COMMENT [=]'string'
|PRIMARY_ZONE [=] zone
|RESOURCE_POOL_LIST [=](poolname [, poolname...])
|DEFAULT TABLEGROUP [=] {NULL | tablegroupname}
|LOCALITY [=] 'locality description'; opt_global_sys_vars_set:
VARIABLES system_var_name = expr [,system_var_name = expr] ...

DROP TENANT tenant_name [FORCE];

DROP TENANT tenant_name PURGE;

租户白名单

  • 系统变量 ob_tcp_invited_nodes 用于设置租户的 IP 白名单,是租户全局的白名单限制参数。默认值为 127.0.0.1,::1,表示仅允许本机的 IP 连接该租户。

SHOW VARIABLES **LIKE**'ob_tcp_invited_nodes';

  • 查看当前租户

  • 查看租户会话

show processlist;

创建用户

CREATE USER 'proya'@'%' IDENTIFIED BY 'xxx';

grant all on *.* to proya@'%';

分布式存储管理

官网链接

性能调优

操作命令

查看集群信息

select * from v$ob_cluster;

检查集群状态

SELECT info FROM __all_zone where name='merge_status';

IDLE为正常。

查看集群资源的分配情况(一)

SELECT t1.svr_ip, t1.svr_port, t1.zone, t2.with_rootserver, t1.cpu_total, t1.cpu_assigned cpu_ass, t1.cpu_assigned_percent cpu_ass_pct, round(t1.mem_total/1024/1024/1024,1) "mem_total(G)", round(t1.mem_assigned/1024/1024/1024,1) "mem_ass(G)", t1.mem_assigned_percent mem_ass_pct, t1.unit_num FROM __all_virtual_server_stat t1 JOIN __all_server t2 ON (t1.svr_ip=t2.svr_ip) ORDER BY zone;

查看集群资源的分配情况(二)

select a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, cpu_assigned, (cpu_total-cpu_assigned) cpu_free, mem_total/1024/1024/1024 mem_total_gb, mem_assigned/1024/1024/1024 mem_assign_gb, (mem_total-mem_assigned)/1024/1024/1024 mem_free_gb from __all_virtual_server_stat a join __all_server b on (a.svr_ip=b.svr_ip and a.svr_port=b.svr_port) order by a.zone, a.svr_ip ;

查看租户的资源使用情况

SELECT t1.tenant_name,concat(svr_ip,":",svr_port) as "unit_server",t3.max_cpu,t3.min_cpu,round(t3.max_memory/1024/1024/1024,1) as "max_memory(G)" ,round(t3.min_memory/1024/1024/1024,1) as "min_memory(G)" FROM __all_tenant t1,__all_unit t2,__all_unit_config t3,__all_resource_pool t4 where t1.tenant_id = t4.tenant_id AND t4.resource_pool_id=t2.resource_pool_id AND t4.unit_config_id=t3.unit_config_id ORDER BY t1.tenant_name ;

可以看到,租户资源分配存在一个最小值和最大值的区别,而集群的剩余资源是按最小值去计算的。这个导致剩余可用资源不那么精确。建议将最大值与最小值拉平。

分布式数据库oceanBase部署的更多相关文章

  1. 阿里技术分享:阿里自研金融级数据库OceanBase的艰辛成长之路

    本文原始内容由作者“阳振坤”整理发布于OceanBase技术公众号. 1.引言 OceanBase 是蚂蚁金服自研的分布式数据库,在其 9 年的发展历程里,从艰难上线到找不到业务场景濒临解散,最后在双 ...

  2. 性能跃升50%!解密自主研发的金融级分布式关系数据库OceanBase 2.0

    小蚂蚁说: 相信大家对蚂蚁金服自主研发的金融级分布式关系数据库OceanBase的故事不再陌生了.在刚刚过去的2018年天猫双11中,成交额2135亿再次创造了新纪录,而支撑今年双11的支付宝核心链路 ...

  3. 分布式数据库中的Paxos 算法

    分布式数据库中的Paxos 算法 http://baike.baidu.com/link?url=ChmfvtXRZQl7X1VmRU6ypsmZ4b4MbQX1pelw_VenRLnFpq7rMvY ...

  4. Distributed4:SQL Server 分布式数据库性能测试

    我使用三台SQL Server 2012 搭建分布式数据库,将一年的1.4亿条数据大致均匀存储在这三台Server中,每台Server 存储4个月的数据,Physical Server的配置基本相同, ...

  5. SQL Server 2008 数据库镜像部署实例之一 数据库准备

    SQL Server 2008 数据库镜像部署实例之一 数据库准备 一.目标 利用Sql Server 2008 enterprise X64,建立异步(高性能)镜像数据库,同时建立见证服务器实现自动 ...

  6. Memcached 分布式缓存系统部署与调试

    Memcache 分布式缓存系统部署与调试 工作机制:通过在内存中开辟一块区域来维持一个大的hash表来加快页面访问速度,和数据库是独立的;目前主要用来缓存数据库的数据;存放在内存的数据通过LRU算法 ...

  7. 分布式数据库Google Spanner原理分析

    Spanner 是Google的全球级的分布式数据库 (Globally-Distributed Database) .Spanner的扩展性达到了令人咋舌的全球级,可以扩展到数百万的机器,数已百计的 ...

  8. 全球分布式数据库:Google Spanner(论文翻译)

    本文由厦门大学计算机系教师林子雨翻译,翻译质量很高,本人只对极少数翻译得不太恰当的地方进行了修改. [摘要]:Spanner 是谷歌公司研发的.可扩展的.多版本.全球分布式.同步复制数据库.它是第一个 ...

  9. 在分布式数据库中CAP原理CAP+BASE

    本篇博文的内容均来源于网络,本人只是整理,仅供学习! 一.关系型数据库 关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1.A (At ...

  10. 开源分布式数据库SequoiaDB在去哪儿网的实践

    编者注: 中国的数据库行业也迎来了一波新的热点事件.分布式数据库这块新消息不断,也让大家开始关注中国的分布式数据库.首先是短短一周内,Pingcap和SequoiaDB巨杉数据库陆续宣布了C轮的数千万 ...

随机推荐

  1. 笔记:C++学习之旅---try语句和异常处理

        异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持,在C++语言中,异常处理包括:     *throw表达式(throw expression),异常检测部分使用throw表带是来 ...

  2. vmware-ubuntu 设置共享目录

    VMware可以通过右上方菜单,管理-虚拟机设置,进入共享文件夹设置界面: vmware设置共享目录,重新启动windows,偶尔会失效.可以按下面步骤重新设置下,copy就行 查询是否存在已挂载的文 ...

  3. Java并发(四)----线程运行原理

    1.线程运行原理 1.1 栈与栈帧   Java Virtual Machine Stacks (Java 虚拟机栈 JVM) 我们都知道 JVM 中由堆.栈.方法区所组成,其中栈内存是给谁用的呢?其 ...

  4. Vue3 +element-plus+ wangEditor 富文本编辑器+前端七牛云上传

    我用的vue3,element-plus ,没用ts 搭建wangEditor 参考 地址 https://www.cnblogs.com/xbxxf/p/16791084.html 七牛云安装参考地 ...

  5. 2021-07-28:最短的桥。在给定的二维二进制数组 A 中,存在两座岛。(岛是由四面相连的 1 形成的一个最大组。)现在,我们可以将 0 变为 1,以使两座岛连接起来,变成一座岛。返回必须翻转的

    2021-07-28:最短的桥.在给定的二维二进制数组 A 中,存在两座岛.(岛是由四面相连的 1 形成的一个最大组.)现在,我们可以将 0 变为 1,以使两座岛连接起来,变成一座岛.返回必须翻转的 ...

  6. 2021-08-09:给定一个有正、有负、有0的数组arr,给定一个整数k,返回arr的子集是否能累加出k。1)正常怎么做?2)如果arr中的数值很大,但是arr的长度不大,怎么做?

    2021-08-09:给定一个有正.有负.有0的数组arr,给定一个整数k,返回arr的子集是否能累加出k.1)正常怎么做?2)如果arr中的数值很大,但是arr的长度不大,怎么做? 福大大 答案20 ...

  7. django model字段类型

    1.models.AutoField 自增列=int(11) 如果没有的话,默认会生成一个名称为id的列,如果要显示的定义一个自增列,必须把该列设置为主键(primary_key=True)2.mod ...

  8. GPT大语言模型Alpaca-lora本地化部署实践【大语言模型实践一】

    模型介绍 Alpaca模型是斯坦福大学研发的LLM(Large Language Model,大语言)开源模型,是一个在52K指令上从LLaMA 7B(Meta公司开源的7B)模型微调而来,具有70亿 ...

  9. 【GiraKoo】线程本地存储(Thread Local Storage, TLS)

    [技术分享]线程本地存储(Thread Local Storage, TLS) 在项目开发中,遇到了关于TLS相关的问题.为了了解该机制的用途,在微软的官网查找了一些资料. 本文参考官方文档, 简单介 ...

  10. 万字长文详述ClickHouse在京喜达实时数据的探索与实践

    1 前言 京喜达技术部在社区团购场景下采用JDQ+Flink+Elasticsearch架构来打造实时数据报表.随着业务的发展 Elasticsearch开始暴露出一些弊端,不适合大批量的数据查询,高 ...