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:阅读源码 :https://github.com/oceanbase/oceanbase
: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 上的项目 https://github.com/oceanbase/ob-operator

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:https://github.com/oceanbase/oceanbase/issues

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实例。

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

学习了

小伙伴们都很好学啊

Get~

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

1 个赞