外观
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. 配置变更执行
执行流程
- 生成变更日志:记录配置变更的详细信息
- 分发配置变更:将配置变更分发到相关节点
- 应用配置变更:在相关节点上应用配置变更
- 持久化配置变更:将配置变更持久化到存储中
- 通知配置变更:通知相关组件配置已变更
执行方式
- 即时执行:立即应用配置变更
- 延迟执行:在特定时间点应用配置变更
- 滚动执行:逐个节点应用配置变更
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: 配置变更的风险包括:
- 系统性能下降
- 系统稳定性降低
- 数据不一致
- 业务中断
- 配置冲突
为了降低风险,建议在测试环境中充分测试配置变更,制定详细的回滚计划,并在业务低峰期进行配置变更。
