外观
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=14. 配置实例参数
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 = 93415. 配置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 = 521426. 配置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 = dsc027. 启动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. 实例管理
添加实例
- 配置新实例的参数文件
- 配置共享存储访问权限
- 启动新实例到mount状态
- 在集群中注册新实例
- 启动新实例到open状态
删除实例
- 停止要删除的实例
- 在集群中注销实例
- 清理实例相关配置
- 清理实例相关文件
切换实例角色
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. 故障处理流程
实例故障处理
- 检测实例故障
- 确认故障原因
- 尝试重启实例
- 如果无法重启,从集群中移除实例
- 恢复实例并重新加入集群
共享存储故障处理
- 检测共享存储故障
- 确认故障原因
- 切换到备用共享存储(如果有)
- 修复或更换共享存储
- 恢复数据并重新挂载
通信网络故障处理
- 检测通信网络故障
- 确认故障原因
- 切换到备用网络(如果有)
- 修复通信网络
- 恢复网络连接
表决磁盘故障处理
- 检测表决磁盘故障
- 确认故障原因
- 更换表决磁盘
- 重新初始化表决磁盘
- 恢复集群状态
3. 脑裂处理
- 脑裂原因:实例间通信中断,导致多个实例认为自己是主实例
- 预防措施:使用表决磁盘,配置冗余通信网络
- 处理方法:
- 停止所有实例
- 修复通信网络故障
- 检查数据一致性
- 重新启动集群
- 验证集群状态
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集群的优势,为业务提供高效、可靠的数据服务。
