《DBA从入门到实践》教程于3月27日正式开启。在此阶段我们会整理教程期间大家的常见问题在此,便于大家更好地进行学习。
活动时间:3月27日-5月29日 19:30-20:00
:报名预约教程: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 认证体系和用户实践
——————————————————
资料库
学习过程中如有问题,请在问答发帖进行交流:https://ask.oceanbase.com/
查看教程回放及完成课后习题:OceanBase 社区
阅读源码 :GitHub - oceanbase/oceanbase: OceanBase is an enterprise distributed relational database with high availability, high performance, horizontal scalability, and compatibility with SQL standards.
博客技术专题:OceanBase 社区
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月底发布。
扫码加入教程学习群