Skip to content

DM 集群架构调整

架构调整的必要性

  • 业务增长需求:随着业务增长,需要扩展集群规模以满足性能和容量需求
  • 成本优化:根据业务负载变化,调整集群规模以优化成本
  • 技术升级:升级集群版本或架构,利用新功能和性能改进
  • 故障恢复:在集群节点故障或性能下降时,调整集群架构以恢复服务
  • 合规要求:满足监管和合规性要求,调整集群架构

DM集群架构类型

DM数据库支持多种集群架构,包括:

  • DMRAC:DM实时应用集群,基于共享存储的高可用集群
  • DMDSC:DM共享存储集群,支持多节点同时访问共享存储
  • DMDataWatch:DM数据守护集群,基于日志复制的高可用集群
  • DMMPP:DM大规模并行处理集群,用于大数据处理

集群架构调整类型

1. 集群扩容

集群扩容是指增加集群节点数量,提高集群的性能和容量。

1.1 DMRAC扩容

扩容流程

  1. 准备工作

    • 安装新节点的操作系统和依赖
    • 配置网络和存储
    • 安装DM数据库软件
  2. 添加节点

    bash
    # 使用dmracc工具添加节点
    ./dmracc add node -n node3 -i 3 -h 192.168.1.3 -p 5236 -d /opt/dmdbms/data/DAMENG
  3. 配置节点

    • 同步集群配置
    • 配置共享存储访问
    • 配置集群服务
  4. 启动节点

    bash
    # 启动新节点的集群服务
    ./DmServiceDMSERVER3 start
  5. 验证扩容

    sql
    -- 查看集群状态
    SELECT * FROM V$RAC_INSTANCE;
    
    -- 查看节点状态
    SELECT * FROM V$INSTANCE;

1.2 DMDSC扩容

扩容流程

  1. 准备工作

    • 安装新节点的操作系统和依赖
    • 配置网络和共享存储
    • 安装DM数据库软件
  2. 初始化节点

    bash
    # 初始化新节点
    ./dminit path=/opt/dmdbms/data db_name=DAMENG instance_name=DMSERVER3 port_num=5238
  3. 配置集群

    • 修改dmmal.ini配置文件
    • 修改dmtimer.ini配置文件
    • 配置共享存储访问
  4. 启动节点

    bash
    # 启动新节点
    ./dmserver /opt/dmdbms/data/DAMENG/dm.ini mount
  5. 加入集群

    sql
    -- 将新节点加入集群
    ALTER DATABASE JOIN CLUSTER;
  6. 验证扩容

    sql
    -- 查看DSC状态
    SELECT * FROM V$DSC_STATUS;
    
    -- 查看节点状态
    SELECT * FROM V$INSTANCE;

2. 集群缩容

集群缩容是指减少集群节点数量,优化资源使用和成本。

2.1 DMRAC缩容

缩容流程

  1. 准备工作

    • 备份集群数据
    • 确保业务负载可以由剩余节点承担
    • 停止新节点上的业务服务
  2. 停止节点

    bash
    # 停止要移除的节点
    ./DmServiceDMSERVER3 stop
  3. 移除节点

    bash
    # 使用dmracc工具移除节点
    ./dmracc remove node -n node3
  4. 更新集群配置

    • 更新集群配置文件
    • 同步配置到其他节点
  5. 验证缩容

    sql
    -- 查看集群状态
    SELECT * FROM V$RAC_INSTANCE;

2.2 DMDSC缩容

缩容流程

  1. 准备工作

    • 备份集群数据
    • 确保业务负载可以由剩余节点承担
    • 停止要移除节点上的业务服务
  2. 将节点设置为mount状态

    sql
    ALTER DATABASE MOUNT;
  3. 移除节点

    sql
    -- 将节点从集群中移除
    ALTER DATABASE LEAVE CLUSTER;
  4. 停止节点

    bash
    # 停止节点服务
    ./dmserver stop /opt/dmdbms/data/DAMENG/dm.ini
  5. 更新集群配置

    • 更新dmmal.ini配置文件
    • 更新dmtimer.ini配置文件
  6. 验证缩容

    sql
    -- 查看DSC状态
    SELECT * FROM V$DSC_STATUS;

3. 集群升级

集群升级是指升级集群的DM数据库版本,利用新功能和性能改进。

3.1 滚动升级

滚动升级是指在不停止整个集群服务的情况下,逐个升级集群节点,适用于对可用性要求较高的场景。

升级流程

  1. 准备工作

    • 备份集群数据
    • 测试升级包在测试环境的兼容性
    • 制定升级计划和回滚计划
  2. 停止节点服务

    bash
    # 停止一个节点的服务
    ./DmServiceDMSERVER1 stop
  3. 升级节点

    bash
    # 使用dmupdm工具升级节点
    ./dmupdm /opt/dmdbms/data/DAMENG/dm.ini /opt/dmdbms/upgrade/dm8_20230101_patch.zip
  4. 启动节点

    bash
    # 启动升级后的节点
    ./DmServiceDMSERVER1 start
  5. 验证节点状态

    sql
    -- 查看节点状态和版本
    SELECT * FROM V$INSTANCE;
    SELECT * FROM V$VERSION;
  6. 重复上述步骤升级其他节点

  7. 验证集群状态

    sql
    -- 查看集群状态
    SELECT * FROM V$RAC_INSTANCE;

3.2 离线升级

离线升级是指停止整个集群服务,一次性升级所有节点,适用于对可用性要求较低的场景。

升级流程

  1. 准备工作

    • 备份集群数据
    • 停止所有业务服务
    • 制定升级计划和回滚计划
  2. 停止集群服务

    bash
    # 停止所有节点服务
    ./DmServiceDMSERVER1 stop
    ./DmServiceDMSERVER2 stop
  3. 升级所有节点

    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
  4. 启动集群服务

    bash
    # 启动所有节点服务
    ./DmServiceDMSERVER1 start
    ./DmServiceDMSERVER2 start
  5. 验证集群状态

    sql
    -- 查看集群状态和版本
    SELECT * FROM V$RAC_INSTANCE;
    SELECT * FROM V$VERSION;

4. 集群迁移

集群迁移是指将集群从一个环境迁移到另一个环境,如从物理机迁移到虚拟机,从本地数据中心迁移到云端等。

4.1 同构迁移

同构迁移是指在相同架构的环境之间迁移集群,如从物理机到物理机,从虚拟机到虚拟机。

迁移流程

  1. 准备工作

    • 准备目标环境的硬件和软件
    • 配置网络和存储
    • 备份源集群数据
  2. 复制数据

    bash
    # 使用rsync复制数据文件
    rsync -avz /opt/dmdbms/data/DAMENG/ target_server:/opt/dmdbms/data/DAMENG/
  3. 配置目标环境

    • 修改配置文件中的IP地址和端口
    • 配置集群服务
  4. 启动目标集群

    bash
    # 启动目标集群服务
    ./DmServiceDMSERVER1 start
    ./DmServiceDMSERVER2 start
  5. 验证迁移

    sql
    -- 查看集群状态
    SELECT * FROM V$RAC_INSTANCE;
    
    -- 验证数据完整性
    SELECT COUNT(*) FROM table_name;

4.2 异构迁移

异构迁移是指在不同架构的环境之间迁移集群,如从物理机到虚拟机,从本地到云端。

迁移流程

  1. 准备工作

    • 准备目标环境的硬件和软件
    • 配置网络和存储
    • 备份源集群数据
  2. 初始化目标集群

    bash
    # 在目标环境初始化集群
    ./dminit path=/opt/dmdbms/data db_name=DAMENG instance_name=DMSERVER1 port_num=5236
  3. 恢复数据

    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'"
  4. 配置目标集群

    • 配置集群服务
    • 修改配置文件
  5. 启动目标集群

    bash
    # 启动目标集群服务
    ./DmServiceDMSERVER1 start
    ./DmServiceDMSERVER2 start
  6. 验证迁移

    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个节点以满足性能和容量需求。

实施过程

  1. 准备工作

    • 采购新服务器,安装操作系统和依赖
    • 配置网络和存储
    • 安装DM数据库软件
  2. 添加节点

    bash
    # 使用dmracc工具添加节点
    ./dmracc add node -n node3 -i 3 -h 192.168.1.3 -p 5236 -d /opt/dmdbms/data/DAMENG
  3. 配置节点

    • 同步集群配置
    • 配置共享存储访问
    • 配置集群服务
  4. 启动节点

    bash
    # 启动新节点的集群服务
    ./DmServiceDMSERVER3 start
  5. 验证扩容

    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. 准备工作

    • 备份集群数据
    • 在测试环境测试升级包兼容性
    • 制定升级计划和回滚计划
  2. 滚动升级节点1

    bash
    # 停止节点1服务
    ./DmServiceDMSERVER1 stop
    
    # 升级节点1
    ./dmupdm /opt/dmdbms/data/DAMENG1/dm.ini /opt/dmdbms/upgrade/dm8_20230101_patch.zip
    
    # 启动节点1
    ./DmServiceDMSERVER1 start
  3. 验证节点1升级

    sql
    -- 查看节点1版本
    SELECT * FROM V$VERSION;
  4. 滚动升级节点2

    bash
    # 停止节点2服务
    ./DmServiceDMSERVER2 stop
    
    # 升级节点2
    ./dmupdm /opt/dmdbms/data/DAMENG2/dm.ini /opt/dmdbms/upgrade/dm8_20230101_patch.zip
    
    # 启动节点2
    ./DmServiceDMSERVER2 start
  5. 验证节点2升级

    sql
    -- 查看节点2版本
    SELECT * FROM V$VERSION;
  6. 验证集群状态

    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引入的智能集群管理功能,为集群架构调整提供了更强大的支持。数据库管理员应该不断学习和掌握新的集群管理技术和工具,提高集群架构调整的效率和成功率。