Skip to content

DMDSC集群

DMDSC集群的特点

  • 共享存储:多个实例共享同一份数据文件和控制文件
  • 高可用性:当一个实例故障时,其他实例可以继续提供服务
  • 负载均衡:支持多个实例同时处理业务请求
  • 无缝切换:实例故障时,应用程序可以快速切换到其他实例
  • 数据一致性:通过共享存储保证数据的一致性
  • 易维护性:支持在线添加或删除实例

DMDSC集群的应用场景

  • 关键业务系统:对可用性要求高的核心业务系统
  • 高并发场景:需要处理大量并发请求的场景
  • 数据共享场景:需要多个实例共享同一份数据的场景
  • 容灾备份场景:与DMDataWatch结合实现异地灾备

DMDSC集群架构

1. 整体架构

DMDSC集群由以下几个核心组件组成:

  • 数据库实例:多个DM数据库实例,共同访问共享存储
  • 共享存储:存储数据文件、控制文件、日志文件等
  • 本地存储:存储每个实例的参数文件、本地日志等
  • 通信网络:实例间通信网络,用于协调实例间的操作
  • 表决磁盘:用于实例故障检测和集群状态管理

2. 核心组件

数据库实例

  • 每个实例有独立的实例名、端口号等
  • 共享同一套数据文件和控制文件
  • 各自有独立的参数文件和本地日志
  • 实例间通过通信网络进行协调

共享存储

  • 存储数据文件、控制文件、重做日志文件等
  • 支持SAN、NAS等共享存储设备
  • 支持裸设备或文件系统
  • 建议使用RAID 10等冗余存储方案

通信网络

  • 用于实例间的通信和协调
  • 建议使用千兆或万兆以太网
  • 支持冗余网络配置
  • 用于传递控制信息和事务协调

表决磁盘

  • 用于实例故障检测
  • 用于集群状态管理
  • 用于脑裂防护
  • 建议使用独立的存储设备

3. 架构图

DMDSC集群部署

1. 部署准备

硬件准备

  • 服务器:至少2台服务器,配置相同或相近
  • CPU:建议8核以上
  • 内存:建议16GB以上
  • 存储:共享存储设备,建议使用SAN或NAS
  • 网络:千兆或万兆以太网,建议冗余网络
  • 表决磁盘:独立的存储设备

软件准备

  • DM数据库软件:DM 8及以上版本
  • 操作系统:支持的Linux或Windows版本
  • 共享存储驱动:根据共享存储设备选择合适的驱动
  • 集群管理工具:DM提供的集群管理工具

网络规划

  • 业务网络:用于客户端访问
  • 心跳网络:用于实例间通信
  • 存储网络:用于访问共享存储
  • 管理网络:用于集群管理

2. 部署步骤

1. 配置共享存储

  • 划分共享存储分区
  • 配置共享存储访问权限
  • 格式化共享存储(如果使用文件系统)
  • 配置表决磁盘

2. 安装DM数据库软件

  • 在所有节点上安装DM数据库软件
  • 配置环境变量
  • 验证安装结果

3. 创建DMDSC数据库

sql
-- 使用DM安装工具创建DMDSC数据库
./dminit path=/dm/data db_name=dsc_db instance_name=dsc01 port_num=5236 dsc_node_num=2 dsc_seqno=0 dsc_vtdir=/dev/raw/raw1 dsc_rac_flag=1

./dminit path=/dm/data db_name=dsc_db instance_name=dsc02 port_num=5237 dsc_node_num=2 dsc_seqno=1 dsc_vtdir=/dev/raw/raw1 dsc_rac_flag=1

4. 配置实例参数

ini
-- dm.ini配置示例
INSTANCE_NAME = dsc01
PORT_NUM = 5236
DSC_SEQNO = 0
DSC_VTDIR = /dev/raw/raw1
DSC_DSKCHK_IP = 192.168.1.101
DSC_DSKCHK_PORT = 9341

5. 配置dmmal.ini

ini
-- dmmal.ini配置示例
[MAL_INST1]
MAL_INST_NAME = dsc01
MAL_HOST = 192.168.1.101
MAL_PORT = 61141
MAL_INST_HOST = 192.168.0.101
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141

[MAL_INST2]
MAL_INST_NAME = dsc02
MAL_HOST = 192.168.1.102
MAL_PORT = 61142
MAL_INST_HOST = 192.168.0.102
MAL_INST_PORT = 5237
MAL_DW_PORT = 52142

6. 配置dmarch.ini

ini
-- dmarch.ini配置示例
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

[ARCHIVE_DSC1]
ARCH_TYPE = DSC
ARCH_DEST = dsc02

7. 启动DMDSC集群

sql
-- 在所有节点上启动DMDSC实例
./dmserver /dm/data/dsc_db/dm.ini mount

-- 在其中一个节点上初始化共享存储
./dmcssm create dc=DMDSC dcr_path=/dm/data/dsc_db/dcr.ini dcr_seqno=0

-- 启动CSS服务
./dmcss /dm/data/dsc_db/dmcss.ini

-- 启动DMDSC实例到open状态
ALTER DATABASE OPEN;

DMDSC集群配置管理

1. 参数配置

集群相关参数

  • DSC_SEQNO:实例在集群中的序号
  • DSC_VTDIR:表决磁盘路径
  • DSC_DSKCHK_IP:磁盘检查IP
  • DSC_DSKCHK_PORT:磁盘检查端口
  • DSC_ROLE:实例角色(PRIMARY/STANDBY)

配置方法

sql
-- 查看集群参数
SELECT NAME, VALUE FROM V$DM_INI WHERE NAME LIKE '%DSC%';

-- 修改集群参数
SP_SET_PARA_VALUE(2, 'DSC_SEQNO', 0);

2. 实例管理

添加实例

  1. 配置新实例的参数文件
  2. 配置共享存储访问权限
  3. 启动新实例到mount状态
  4. 在集群中注册新实例
  5. 启动新实例到open状态

删除实例

  1. 停止要删除的实例
  2. 在集群中注销实例
  3. 清理实例相关配置
  4. 清理实例相关文件

切换实例角色

sql
-- 切换实例角色
ALTER DATABASE PRIMARY TO STANDBY;
ALTER DATABASE STANDBY TO PRIMARY;

DMDSC集群监控与维护

1. 监控视图

DMDSC集群提供了丰富的监控视图,用于监控集群状态和性能:

  • V$DSC_VTDSC:查看表决磁盘状态
  • V$DSC_INSTANCE:查看集群实例状态
  • V$DSC_MAL:查看MAL系统状态
  • V$DSC_LOCK:查看集群锁状态
  • V$DSC_SESSIONS:查看集群会话状态
  • V$DSC_TRANSACTION:查看集群事务状态
sql
-- 查看集群实例状态
SELECT * FROM V$DSC_INSTANCE;

-- 查看表决磁盘状态
SELECT * FROM V$DSC_VTDSC;

-- 查看集群会话状态
SELECT * FROM V$DSC_SESSIONS;

-- 查看集群事务状态
SELECT * FROM V$DSC_TRANSACTION;

2. 监控工具

  • DM管理工具:图形界面监控集群状态
  • DM性能监控工具:实时监控集群性能
  • dmcssm工具:命令行管理CSS服务
  • dmdcs工具:命令行管理DSC集群

3. 日常维护

定期备份

  • 定期备份数据库
  • 定期备份集群配置
  • 定期备份表决磁盘

性能监控

  • 监控实例性能
  • 监控共享存储性能
  • 监控通信网络性能
  • 监控表决磁盘性能

日志管理

  • 定期清理归档日志
  • 定期清理审计日志
  • 定期分析错误日志
  • 监控重做日志使用情况

健康检查

  • 定期检查实例状态
  • 定期检查共享存储状态
  • 定期检查通信网络状态
  • 定期检查表决磁盘状态

DMDSC集群故障处理

1. 常见故障类型

实例故障

  • 实例进程崩溃
  • 实例无法连接
  • 实例响应缓慢

共享存储故障

  • 共享存储不可访问
  • 共享存储性能下降
  • 共享存储损坏

通信网络故障

  • 实例间通信中断
  • 心跳网络故障
  • 脑裂现象

表决磁盘故障

  • 表决磁盘不可访问
  • 表决磁盘损坏
  • 表决磁盘数据不一致

2. 故障处理流程

实例故障处理

  1. 检测实例故障
  2. 确认故障原因
  3. 尝试重启实例
  4. 如果无法重启,从集群中移除实例
  5. 恢复实例并重新加入集群

共享存储故障处理

  1. 检测共享存储故障
  2. 确认故障原因
  3. 切换到备用共享存储(如果有)
  4. 修复或更换共享存储
  5. 恢复数据并重新挂载

通信网络故障处理

  1. 检测通信网络故障
  2. 确认故障原因
  3. 切换到备用网络(如果有)
  4. 修复通信网络
  5. 恢复网络连接

表决磁盘故障处理

  1. 检测表决磁盘故障
  2. 确认故障原因
  3. 更换表决磁盘
  4. 重新初始化表决磁盘
  5. 恢复集群状态

3. 脑裂处理

  • 脑裂原因:实例间通信中断,导致多个实例认为自己是主实例
  • 预防措施:使用表决磁盘,配置冗余通信网络
  • 处理方法:
    1. 停止所有实例
    2. 修复通信网络故障
    3. 检查数据一致性
    4. 重新启动集群
    5. 验证集群状态

DMDSC集群最佳实践

1. 部署最佳实践

  • 硬件配置:使用高性能服务器和存储设备
  • 网络配置:配置冗余通信网络
  • 存储配置:使用RAID 10等冗余存储方案
  • 表决磁盘:使用独立的存储设备
  • 负载均衡:配置负载均衡器,实现请求分发

2. 配置最佳实践

  • 参数优化:根据系统负载优化集群参数
  • 日志配置:配置合适的日志大小和归档策略
  • 内存配置:合理分配内存资源
  • 并发配置:根据CPU核心数配置并发参数
  • 监控配置:配置完善的监控和告警

3. 维护最佳实践

  • 定期备份:制定合理的备份策略
  • 定期检查:定期检查集群状态和性能
  • 定期优化:定期优化数据库和集群配置
  • 定期演练:定期进行故障演练和恢复测试
  • 文档管理:维护详细的集群文档

4. 性能优化

  • SQL优化:优化SQL语句,减少锁竞争
  • 索引优化:合理设计索引,提高查询性能
  • 缓存优化:优化缓冲区大小,提高缓存命中率
  • I/O优化:优化存储参数,提高I/O性能
  • 并发优化:优化并发参数,提高并发处理能力

常见问题(FAQ)

Q1: DMDSC集群和DMDataWatch有什么区别?

A1: DMDSC集群是基于共享存储的高可用性解决方案,多个实例共享同一份数据,实现负载均衡和故障切换;DMDataWatch是基于日志复制的高可用性解决方案,主备实例有各自独立的数据副本,通过日志复制保持数据一致性。

Q2: 如何选择DMDSC集群的节点数量?

A2: DMDSC集群支持2-16个节点,节点数量的选择需要考虑以下因素:

  • 业务负载:负载越高,需要的节点越多
  • 可用性要求:节点越多,可用性越高
  • 硬件资源:需要足够的硬件资源支持多个节点
  • 管理复杂度:节点越多,管理复杂度越高

Q3: 如何处理DMDSC集群的脑裂问题?

A3: 处理DMDSC集群脑裂问题的方法:

  • 使用表决磁盘,预防脑裂发生
  • 配置冗余通信网络,提高通信可靠性
  • 定期检查集群状态,及时发现脑裂现象
  • 制定脑裂处理流程,快速恢复集群

Q4: 如何监控DMDSC集群的性能?

A4: 监控DMDSC集群性能的方法:

  • 使用V$DSC_INSTANCE、V$DSC_SESSIONS等视图
  • 使用DM管理工具的集群监控功能
  • 使用DM性能监控工具
  • 配置性能告警,及时发现性能问题

Q5: 如何备份DMDSC集群?

A5: 备份DMDSC集群的方法:

  • 使用DM提供的备份工具进行备份
  • 支持全量备份、增量备份和日志备份
  • 可以在任意节点上执行备份操作
  • 建议定期备份集群配置文件

Q6: 如何扩展DMDSC集群的存储?

A6: 扩展DMDSC集群存储的方法:

  • 扩展共享存储容量
  • 为集群添加新的共享存储设备
  • 扩展数据文件大小
  • 添加新的数据文件

Q7: 如何升级DMDSC集群?

A7: 升级DMDSC集群的方法:

  • 制定详细的升级计划
  • 备份集群数据和配置
  • 停止所有实例
  • 升级DM数据库软件
  • 升级数据库实例
  • 启动集群并验证升级结果

Q8: 如何迁移DMDSC集群?

A8: 迁移DMDSC集群的方法:

  • 制定详细的迁移计划
  • 备份集群数据和配置
  • 配置新的硬件环境
  • 迁移共享存储数据
  • 配置新集群参数
  • 启动新集群并验证迁移结果

Q9: 如何处理DMDSC集群的实例故障?

A9: 处理DMDSC集群实例故障的方法:

  • 检测实例故障
  • 确认故障原因
  • 尝试重启实例
  • 如果无法重启,从集群中移除实例
  • 恢复实例并重新加入集群

Q10: 如何优化DMDSC集群的性能?

A10: 优化DMDSC集群性能的方法:

  • 优化SQL语句,减少锁竞争
  • 合理设计索引,提高查询性能
  • 优化缓冲区大小,提高缓存命中率
  • 优化I/O参数,提高存储性能
  • 优化并发参数,提高并发处理能力
  • 配置负载均衡,实现请求分发

版本差异说明

版本主要变化
DM 7支持基本的DMDSC集群功能,最多支持8个节点
DM 8增强了DMDSC集群功能,最多支持16个节点,支持更多共享存储类型
DM 8.1优化了DMDSC集群的性能和可靠性,支持更多的故障检测和恢复机制

在部署和使用DMDSC集群时,需要注意以下几点:

  • 选择合适的硬件和网络配置
  • 配置合理的集群参数
  • 定期监控集群状态和性能
  • 制定完善的备份和恢复策略
  • 定期进行故障演练和恢复测试
  • 维护详细的集群文档

通过合理的部署、配置和维护,可以充分发挥DMDSC集群的优势,为业务提供高效、可靠的数据服务。