分布式数据库oceanBase部署
分布式数据库oceanBase部署
相关链接
基本概念
为了更好地管理 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部署的更多相关文章
- 阿里技术分享:阿里自研金融级数据库OceanBase的艰辛成长之路
本文原始内容由作者“阳振坤”整理发布于OceanBase技术公众号. 1.引言 OceanBase 是蚂蚁金服自研的分布式数据库,在其 9 年的发展历程里,从艰难上线到找不到业务场景濒临解散,最后在双 ...
- 性能跃升50%!解密自主研发的金融级分布式关系数据库OceanBase 2.0
小蚂蚁说: 相信大家对蚂蚁金服自主研发的金融级分布式关系数据库OceanBase的故事不再陌生了.在刚刚过去的2018年天猫双11中,成交额2135亿再次创造了新纪录,而支撑今年双11的支付宝核心链路 ...
- 分布式数据库中的Paxos 算法
分布式数据库中的Paxos 算法 http://baike.baidu.com/link?url=ChmfvtXRZQl7X1VmRU6ypsmZ4b4MbQX1pelw_VenRLnFpq7rMvY ...
- Distributed4:SQL Server 分布式数据库性能测试
我使用三台SQL Server 2012 搭建分布式数据库,将一年的1.4亿条数据大致均匀存储在这三台Server中,每台Server 存储4个月的数据,Physical Server的配置基本相同, ...
- SQL Server 2008 数据库镜像部署实例之一 数据库准备
SQL Server 2008 数据库镜像部署实例之一 数据库准备 一.目标 利用Sql Server 2008 enterprise X64,建立异步(高性能)镜像数据库,同时建立见证服务器实现自动 ...
- Memcached 分布式缓存系统部署与调试
Memcache 分布式缓存系统部署与调试 工作机制:通过在内存中开辟一块区域来维持一个大的hash表来加快页面访问速度,和数据库是独立的;目前主要用来缓存数据库的数据;存放在内存的数据通过LRU算法 ...
- 分布式数据库Google Spanner原理分析
Spanner 是Google的全球级的分布式数据库 (Globally-Distributed Database) .Spanner的扩展性达到了令人咋舌的全球级,可以扩展到数百万的机器,数已百计的 ...
- 全球分布式数据库:Google Spanner(论文翻译)
本文由厦门大学计算机系教师林子雨翻译,翻译质量很高,本人只对极少数翻译得不太恰当的地方进行了修改. [摘要]:Spanner 是谷歌公司研发的.可扩展的.多版本.全球分布式.同步复制数据库.它是第一个 ...
- 在分布式数据库中CAP原理CAP+BASE
本篇博文的内容均来源于网络,本人只是整理,仅供学习! 一.关系型数据库 关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1.A (At ...
- 开源分布式数据库SequoiaDB在去哪儿网的实践
编者注: 中国的数据库行业也迎来了一波新的热点事件.分布式数据库这块新消息不断,也让大家开始关注中国的分布式数据库.首先是短短一周内,Pingcap和SequoiaDB巨杉数据库陆续宣布了C轮的数千万 ...
随机推荐
- OpenAI的子词标记化神器--tiktoken 以及 .NET 支持库SharpToken
OpenAI在其官方GitHub上公开了一个开源Python库:tiktoken,这个库主要是用力做字节编码对的. 字节编码对(Byte Pair Encoder,BPE)是一种子词处理的方法.其主要 ...
- spring boot自动装配、@ConfigurationProperties、@DependsOn、@Import注解
1.自动装配组件@Autowired和@Resource @Autowired @Autowired 注解属于spring注解 默认为 @Autowired(required=true), requi ...
- 性能_1 Jmeter脚本编写
一.万能法 先把项目启动 打开项目接口文档,接口文档: 一般是开发 特别注意事项:当你的接口请求参数为json格式时,一定要写请求头,请求头中一定要有 Content-Type: applicatio ...
- ET中热更(ILRuntime)使用过程中,需要做的适配器,比如Linq排序
ET中热更(ILRuntime)使用过程中,需要做的适配器,比如Linq排序 By Flamesky 最近项目中用到个Linq的排序,由于没有注册适配器,导致不能用,其实ILRT作者已经做得很好,报错 ...
- drf重写authenticate方法实现多条件登录(源码分析)
drf重写authenticate方法实现多条件登录(源码分析) 1. 思路 JWT拓展的登录视图中, 在接受到用户名和密码时, 调用的也是Django的认证系统中提供的authenticate()来 ...
- 2021-08-18:扰乱字符串。使用下面描述的算法可以扰乱字符串 s 得到字符串 t :1.如果字符串的长度为 1 ,算法停止。2.如果字符串的长度 > 1 ,执行下述步骤:在一个随机下标处将字符串
2021-08-18:扰乱字符串.使用下面描述的算法可以扰乱字符串 s 得到字符串 t :1.如果字符串的长度为 1 ,算法停止.2.如果字符串的长度 > 1 ,执行下述步骤:在一个随机下标处将 ...
- Could not resolve com.android.tools.lint:lint-kotlin:26.2.0.
好久没有使用weexplus publish android 打包apk, 今一运行失败了,提示Could not resolve com.android.tools.lint:lint-kotlin ...
- 代码随想录算法训练营Day46 动态规划
代码随想录算法训练营 代码随想录算法训练营Day46 动态规划| ● 139.单词拆分 关于多重背包,你该了解这些! 背包问题总结篇! 139.单词拆分 题目链接:139.单词拆分 给定一个非空字符 ...
- 【原创】浅谈EtherCAT主站EOE(上)-EOE网络
这篇文章的标题虽然是关于EtherCAT EOE,但其实主要内容是关于整个EOE网络结构,属于计算机网络原理.而EtherCAT EoE只是简单介绍,并不是文章的重点.需要注意的是,我们的描述主要基于 ...
- WPF 入门笔记 - 02 - 布局综合应用
本篇博文对接上篇末尾处WPF常用布局控件的综合应用,为痕迹g布局控件介绍课后作业的一个思路方法. 前言 首先来谈一谈布局原则: WPF窗口只能包含一个元素(Window元素属于内容控件,内容控件只允许 ...