FAQ|OceanBase DBA从入门到实践

《DBA从入门到实践》教程于3月27日正式开启。在此阶段我们会整理教程期间大家的常见问题在此,便于大家更好地进行学习。
:alarm_clock:活动时间:3月27日-5月29日 19:30-20:00
:point_right::报名预约教程:OceanBase 社区
频率:1周/次

课程安排

3月27日 OceanBase 数据库概述
4月10日 OceanBase 社区版的安装和部署
4月17日 测试 OceanBase 数据库
4月24日 OceanBase 数据库的迁移和同步
5月8日 运维 OceanBase 数据库
5月15日 使用 OceanBase 社区版进行业务开发
5月22日 OceanBase 数据库的诊断和调优
5月29日 OceanBase 认证体系和用户实践
——————————————————

资料库

:blossom:学习过程中如有问题,请在问答发帖进行交流:https://ask.oceanbase.com/
:blossom:查看教程回放及完成课后习题:OceanBase 社区
:blossom:阅读源码 :GitHub - oceanbase/oceanbase: OceanBase is an enterprise distributed relational database with high availability, high performance, horizontal scalability, and compatibility with SQL standards.
:blossom:博客技术专题:OceanBase 社区
:blossom:OceanBase 快速安装、部署:OceanBase 社区
——————————————————

《DBA从入门到实践》第一期:OceanBase 数据库概述直播答疑

第一期的学习笔记:
第一章 OceanBase 数据库概述.pdf (991.6 KB)

1、有供学员练习的云环境么?收费不离谱就行
答:可以直接采购云服务器进行部署,最低 2C8G 即可部署单机版,机器规格可以参考https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000508277

2、oracle 主要 AP 加强 TP?
答:视频中说的是 Oracle 原本是 TP 类的数据库,正在逐步补齐 AP 方面的能力。

3、搭个测试环境需要几台机器
答:如果只是功能测试,不需要高可用,一台就够了。如果测试的内容里面有高可用,机器又不多,推荐用 3 zone 3 节点的环境。

4、AP 性能怎么样?
答:OB 是 HTAP 数据库,去年的年度发布会上和 CK 一个跑了一个 ClickBench,性能是略强于 AP 数据库 Clickhouse。OB 这几年正在逐步提升 AP 性能,预计在今年 9 月份发布的 4.3.3 版本上,AP 性能会获得一个较大的提升。

5、支持 pg 迁移到 OB 吗?
答:支持的,不过有版本限制,目前支持的 PostgreSQL 数据库版本为 V10.x 和 V12.x。可以在 OB 的官网上查到。 数据库的数据至 OceanBase 社区版具体操作部署可参考:OceanBase分布式数据库-海量数据 笔笔算数

6、支持 mogodb 迁移吗?
答:暂时还不支持。如果有真实需求的话,可以在 github 上提出相关的 issue,我们会考虑在 OMS 接下来的版本中进行支持。

7、支持k8s的方式部署不?
答:支持的,可以通过部署官方工具 ob-operator 来管理 K8s 中的 OceanBase,已经实现了 OceanBase 集群租户备份恢复的所有运维功能,另外还可以做到故障自动恢复,可以参考我们 github 上的项目 GitHub - oceanbase/ob-operator: Kubernetes operator for OceanBase

8、多个租户,在多个业务都有问题的情况下,是不是也要一个租户一个租户的排查问题?
答:OB 里面一个租户对应一个 MySQL 实例,一个业务一般只对应一个租户,所以如果只有一个业务出错,只需要排查对应租户的问题就好了。租户之间是数据是隔离的,一个租户的问题不会影响到其他租户。当多个租户都遇到问题时,通常需要逐个租户进行问题排查。

9、ob 的压缩率比 innodb 的压缩率对比如何呢?
答:OceanBase 的压缩算法和 InnoDB(MySQL 存储引擎)的压缩机制有所不同,因此它们的压缩率也会有所差异,一般是 InnoDB的3~4倍,如果数据类型、表结构等重合度较高,会更高一些。

10、分区表是否需要指定分区键?
答:分区表需要指定分区键。分区键是一个或多个列的集合,用于决定分区表中的每行数据应存储在哪个分区中。在创建分区表时,必须定义分区键来划分数据,这样可以提高大数据量时的查询和管理效率。例如,可以根据时间戳、地理位置或其他业务相关的字段来设置分区键,以便更好地管理和查询数据。

11、同城和异地对带宽,有啥要求?另外 3 zone 3 副本,同城和异地断网了,是不是提供不了服务了,有啥方案没?
答:对于OceanBase数据库,同城和异地部署对带宽的要求是不同的:

  • 同城跨机房、跨城 :要求万兆光纤接入,并且采用万兆光纤交换机进行连接。同城网络延迟要求不超过 2 ms。
  • 跨城部署 :虽然带宽要求也较高,但更重要的是要考虑网络延迟。网络延迟一般要求不超过10毫秒。

两地三中心的方式,异地之间断网,有两个 zone 的 region 因为多数派还在,所以依然可以对外提供服务。

12、列存是4.3才有的吗?
答:3 月底即将要发布的 4.3.0 会支持列存,会支持在建表的时候选择把这张表创建成行存表还是列存表。而且我们还会在后续的版本里面,支持列存副本,比如在第一期视频中提到的 HTAP 读写分离能力里那个用于 AP 分析的只有只读副本的 zone,就可以把只读副本替换成列存只读副本。

13、搭建单机版使用最少的资源是多少?
答:2C8G。

14、有可视化界面吗?
答:视频中提到的 OCP、OMS、ODC 均有可视化白屏界面。OBD 在部署过程中有白屏界面,但 OBD 需要通过黑屏进行运维。

15、OB目前最大的集群是多大?
答:个人了解到的最大规模的 OB 集群,是蚂蚁集团的一个历史库,集群规模已经在 9PB 左右了。OceanBase 支持水平扩展,是可以满足用户海量存储的需求的。

16、OB什么时候能支持全文索引?
答:全文索引主要是用来查找文本数据里面的关键词,因为提出这个需求的用户比较多,所以我们去年就已经把全文索引提上日程了。
全文索引会在今年 5 月份发布的 4.3.1 版本里支持。

17、oceanbase 有类似 Oracle startup shutdown 之类的启停吗?
答:有的,可以通过一个叫 obshell 的本地集群命令行工具实现对集群的运维。参见 obshell 官网文档:OceanBase分布式数据库-海量数据 笔笔算数

18、OB 的 jdbc 支持 jdk1.7 吗
答:JDK 版本要求 1.8 及以上。详见:OceanBase分布式数据库-海量数据 笔笔算数OceanBase分布式数据库-海量数据 笔笔算数

19、OMS啥时候支持mysql到mysql?
答:目前还没有规划支持,如果有需求,建议到 github 提 issue:Issues · oceanbase/oceanbase · GitHub

20、ODC 支持 MySQL 的数据归档?是免费的?
答:是免费的,而且 ODC 的代码也开源了。支持从 MySQL 归档到 MySQL,也支持从 ob 归档到 ob,还支持 ob 和 mysql 之间相互归档。

21.自动历史归档功能,生产表是否存在高水位性能问题?
答:OB 企业版的 Oracle 模式,只是兼容了 Oracle 的语法,内核的实现和 Oracle 的实现方式不同,所以不存在 Oracle 的高水位性能问题。OB 的社区版也只是兼容了 MySQL 的语法,并没有使用 MySQL 的源码。

22、ODC 是不是只支持企业版,社区版不支持?
答:都支持,ODC 不区分社区版和企业版,代码也是开源的。

23、OAT 和 OBD 有什么区别?
答:OAT 是 OceanBase 企业版支持的管理者工具,用于用于安装和管理企业版生态产品和组件。OBD 和 OCP 均可以为社区版提供的安装部署和运维管理集群的功能。

24、OceanBase 最多能支持多少 zone ,多少 observer,如果一个 zone 挂了,多久能恢复?
答:zone 和 observer 都没有理论上的上线,zone 越多,副本数越多,可用性就越高,但成本也越高。一般对可用性要求极高的场景,例如蚂蚁集团的主站,就是三地五中心,五 zone 五副本。目前金融机构的客户,个人了解到的有部署过 7 个 zone 的集群。如果是多 zone 的集群(例如三 zone 或者五 zone),挂掉一个 zone,8 秒内可恢复对外提供服务(RTO < 8s)。

25、3 zone 如果有挂了 2 个 zone 会有啥影响
答:OceanBase 的高可用是基于 paxos 实现的,当有多数 zone 不可用时,集群会进入不可用状态。

26、副本是随机分布还是需要自己指定?
答:创建租户时可以通过指定各个 zone 的优先级来配置副本的分布规则,例如可以通过 CREATE TENANT IF NOT EXISTS test_tenant PRIMARY_ZONE=‘zone1;zone2,zone3’…; 创建一个租户,租户的副本会被分布到 zone1、zone2、zone3 三个 zone 内,三个 zone 的优先级是:zone1 > zone2 = zone3(分号表示大于,逗号表示等于),所以这个租户的所有分区的 leader 副本会被分布到 zone1 中,follower 副本会被分布到 zone2 和 zone3 中。如果创建租户时未指定 Primary Zone,则默认取值为 RANDOM(随机分配)。

27、倒排索引和全文索引是一个东西么?
答:倒排索引是一种特定的数据结构,它主要用于快速检索文档中出现的词汇。全文索引是数据库中用于实现全文搜索的一种索引类型,它通常采用的就是倒排索引技术。因此,可以说全文索引是一种功能或服务,而倒排索引是实现全文索引的一个关键技术手段。

28、ob-oracle 模式支持创建外键吗?
答:OB 的 MySQL 模式和 Oracle 模式均支持外键功能。

29、是否可以不同租户,实现不同时区?
答:可以的,详见:OceanBase分布式数据库-海量数据 笔笔算数

30、ap 性能追平 starrocks?
答:在直播答疑时顺嘴提到的一个对 OB 未来 AP 能力的期待,暂时还只是一个美好的愿望。也许不久后就能实现?

31、obdiag 有开源的吗?这个部署到生产上,有什么资源和服务器环境的要求?是否可以检查企业版的ob集群?
答:已代码开源,需要在 Linux 环境上部署,基本不占资源。对社区版 OB、企业版 OB 通用。详见:OceanBase分布式数据库-海量数据 笔笔算数

——————————————————————————————————————————

第二期 :OceanBase 社区版的安装和部署

1、OBD和OCP推荐用哪个部署呢?
答:测试环境 二者均可以,对运维有要求或者生产环境,建议是下载OCP云平台安装包,内置有OBD,通过执行bash install.sh 安装obd 后, obd web 白屏部署OCP ,再通过OCP部署OB集群。

2、OBD部署使用三台机器行吗?没有中控机
答:可以的,OBD本身占用资源比较少,但是当OBD所在节点机器出现问题时,可能OBD也会失去管理能力。

3、windows电脑可以安装么?
答:windows本身直接安装是不行的,但是在windows上可以做虚拟机或用docker部署。详参:快速上手

4、支持open java 和oracle java吗?
答:我们在OBD V2.7.0 版本目前已经发布了,在安装过程中,会自动安装java,使用的是open gdk,而且其他的一些生态组件也基本上用的open gdk。

5、OBD部署失败后,环境怎么清理干净重新安装?
答:可以直接用OBD命令销毁:obd cluster destory 部署名称 (部署名称可以通过obd cluster list获取),注意 destory会卸载部署服务并清理数据,但不会删除obd中部署名称记录,即obd cluster lis 仍然能见到这个部署名称,状态为destoryed,如果想删除该记录,可以 cd ~/.obd/cluster ; rm -rf 对应的部署名称目录。

6、生产环境怎么规划得数据和日志磁盘大小呢?
答:部署环境有两个参数来控制磁盘大小,数据盘(datafile_size)和日志盘(log_disk_size),数据盘大小主要取决于业务量规划。如果数据量暂时不确定,后续可能要扩容,并且服务器资源不充足,这种情况下可以做逻辑卷,先规划一个可行的数据盘资源,后续如果数据盘资源不够了,再通过逻辑卷进行磁盘扩容,这样就不需要后续服务器扩容这种方式去请求资源了。日志盘内存主要取决于memory_limit内存参数的大小,大约在memory limit的3~4倍就足够了。

7、OCP单独部署需要多大的磁盘?
答:OCP主要是监控数据占用比较大,因此磁盘容量受监控管理的集群数量影响,具体可以参看:
https://www.oceanbase.com/docs/common-ocp-1000000000585170

8、OCP部署OB能用一台机器吗?
答:可以,但不推荐,限制比较多。
1)OCP必须和自己的metadb分2个节点部署,因为OCP部署OB时,会检测节点是否存在observer进程,否则无法部署OB。
2)即使OCP和metadb分开部署,OCP本身是也需要使用一定内存和CPU资源,部署的OB可能会受到资源影响,同时我们建议 OB使用独立的服务器资源(除了对obproxy/obd这种对资源占用不高的服务可以混部)。
3)OCP和OB混部,如果节点故障,OCP无法使用,也无法通过OCP的历史监控、告警信息进行追溯。

9、怎么看当前什么版本是不是LTS版本?
答:官网 Release Notes 有说明。目前4.2.1是LTS版本,推荐大家使用4.2.1的最新版本。

10、如果 OceanBase 3节点集群节点宕机了,机器开机后如何启动呢?
答:
1)OBD 部署的集群场景,可以obd cluster restart 部署名称。
2)OCP部署的集群场景,OCP一般是OBD 部署的,也是可以obd cluster restart 部署名称 重启OCP服务,再登录OCP 重启部署的OB。
3)docker部署的OCP 场景,需要先重启docker上OCP的容器,再登录OCP 重启部署的OB。

11、OCP社区版部署的MetaDB是用Docke吗?
答:不是,OCP可以分为ocp-server服务和metadb数据库组成,ocp-server可以使用Docker,metadb仍然是本地物理机上部署。

12、OBProxy VIP是做什么的?生产需要配置吗?
答:社区版的OBProxy没提供 VIP(Virtual IP) 服务,需要用户搭建负载服务,例如F5. 通过连接OBProxy代理进行数据库访问。生产环境建议配置,OBProxy是多节点无状态服务,本身不具备故障后业务迁移其他OBProxy节点能力,如果业务连接的OBProxy服务故障,需要业务层去连接其他正常的OBProxy服务,此时需要通过负载服务进行漂移,实现业务高可用。

13、OCP支持部署单节点吗?
答:支持,OCP当前界面上是有两种部署的模式,一个叫做单机集中式部署,一个叫做分布式集群。

14、F5是否代替OBProxy?
答:不可以。F5 不是代替 OBProxy 的,在OceanBase的架构中,F5通常被用作负载均衡器,它可以在网络层面对流量进行分发,将客户端的请求路由到适当的OBProxy实例。OBProxy是OceanBase数据库的接入层,负责将用户的请求转发到合适的OceanBase实例。

——————————————————————————————————————————

第三期 :测试 OceanBase 数据库

1、高压缩会不会影响性能?
答:OceanBase 自研了一套对数据库进行行列混存编码的压缩方法 (encoding),使用列级别的字典、差值、前缀等编码算法,在通用压缩算法之前对数据进行编码压缩,可以在不影响数据读写性能的同时,显著提高数据压缩率,帮助用户大大降低存储成本。
参考:OceanBase 社区

2、能说一下rto在什么资源下测试结果小于8s?
答:主要需要保证集群可以正常选主,关注机器间的网络时延为ms级别的延迟以及磁盘可以正常写入。

3、arm架构比x86性能相差多少?
答:arm性能一般在x86的70%-80%左右。

4、为啥iops需要3万以上,一般云环境无法私有化部署?
答:OceanBase数据库一般要求部署的磁盘为ssd,保证集群在高并发写入时,磁盘不会成为影响稳定性因素以及性能的瓶颈。

5、OB列存发布了吗?
答:V4.3.0_CE_BETA版本已经发布了,在官网的下载中心和github可以下载。

6、FIO 是不是比较靠谱?
答:在控制 IOPS 资源隔离前,需要进行磁盘性能校准,可以使用FIO工具,参考:OceanBase分布式数据库-海量数据 笔笔算数

7、OceanBase 对于频繁update\delete操作的表,在每日增量合并后数据空洞很大,这个有没有办法规避?
答:可以尝试对空洞较大的表强制执行全量合并,参考https://open.oceanbase.com/blog/2393832960

——————————————————————————————————————————

第四期 :OceanBase 数据库的迁移和同步

1、ob的分区类型比mysql多好几种是什么考虑或者原因?
答:分区类型多,可以让用户更灵活的创建分区表,这样对于分布式数据库创建分区表,将分区打散有很大的帮助,避免热点等问题

2、支持双向同步吗,正切(迁移)反切(回滚)?

答:支持的,同步完成之后,可以再反向增量,oceanbase与mysql之间还可以搭建容灾双活

3、在CentOS7中,可以部署OMS吗?不用docker

答:目前只能在docker中部署

4、两台实体机能搭建 OceanBase 集群吗?

答:这种是可以的,但是没有了高可用,任何一台机器故障都会导致集群不可用

5、全量迁移也是抽的增量日志去实现的吗?

答:不是,全量迁移是直接读取源端的表

6、集群zone数量必须是大于等于三的奇数吗?

答:这个是受分布式一致性协议限制,必须组成多数派,可以具体了解下raft或者paxos协议

7、容灾双活的话,对地域和网络有要求吗?实际应用场景应该注意什么?

答:一般会要求两个地域距离近一些,网络最好是专线,主要看业务对延迟的要求,延迟也是受网络影响,具体注意事项可以参考官网的介绍:OceanBase分布式数据库-海量数据 笔笔算数

8、平稳迁移与快速迁移的区别?适用场景?

答:区别就是速度的快慢,快速迁移对资源的消耗会大一些

9、索引后置 和 不点索引后置, 哪个更推荐?

答:看实际情况,索引在创建表的时候就创建好的话,写入速度肯定会比没有索引的表慢,如果是大表迁移,一般建议索引后置

10、调优都是动态修改?

答:大多数都是动态可修改的,不需要重启

11、创建binlog服务sql命令的用户名、密码不用是加密后的吧?

答:使用命令创建binlog服务时指定用户名密码,不用加密

12**、OB哪个版本支持obloader导入mysqldump备份的cvs文件?**

答:OB版本都是支持导入csv文件的,只要格式满足要求

13、并行导入是否支持一张表并行导入?

答:支持的

14、旁路导入中间如果出现问题,是需要清理已经导入的部分数据,还是会自动类似断点续传接着导入不丢数据?

答:需要清空已导入的数据,重新导入,不支持断点续传,不过这块还在优化中

15、clob blob 大字段表一般怎么迁移?

答:用OMS就可以迁移

16、如何找OMS调优时的组ID?

答:打开对应的迁移链路,查看有上交的组件监控,进去之后就可以看到各个组件的ID

17、obloader 脱敏是功能么 还是需要自己设置什么?

答:可以通过预处理函数进行脱敏,有个mask的函数,参考:OceanBase分布式数据库-海量数据 笔笔算数

18、视图、触发器、存储过程怎么用脚本迁移?

答:视图支持,触发器和存储过程在源端导出sql命令,在目标端手动创建

19、非旁路导入是否支持断点续传?

答:支持的,OMS支持断点续传

20、社区版OMS支持MYSQL同步到MYSQL吗?

答:不支持

——————————————————————————————————————————

第五期:运维 OceanBase 数据库

1、OCP是企业版还是社区版?

答:OCP有企业版和社区版,社区版是免费使用,暂未开源,但ocp-express是开源的,它是社区版OCP的精简版,不支持核心运维功能,例如部署、扩容、升级等,只具备基础管理和监控能力。OCP商业版本和社区版的核心运维功能差别不是很大,能满足上线生产的运维要求。

2、如果非首次全量备份,发起备份时,刚好还在进行合并操作。那ocp是等待?还是报错退出?等待的话会等多久嘞?

答:备份任务会启动,但只有合并完成后,备份才能完成,等待时间取决于合并完成时间。

3、3.x 版本不支持 oss 存储吗 ?

答:OB3.x 版本支持 oss 存储,同时也同步大家一下,继2024年6月30日后就3.x版本就不再发版维护了,建议大家迁移到4.x版本。

4、不支持直接扩容的话,如果数据盘满了,生产处理建议?

答:

  • 正常情况下,磁盘是按照总空间80%预占用的,如果出现磁盘满的情况,可以调整参数datafile_disk_percentag把百分比调大,保证正常运行更长时间。
  • 如果条件允许的话,可以考虑删除部分数据降低磁盘使用率。
  • 如果磁盘做过逻辑卷,可以考虑直接扩容磁盘,再调整datafile_disk参数扩大数据盘空间。

为了保证生产环境数据的高可用,建议大家对数据进行备份或者做主备库,在以上情况,可以避免数据丢失或者影响业务运行。

5、OCP 接管obproxy集群时,需要OCP上有已部署的obproxy么?

答:当前版本是这样的。

6、OBv421是否可在线升级到v4.3?

答:暂不支持,可以关注 Release Note 中的升级说明。OB4.2.1.0-4.2.1BP2是可以升级到OB4.3的,4.2.1BP2之后的版本暂不支持,后续会支持。

7、备份一半底层存储介质出问题,备份任务是一直在还是会自动检测发现问题此次备份失败?

答:存储介质出问题后,日志归档会断流中断。介质恢复正常后,需要人为的去OCP上点击启动日志备份。

8、420建议升级到421吗?

答:421是LTS版本,建议使用。

9、数量很大,人为发起多次备份间隔发起很短是并行还是串行?

答:备份是租户级别备份,并行进行。

10、4.3稳定版啥时候出

答:GA版本预计是V4.3.3,9月底发布。

                          扫码加入教程学习群
1 个赞

学习了

小伙伴们都很好学啊

Get~

非常好。全程参与了直播,刚又温故了一遍FAQ

1 个赞