《一文详解系列之如何运维 OceanBase 社区版》要点摘录及【问题请教】

早上学习了一下该文章,这里做一些要点摘抄,另外有一些疑问我用红色进行了标注,还望各位社区大神帮忙答疑解惑~

1.任何一个资源单元一定会放置在一个资源足够容纳它的 OBServer 上,一个租户在同一个 OBServer 上最多有一个资源单元;当 OBServer 服务器下线前,其上的资源单元必须迁移到其他 OBServer 上,如果集群内其他 OBServer 不足以容纳会导致下线无法成功

2.修改资源配置可动态调整资源单元的物理资源,进而调整对应租户的资源(目前只有 CPU 、内存实际产生作用,存储空间和 IOPS 的值需要填写,但是系统不会限制)。

3.一个资源池只能属于一个租户,一个租户可以拥有一或多个资源池,这些资源池的集合描述了这个租户所能使用的所有物理资源。

4.什么情况需要重建 OceanBase 节点?

在两种情况下需要重建 OceanBase 节点,第一,节点磁盘损坏后修复,怀疑数据有丢失;第二,想对节点数据文件大小进行缩容,重新初始化进程 OBServer 。

**问题:**这里想问一下,重建OceanBase节点可以对数据文件大小进行缩容是什么意思?数据库运行一段时间,会产生一些空间的浪费吗?

5.如上图所示,修改 OBServer1 对应的 server_permanent_offline_time(默认值是3600s),调整为300s:

alter system set server_permanent_offline_time=‘120s’ server=‘xxx:2882’;

show parameters where name = ‘server_permanent_offline_time’ and svr_ip=‘xxx’;

**问题:**这里想问一下,这种alter system的操作,是修改完立即生效还是需要做一些其他的操作?比如集群重启/集群刷新/重新登录session才生效等;

6.如果租户的架构是1-1-1并且重建的节点就是该租户的成员,宕机后可能导致租户的 DDL 报错:

MySQL[test]>create table t2 like t1;

ERROR 4624(HY000):machine resource is not enough to hold a new unit

此时需要将全局变量 ob_create_table_strict_mode 值设置为 OFF。

**问题:**改参数修改是为了防止DDL报错,修改完成后,在什么时机重新改回来?宕机的机器重新上线后吗?参数设置为OFF会不会导致数据丢失,重新设置为ON后有没有自动数据同步到恢复机器的操作呢?

7.逻辑备份是导出数据或表结构,逻辑备份的优点是功能灵活,可以指定租户名、库名、表名等进行导出。缺点是只支持离线导出,不支持增量导出。

**问题:**我看文章中重点介绍了物理备份,物理备份包含全量及增量备份;这里说的逻辑备份是通过什么命令实现呢?逻辑备份在一些迁移的场景里可能会用到,这里说的只支持离线导出是什么意思?我们通常理解的离线导出是将数据库服务下线。

8.OceanBase 的物理备份是将基线数据(sstable)和事务日志(clog)备份到一个共享目录里。在 OceanBase 社区版目前该共享目录只支持 NFS 的共享目录,该共享目录要挂载到每个 OceanBase 节点的本地文件系统上。

9.使用 NFS 环境时,需要保证先挂载 NFS ,再开启备份。如果备份期间 NFS 出现问题,需要先停止数据备份和日志备份,再解决 NFS 的问题。

10.在重启 OBServer 时,需要先启动 NFS ,再启动 OBServer 。添加新的机器后,在启动 OBServer 前,需要保证新的机器挂载 NFS 成功。

11.当前的版本不会备份转储的数据,如果在日志归档开启后直接发起全量备份会存在空洞,所以在全量备份发起之前,需要先发起一次基线合并,将这部分空洞数据补齐。

12.OceanBase 的备份是集群级别的,会备份集群下的所有租户的数据。但 OceanBase 的恢复是按租户恢复,且只能恢复到一个空租户环境。

13.轮转升级可以按 zone 升级,可以不停服升级。轮转升级的使用条件,是当前停掉一个 zone 后仍满足多数派。因此单 zone 或双 zone 不能使用轮转升级,只能选择停服升级。

14.如果恢复到新的租户下,这个租户不需要提前创建,只需要创建对应的资源单元规格和资源池即可。如果恢复到原有租户,需要先删除这个租户 drop tenant tenant_name force ,然后查看有效的备份集。

15.如果是刚新部署的新集群测试升级,需要先做一次合并操作。一次只能升级一个组件,并且必须指定目标版本。升级时建议先升级 OBProxy ,再升级 OceanBase-CE。

2 个赞

第5个问题,是设置的一个系统参数,代表可容忍的节点不在线时间,只要返回是ok就是立即生效

2 个赞

问题:这里想问一下,重建OceanBase节点可以对数据文件大小进行缩容是什么意思?数据库运行一段时间,会产生一些空间的浪费吗?


答:由于目前datafile_size或者datafile_disk_percentage只能调大不能调小,比如数据做了大量删除,或者做了集群的扩容后,磁盘的水位并不会下降,此时需要重建节点再启动到时候指定-o datafile_size或者datafile_disk_percentage来达到数据文件瘦身的效果。


问题:这里想问一下,这种alter system的操作,是修改完立即生效还是需要做一些其他的操作?比如集群重启/集群刷新/重新登录session才生效等;

select name,value,need_reboot,scope,edit_level from oceanbase.__all_virtual_sys_parameter_stat ;
有几个重要的字段
need_reboot:表示修改参数后是否需要重启才能生效。
scope:表示参数是集群的还是租户的作用域。
edit_level:表示参数是否允许修改,若允许修改修改后是及时生效还是需要重启才能生效,
           READONLY:只读参数不允许修改;
           STATIC_EFFECTIVE: 可以修改,单需要重启才能生效,类似于Oracle修改参数的scope=spfile;
           DYNAMIC_EFFECTIVE: 可以修改,且动态生效,类似于Oracle修改参数的scope=both。


问题:改参数修改是为了防止DDL报错,修改完成后,在什么时机重新改回来?宕机的机器重新上线后吗?参数设置为OFF会不会导致数据丢失,重新设置为ON后有没有自动数据同步到恢复机器的操作呢?


答:在停机维护的节点开始服务的时候再修改回来,需要说明一下,在3.1.3版本已经将该默认值设置为了OFF,

设置OFF后不会丢数据,数据库内部会检查如果缺副本,会自动补足副本。



问题:我看文章中重点介绍了物理备份,物理备份包含全量及增量备份;这里说的逻辑备份是通过什么命令实现呢?逻辑备份在一些迁移的场景里可能会用到,这里说的只支持离线导出是什么意思?我们通常理解的离线导出是将数据库服务下线。


这里说的逻辑备份有obdumper/obloader ,可以类比mysqldump/load data等理解,离线导出是指不能导出增量数据。











2 个赞

谢谢~

2 个赞

感谢感谢

2 个赞

优秀

1 个赞

666

2 个赞

学习了,对初学者很有用

2 个赞

优秀

谢谢总结