【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.1.7
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
随便改了一个系统变量parallel_degree_limit,备租户没有被同步修改呢?
@论坛小助手
论坛小助手
#3
用户问题总结:在 OceanBase 4.2.1.7 版本中,修改主租户的系统变量 parallel_degree_limit
后,备租户未同步该变量值。
针对此问题,推荐使用 obdiag 工具进行日志采集,以便确认主备库之间的同步状态以及可能存在的延迟或配置差异。
日志采集场景: 主备库延迟
日志采集命令: obdiag gather scene run --scene=observer.delay_of_primary_and_backup
解释:
上述命令将收集主备库之间的延迟相关信息,包括但不限于主备库的同步状态、日志应用进度等,从而帮助我们分析为什么备租户未能同步主租户的系统变量变更。
为了更好地定位问题,请您按照以下步骤操作:
- 执行上述
obdiag gather scene run --scene=observer.delay_of_primary_and_backup
命令,采集日志并提供给我们。
- 如果可能,请提供主备库的相关配置信息(如同步模式、网络延迟等)。
另外,为了进一步明确问题原因,请您回答以下问题:
- 您是否确认主备库之间的同步模式为同步还是异步?如果是异步同步,是否存在较大的延迟?
- 您是否尝试过重启备租户以检查变量是否能够重新同步?
- 您是否在主租户上执行了其他可能导致备租户不同步的操作(例如 DDL 或者特定的管理命令)?
- 您能否提供具体的主备库版本号以及相关的集群配置信息(如是否有多个副本等)?
- 您是否观察到备租户的日志中有任何与同步相关的错误或警告信息?如果有,请一并提供。
附上敏捷诊断工具 obdiag 使用帮助链接
随便改了一个系统变量parallel_degree_limit,备租户没有被同步修改呢?几乎没有主备延迟@论坛小助手
论坛小助手
#5
根据文档库中的信息,主租户和备租户的系统变量同步行为有明确的规定。以下是具体分析:
系统变量同步规则
根据 功能使用限制 和 共享存储 → 物理备库 的文档内容(见【功能使用限制】和【共享存储 → 物理备库】章节),以下几点需要注意:
-
主租户和备租户的系统变量物理同步:如果在主租户上修改了系统变量,这些变更会同步到备租户。
-
例外情况:某些隐藏配置项(以
_
开头)或特定的系统变量可能不会自动同步,需要手动调整。
问题分析
您提到修改了系统变量 parallel_degree_limit
,但备租户未同步该变量值。结合上述规则,可能存在以下原因:
-
变量类型:
parallel_degree_limit
是否为隐藏配置项或特殊变量?如果是,它可能不在自动同步范围内。
-
主备延迟:尽管您提到几乎没有主备延迟,但仍需确认备租户是否完全应用了最新的日志。
-
同步机制异常:可能存在同步机制的问题,例如网络中断、日志断流等。
解决方案
1. 检查变量是否为隐藏配置项
运行以下命令,检查 parallel_degree_limit
是否为隐藏配置项:
obclient> SHOW VARIABLES LIKE 'parallel_degree_limit';
如果变量以 _
开头,则为隐藏配置项,不会自动同步到备租户。
2. 确认主备同步状态
运行以下命令,检查主备租户的同步状态:
obclient> SHOW TENANT BACKUP STATUS;
确保备租户的日志应用进度与主租户一致。
3. 手动同步变量
如果确认 parallel_degree_limit
不在自动同步范围内,可以在备租户上手动执行以下命令:
obclient> ALTER SYSTEM SET parallel_degree_limit = <value>;
将 <value>
替换为您在主租户上设置的值。
4. 检查日志和诊断信息
如果问题仍未解决,请收集以下信息进行进一步排查:
总结
根据文档内容,主租户和备租户的系统变量通常会物理同步。如果 parallel_degree_limit
未同步,可能是由于变量类型或同步机制异常导致。建议按照上述步骤逐一排查,并提供相关日志以便进一步分析。
检索到的文档如下:
- 物理备库同步过程中卡住
- replica_parallel_migration_mode
- 设置日志恢复终点
- 删除主备租户
- 功能使用限制
- 使用限制
- standby_fetch_log_bandwidth_limit
- 设置日志同步限速
(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)
论坛小助手
#6
根据您提供的信息以及 OCR 提取的内容,可以明确以下几点:
-
主备租户的系统变量同步问题
根据文档信息,主租户和备租户的系统变量不会物理同步。如果在主租户上修改了系统变量,需要手动检查是否需要在备租户上进行相同的修改。具体参考如下内容:
主租户和备租户的配置规格独立,不会物理同步。如果修改了主租户的配置项,需要判断是否需要同步修改备租户的相应配置项。
(来源:OCR 提取内容)
-
parallel_degree_limit 的作用范围
parallel_degree_limit
是一个控制并行执行线程数的变量,通常用于优化查询性能。该变量的修改仅对当前租户生效,且主备租户之间不会自动同步此类变量。
-
主备延迟几乎为零的情况
您提到几乎没有主备延迟,这表明主备库之间的日志同步(如 Redo 日志)是正常的。但需要注意的是,系统变量的修改不会通过日志同步到备租户,因此即使主备延迟为零,备租户也不会自动同步主租户的变量修改。
解决方案
1. 手动同步备租户的变量
如果您希望备租户也应用相同的 parallel_degree_limit
值,可以通过以下步骤手动设置:
-
登录备租户,执行以下 SQL 语句:
SET GLOBAL parallel_degree_limit = <value>;
其中 <value>
是您在主租户上设置的具体值。
-
确认变量已生效:
SHOW VARIABLES LIKE 'parallel_degree_limit';
2. 自动化同步(可选)
如果需要频繁同步主备租户的变量,可以编写脚本定期检查主备租户的变量值,并在备租户上执行相应的 SET GLOBAL
命令。
3. 注意事项
-
Session 级别与 Global 级别
如果您在主租户上使用的是 SET SESSION
修改变量,则该修改仅对当前会话生效,其他会话或备租户均不受影响。如果需要全局生效,请确保使用 SET GLOBAL
。
示例:
SET GLOBAL parallel_degree_limit = <value>;
-
权限要求
修改 Global 级别的变量需要用户拥有足够的权限(如 MySQL 租户的 SUPER
或 ALTER SYSTEM
权限)。请确保当前用户具有相应权限。
总结
主备租户的系统变量不会自动同步,这是 OceanBase 数据库的设计行为。如果需要备租户也应用相同的变量值,请手动登录备租户并执行相应的 SET GLOBAL
命令。如果您有更多疑问或需要进一步帮助,请提供更多上下文信息(如具体的变量值、主备租户的配置等)。
具体信息可参考以下文档:
- 设置日志同步限速
- OceanBase 数据库性能的影响因素
- 修改租户系统变量
- 设置并行执行参数
- 租户内均衡
- 物理备库
- 设置参数和变量
- 负载均衡
- 物理备库概述
淇铭
#7
后面同步过去了么?日志同步是否有延迟?其他的变量修改是否能同步?
刚刚试了下几个变量,可以正常同步了。
可能是因为上次没有重新登录,global没生效 