外观
DM 集群架构调整
架构调整的必要性
- 业务增长需求:随着业务增长,需要扩展集群规模以满足性能和容量需求
- 成本优化:根据业务负载变化,调整集群规模以优化成本
- 技术升级:升级集群版本或架构,利用新功能和性能改进
- 故障恢复:在集群节点故障或性能下降时,调整集群架构以恢复服务
- 合规要求:满足监管和合规性要求,调整集群架构
DM集群架构类型
DM数据库支持多种集群架构,包括:
- DMRAC:DM实时应用集群,基于共享存储的高可用集群
- DMDSC:DM共享存储集群,支持多节点同时访问共享存储
- DMDataWatch:DM数据守护集群,基于日志复制的高可用集群
- DMMPP:DM大规模并行处理集群,用于大数据处理
集群架构调整类型
1. 集群扩容
集群扩容是指增加集群节点数量,提高集群的性能和容量。
1.1 DMRAC扩容
扩容流程:
准备工作:
- 安装新节点的操作系统和依赖
- 配置网络和存储
- 安装DM数据库软件
添加节点:
bash# 使用dmracc工具添加节点 ./dmracc add node -n node3 -i 3 -h 192.168.1.3 -p 5236 -d /opt/dmdbms/data/DAMENG配置节点:
- 同步集群配置
- 配置共享存储访问
- 配置集群服务
启动节点:
bash# 启动新节点的集群服务 ./DmServiceDMSERVER3 start验证扩容:
sql-- 查看集群状态 SELECT * FROM V$RAC_INSTANCE; -- 查看节点状态 SELECT * FROM V$INSTANCE;
1.2 DMDSC扩容
扩容流程:
准备工作:
- 安装新节点的操作系统和依赖
- 配置网络和共享存储
- 安装DM数据库软件
初始化节点:
bash# 初始化新节点 ./dminit path=/opt/dmdbms/data db_name=DAMENG instance_name=DMSERVER3 port_num=5238配置集群:
- 修改dmmal.ini配置文件
- 修改dmtimer.ini配置文件
- 配置共享存储访问
启动节点:
bash# 启动新节点 ./dmserver /opt/dmdbms/data/DAMENG/dm.ini mount加入集群:
sql-- 将新节点加入集群 ALTER DATABASE JOIN CLUSTER;验证扩容:
sql-- 查看DSC状态 SELECT * FROM V$DSC_STATUS; -- 查看节点状态 SELECT * FROM V$INSTANCE;
2. 集群缩容
集群缩容是指减少集群节点数量,优化资源使用和成本。
2.1 DMRAC缩容
缩容流程:
准备工作:
- 备份集群数据
- 确保业务负载可以由剩余节点承担
- 停止新节点上的业务服务
停止节点:
bash# 停止要移除的节点 ./DmServiceDMSERVER3 stop移除节点:
bash# 使用dmracc工具移除节点 ./dmracc remove node -n node3更新集群配置:
- 更新集群配置文件
- 同步配置到其他节点
验证缩容:
sql-- 查看集群状态 SELECT * FROM V$RAC_INSTANCE;
2.2 DMDSC缩容
缩容流程:
准备工作:
- 备份集群数据
- 确保业务负载可以由剩余节点承担
- 停止要移除节点上的业务服务
将节点设置为mount状态:
sqlALTER DATABASE MOUNT;移除节点:
sql-- 将节点从集群中移除 ALTER DATABASE LEAVE CLUSTER;停止节点:
bash# 停止节点服务 ./dmserver stop /opt/dmdbms/data/DAMENG/dm.ini更新集群配置:
- 更新dmmal.ini配置文件
- 更新dmtimer.ini配置文件
验证缩容:
sql-- 查看DSC状态 SELECT * FROM V$DSC_STATUS;
3. 集群升级
集群升级是指升级集群的DM数据库版本,利用新功能和性能改进。
3.1 滚动升级
滚动升级是指在不停止整个集群服务的情况下,逐个升级集群节点,适用于对可用性要求较高的场景。
升级流程:
准备工作:
- 备份集群数据
- 测试升级包在测试环境的兼容性
- 制定升级计划和回滚计划
停止节点服务:
bash# 停止一个节点的服务 ./DmServiceDMSERVER1 stop升级节点:
bash# 使用dmupdm工具升级节点 ./dmupdm /opt/dmdbms/data/DAMENG/dm.ini /opt/dmdbms/upgrade/dm8_20230101_patch.zip启动节点:
bash# 启动升级后的节点 ./DmServiceDMSERVER1 start验证节点状态:
sql-- 查看节点状态和版本 SELECT * FROM V$INSTANCE; SELECT * FROM V$VERSION;重复上述步骤升级其他节点
验证集群状态:
sql-- 查看集群状态 SELECT * FROM V$RAC_INSTANCE;
3.2 离线升级
离线升级是指停止整个集群服务,一次性升级所有节点,适用于对可用性要求较低的场景。
升级流程:
准备工作:
- 备份集群数据
- 停止所有业务服务
- 制定升级计划和回滚计划
停止集群服务:
bash# 停止所有节点服务 ./DmServiceDMSERVER1 stop ./DmServiceDMSERVER2 stop升级所有节点:
bash# 升级节点1 ./dmupdm /opt/dmdbms/data/DAMENG1/dm.ini /opt/dmdbms/upgrade/dm8_20230101_patch.zip # 升级节点2 ./dmupdm /opt/dmdbms/data/DAMENG2/dm.ini /opt/dmdbms/upgrade/dm8_20230101_patch.zip启动集群服务:
bash# 启动所有节点服务 ./DmServiceDMSERVER1 start ./DmServiceDMSERVER2 start验证集群状态:
sql-- 查看集群状态和版本 SELECT * FROM V$RAC_INSTANCE; SELECT * FROM V$VERSION;
4. 集群迁移
集群迁移是指将集群从一个环境迁移到另一个环境,如从物理机迁移到虚拟机,从本地数据中心迁移到云端等。
4.1 同构迁移
同构迁移是指在相同架构的环境之间迁移集群,如从物理机到物理机,从虚拟机到虚拟机。
迁移流程:
准备工作:
- 准备目标环境的硬件和软件
- 配置网络和存储
- 备份源集群数据
复制数据:
bash# 使用rsync复制数据文件 rsync -avz /opt/dmdbms/data/DAMENG/ target_server:/opt/dmdbms/data/DAMENG/配置目标环境:
- 修改配置文件中的IP地址和端口
- 配置集群服务
启动目标集群:
bash# 启动目标集群服务 ./DmServiceDMSERVER1 start ./DmServiceDMSERVER2 start验证迁移:
sql-- 查看集群状态 SELECT * FROM V$RAC_INSTANCE; -- 验证数据完整性 SELECT COUNT(*) FROM table_name;
4.2 异构迁移
异构迁移是指在不同架构的环境之间迁移集群,如从物理机到虚拟机,从本地到云端。
迁移流程:
准备工作:
- 准备目标环境的硬件和软件
- 配置网络和存储
- 备份源集群数据
初始化目标集群:
bash# 在目标环境初始化集群 ./dminit path=/opt/dmdbms/data db_name=DAMENG instance_name=DMSERVER1 port_num=5236恢复数据:
bash# 使用dmrman恢复数据 ./dmrman CTLSTMT="RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/backup/full_backup'" ./dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/backup/full_backup'"配置目标集群:
- 配置集群服务
- 修改配置文件
启动目标集群:
bash# 启动目标集群服务 ./DmServiceDMSERVER1 start ./DmServiceDMSERVER2 start验证迁移:
sql-- 查看集群状态 SELECT * FROM V$RAC_INSTANCE; -- 验证数据完整性 SELECT COUNT(*) FROM table_name;
集群架构调整最佳实践
1. 调整前准备
- 充分备份:在进行任何架构调整前,备份集群数据和配置
- 制定计划:制定详细的调整计划,包括步骤、时间、责任人等
- 测试验证:在测试环境验证调整方案的可行性
- 制定回滚计划:制定详细的回滚计划,确保调整失败时可以恢复
- 培训人员:对参与调整的人员进行培训,确保熟悉流程和操作
2. 调整实施
- 选择合适的时间窗口:在业务低峰期进行架构调整,减少对业务的影响
- 严格按照计划执行:避免随意操作,确保调整的可控性
- 实时监控:监控调整过程中的集群状态和性能
- 及时记录:记录调整过程中的关键事件和结果
- 保持沟通:调整团队成员之间保持良好的沟通
3. 调整后验证
- 验证集群状态:检查集群的运行状态和健康状况
- 验证数据完整性:检查数据是否完整和一致
- 验证业务功能:测试核心业务功能是否正常
- 验证性能:检查集群性能是否符合预期
- 监控一段时间:在调整后监控集群一段时间,确保稳定运行
4. 常见问题处理
- 节点启动失败:检查配置文件和日志,定位问题原因
- 数据不一致:使用数据一致性检查工具检查和修复
- 性能下降:优化配置和资源,调整负载均衡
- 集群分裂:检查网络配置,修复网络问题
集群架构调整工具
1. DM集群管理工具
DM数据库提供了多种集群管理工具,包括:
- dmracc:DMRAC集群管理工具,用于管理DMRAC集群
- dmdscc:DMDSC集群管理工具,用于管理DMDSC集群
- dmcssm:DM集群同步服务管理工具,用于管理集群同步服务
- dmupdm:DM数据库升级工具,用于升级DM数据库版本
2. 第三方工具
除了DM自带的工具,还可以使用第三方工具进行集群架构调整,如:
- Ansible:用于自动化集群配置和管理
- Terraform:用于基础设施即代码,管理集群的基础设施
- Prometheus + Grafana:用于监控集群状态和性能
- Zabbix:用于监控集群的运行状态
集群架构调整案例
1. DMRAC集群扩容案例
背景
某企业的DMRAC集群原有2个节点,随着业务增长,需要扩容到3个节点以满足性能和容量需求。
实施过程
准备工作:
- 采购新服务器,安装操作系统和依赖
- 配置网络和存储
- 安装DM数据库软件
添加节点:
bash# 使用dmracc工具添加节点 ./dmracc add node -n node3 -i 3 -h 192.168.1.3 -p 5236 -d /opt/dmdbms/data/DAMENG配置节点:
- 同步集群配置
- 配置共享存储访问
- 配置集群服务
启动节点:
bash# 启动新节点的集群服务 ./DmServiceDMSERVER3 start验证扩容:
sql-- 查看集群状态 SELECT * FROM V$RAC_INSTANCE; -- 验证新节点已加入集群 SELECT INSTANCE_NAME, STATUS$ FROM V$INSTANCE;
结果
DMRAC集群成功扩容到3个节点,性能和容量得到提升,满足了业务增长需求。
2. DMDSC集群升级案例
背景
某企业的DMDSC集群使用的是DM8.1.0.120版本,需要升级到DM8.1.1.40版本,以利用新功能和性能改进。
实施过程
准备工作:
- 备份集群数据
- 在测试环境测试升级包兼容性
- 制定升级计划和回滚计划
滚动升级节点1:
bash# 停止节点1服务 ./DmServiceDMSERVER1 stop # 升级节点1 ./dmupdm /opt/dmdbms/data/DAMENG1/dm.ini /opt/dmdbms/upgrade/dm8_20230101_patch.zip # 启动节点1 ./DmServiceDMSERVER1 start验证节点1升级:
sql-- 查看节点1版本 SELECT * FROM V$VERSION;滚动升级节点2:
bash# 停止节点2服务 ./DmServiceDMSERVER2 stop # 升级节点2 ./dmupdm /opt/dmdbms/data/DAMENG2/dm.ini /opt/dmdbms/upgrade/dm8_20230101_patch.zip # 启动节点2 ./DmServiceDMSERVER2 start验证节点2升级:
sql-- 查看节点2版本 SELECT * FROM V$VERSION;验证集群状态:
sql-- 查看集群状态 SELECT * FROM V$DSC_STATUS;
结果
DMDSC集群成功升级到DM8.1.1.40版本,利用了新功能和性能改进,同时保持了服务的高可用性。
版本差异
| DM版本 | 集群架构调整差异 |
|---|---|
| DM7 | 支持基本的集群管理功能,架构调整操作相对简单 |
| DM8 | 增强了集群管理功能,支持更多架构调整操作 |
| DM8.1 | 引入了智能集群管理功能,支持自动化架构调整 |
常见问题(FAQ)
Q1: 如何选择合适的集群架构调整方式?
A1: 选择集群架构调整方式时需要考虑以下因素:
- 业务可用性要求:如果业务可用性要求高,选择滚动升级;否则可以选择离线升级
- 数据量大小:数据量大时,选择增量迁移;否则可以选择全量迁移
- 环境差异:同构环境可以选择直接复制数据;异构环境需要重新初始化集群
- 时间窗口:根据可用的维护时间窗口选择合适的调整方式
Q2: 集群架构调整前需要做哪些准备工作?
A2: 集群架构调整前需要做以下准备工作:
- 备份集群数据和配置
- 制定详细的调整计划和回滚计划
- 准备目标环境的硬件和软件
- 配置网络和存储
- 测试调整方案的可行性
- 培训参与调整的人员
Q3: 如何避免集群架构调整对业务的影响?
A3: 避免集群架构调整对业务影响的方法包括:
- 选择业务低峰期进行调整
- 使用滚动升级方式,保持服务可用性
- 提前通知业务部门,做好业务切换准备
- 制定详细的调整计划,减少调整时间
- 准备回滚计划,出现问题时快速回滚
Q4: 如何验证集群架构调整的结果?
A4: 验证集群架构调整结果的方法包括:
- 检查集群状态和健康状况
- 验证数据完整性和一致性
- 测试核心业务功能
- 检查集群性能指标
- 监控集群一段时间,确保稳定运行
Q5: 集群架构调整后需要做哪些后续工作?
A5: 集群架构调整后需要做以下后续工作:
- 更新集群文档和配置管理
- 对调整结果进行总结和评估
- 监控集群运行状态
- 优化集群配置和性能
- 培训业务和运维人员
Q6: 如何处理集群架构调整过程中的问题?
A6: 处理集群架构调整过程中的问题的方法包括:
- 查看日志,定位问题原因
- 根据回滚计划回滚调整操作
- 与DM技术支持团队联系,寻求帮助
- 分析问题原因,制定解决方案
- 重新执行调整操作
在进行集群架构调整时,需要充分准备,严格按照计划执行,及时验证调整结果,处理可能出现的问题。通过合理的架构调整,可以提高集群的性能和可用性,满足业务增长需求,优化成本,确保集群的长期稳定运行。
随着DM数据库版本的不断升级,集群管理功能也在不断增强,特别是DM8.1引入的智能集群管理功能,为集群架构调整提供了更强大的支持。数据库管理员应该不断学习和掌握新的集群管理技术和工具,提高集群架构调整的效率和成功率。
