Skip to content

OceanBase 配置变更机制

配置变更流程

1. 配置变更请求

发起配置变更

  • SQL 命令:使用 ALTER SYSTEM 命令发起配置变更
  • OCP 控制台:通过 OCP 可视化界面发起配置变更
  • 配置文件:直接修改配置文件发起配置变更

配置变更语法

sql
-- 修改全局配置
ALTER SYSTEM SET <parameter_name> = <value> [SCOPE = {MEMORY | SPFILE | BOTH}];

-- 修改节点配置
ALTER SYSTEM SET <parameter_name> = <value> [SCOPE = {MEMORY | SPFILE | BOTH}] [SERVER = <server-list>];

-- 修改租户配置
ALTER SYSTEM SET <parameter_name> = <value> [SCOPE = {MEMORY | SPFILE | BOTH}] [TENANT = <tenant-list>];

2. 配置变更验证

语法验证

  • 验证配置参数名称是否正确
  • 验证配置参数值的类型是否正确
  • 验证配置参数值的范围是否合法

语义验证

  • 验证配置变更是否符合系统约束
  • 验证配置变更是否会导致系统不稳定
  • 验证配置变更是否会影响其他配置参数

3. 配置变更执行

执行流程

  1. 生成变更日志:记录配置变更的详细信息
  2. 分发配置变更:将配置变更分发到相关节点
  3. 应用配置变更:在相关节点上应用配置变更
  4. 持久化配置变更:将配置变更持久化到存储中
  5. 通知配置变更:通知相关组件配置已变更

执行方式

  • 即时执行:立即应用配置变更
  • 延迟执行:在特定时间点应用配置变更
  • 滚动执行:逐个节点应用配置变更

4. 配置变更生效

生效范围

  • MEMORY:仅在内存中生效,重启后失效
  • SPFILE:仅在配置文件中生效,重启后生效
  • BOTH:同时在内存和配置文件中生效

生效时间

  • 动态参数:立即生效,无需重启
  • 静态参数:需要重启才能生效
  • 会话参数:仅对新会话生效

配置变更管理

1. 配置变更权限

权限控制

  • ALTER SYSTEM:修改系统配置的权限
  • ALTER TENANT:修改租户配置的权限
  • ALTER SERVER:修改节点配置的权限

权限管理

sql
-- 授予配置变更权限
GRANT ALTER SYSTEM TO <user-name>;

-- 收回配置变更权限
REVOKE ALTER SYSTEM FROM <user-name>;

2. 配置变更日志

查看配置变更日志

sql
-- 查看配置变更历史
SELECT * FROM oceanbase.DBA_OB_PARAMETER_HISTORY ORDER BY modify_time DESC;

-- 查看特定参数的变更历史
SELECT * FROM oceanbase.DBA_OB_PARAMETER_HISTORY WHERE name = '<parameter-name>' ORDER BY modify_time DESC;

配置变更日志内容

  • 变更时间
  • 变更参数名称
  • 变更前的值
  • 变更后的值
  • 变更范围
  • 变更人
  • 变更原因

3. 配置变更回滚

回滚配置变更

sql
-- 回滚到特定时间点的配置
ALTER SYSTEM RESTORE PARAMETERS TO TIME '<time-point>';

-- 回滚特定参数到之前的值
ALTER SYSTEM SET <parameter-name> = '<previous-value>' SCOPE = BOTH;

回滚注意事项

  • 只有动态参数可以在线回滚
  • 静态参数回滚需要重启
  • 回滚可能会影响系统稳定性

配置变更最佳实践

1. 配置变更前准备

充分测试

  • 在测试环境中验证配置变更的效果
  • 评估配置变更对系统性能的影响
  • 评估配置变更对系统稳定性的影响

备份配置

  • 备份当前配置,以便回滚
  • 记录配置变更的详细信息
  • 制定回滚计划

2. 配置变更执行

选择合适的变更时间

  • 选择业务低峰期进行配置变更
  • 避免在重要业务时段进行配置变更
  • 确保有足够的时间进行回滚

逐步变更

  • 先在部分节点上测试配置变更
  • 验证成功后再推广到所有节点
  • 避免一次性变更多个配置参数

3. 配置变更验证

验证配置变更效果

  • 检查配置参数是否已生效
  • 监控系统性能变化
  • 监控系统稳定性

验证配置变更范围

  • 检查配置变更是否仅影响目标范围
  • 检查其他节点或租户的配置是否正常

4. 配置变更监控

监控配置变更过程

  • 监控配置变更的执行进度
  • 监控配置变更的执行结果
  • 监控配置变更的影响范围

监控配置变更后系统状态

  • 监控系统性能指标
  • 监控系统稳定性指标
  • 监控系统日志

常见配置变更场景

1. 性能调优

调整内存配置

sql
-- 调整内存限制
ALTER SYSTEM SET memory_limit = '64G' SCOPE = BOTH;

-- 调整系统内存
ALTER SYSTEM SET system_memory = '8G' SCOPE = BOTH;

调整 CPU 配置

sql
-- 调整 CPU 核心数
ALTER SYSTEM SET cpu_count = 32 SCOPE = BOTH;

2. 存储优化

调整存储配置

sql
-- 调整数据文件大小
ALTER SYSTEM SET datafile_size = '100G' SCOPE = BOTH;

-- 调整日志磁盘大小
ALTER SYSTEM SET log_disk_size = '200G' SCOPE = BOTH;

3. 网络优化

调整网络配置

sql
-- 调整网络线程数
ALTER SYSTEM SET net_thread_count = 16 SCOPE = BOTH;

-- 调整 RPC 超时时间
ALTER SYSTEM SET rpc_timeout = 10s SCOPE = BOTH;

4. 安全加固

调整安全配置

sql
-- 开启审计日志
ALTER SYSTEM SET enable_audit_log = TRUE SCOPE = BOTH;

-- 调整密码策略
ALTER SYSTEM SET password_reuse_max = 5 SCOPE = BOTH;

常见问题(FAQ)

Q1: 如何确定配置参数是动态还是静态?

A1: 确定配置参数类型的方法:

  • 查看参数的 is_dynamic 属性
  • 查看参数的描述信息
  • 测试配置变更是否需要重启
sql
-- 查看参数是否为动态参数
SELECT name, is_dynamic FROM oceanbase.DBA_OB_PARAMETERS WHERE name = '<parameter-name>';

Q2: 配置变更后如何验证是否生效?

A2: 验证配置变更是否生效的方法:

  • 使用 SHOW PARAMETERS 命令查看当前配置值
  • 检查系统日志,确认配置变更已应用
  • 监控系统性能,确认配置变更的效果
  • 重启系统(针对静态配置变更)

Q3: 配置变更失败怎么办?

A3: 配置变更失败的处理方法:

  • 查看错误信息,确定失败原因
  • 检查配置参数的合法性和范围
  • 检查系统状态,确认是否适合进行配置变更
  • 尝试重新执行配置变更
  • 必要时回滚到之前的配置

Q4: 如何批量进行配置变更?

A4: 批量进行配置变更的方法:

  • 使用 OCP 控制台的批量配置功能
  • 使用 SQL 脚本批量执行 ALTER SYSTEM 命令
  • 直接修改配置文件后重启系统

Q5: 配置变更有哪些风险?

A5: 配置变更的风险包括:

  • 系统性能下降
  • 系统稳定性降低
  • 数据不一致
  • 业务中断
  • 配置冲突

为了降低风险,建议在测试环境中充分测试配置变更,制定详细的回滚计划,并在业务低峰期进行配置变更。