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集群的优势,为业务提供高效、可靠的数据服务。