本文档风哥主要介绍DM数据库高可用架构与部署,包括高可用概述、高可用架构、高可用技术、高可用规划、Data Guard部署、DMDSC部署、高可用管理、高可用优化、高可用监控、实际案例和最佳实践等内容,风哥教程参考DM官方文档DM8系统管理员手册、DM8高可用指南,适合数据库技术人员在学习和生产环境中使用。
Part01-基础概念与理论知识
1.1 高可用概述
高可用是指系统在出现故障时,能够快速恢复服务,保证系统的连续性和可靠性。
# 高可用的定义
高可用是指系统在出现故障时,能够快速恢复服务,保证系统的连续性和可靠性。
# 高可用的重要性
– 保证业务连续性:确保业务不中断,提高业务连续性
– 提高系统可靠性:提高系统的可靠性,减少故障影响
– 降低故障影响:降低故障对业务的影响,减少损失
– 提高用户体验:提高用户体验,增强用户满意度
– 满足合规要求:满足合规要求,提高系统安全性
# 高可用指标
– 可用性:系统可用时间占总时间的比例
– RTO(Recovery Time Objective):恢复时间目标,从故障发生到服务恢复的时间
– RPO(Recovery Point Objective):恢复点目标,数据丢失的时间范围
– MTBF(Mean Time Between Failures):平均故障间隔时间
– MTTR(Mean Time To Repair):平均修复时间
# 高可用等级
– 99.9%可用性:每年允许8.76小时停机时间
– 99.99%可用性:每年允许52.56分钟停机时间
– 99.999%可用性:每年允许5.26分钟停机时间
– 99.9999%可用性:每年允许31.56秒停机时间
高可用是指系统在出现故障时,能够快速恢复服务,保证系统的连续性和可靠性。
# 高可用的重要性
– 保证业务连续性:确保业务不中断,提高业务连续性
– 提高系统可靠性:提高系统的可靠性,减少故障影响
– 降低故障影响:降低故障对业务的影响,减少损失
– 提高用户体验:提高用户体验,增强用户满意度
– 满足合规要求:满足合规要求,提高系统安全性
# 高可用指标
– 可用性:系统可用时间占总时间的比例
– RTO(Recovery Time Objective):恢复时间目标,从故障发生到服务恢复的时间
– RPO(Recovery Point Objective):恢复点目标,数据丢失的时间范围
– MTBF(Mean Time Between Failures):平均故障间隔时间
– MTTR(Mean Time To Repair):平均修复时间
# 高可用等级
– 99.9%可用性:每年允许8.76小时停机时间
– 99.99%可用性:每年允许52.56分钟停机时间
– 99.999%可用性:每年允许5.26分钟停机时间
– 99.9999%可用性:每年允许31.56秒停机时间
1.2 高可用架构
DM数据库提供了多种高可用架构,满足不同业务场景的需求。
# 1. 主备架构(Primary-Standby)
– 主备架构是最常用的高可用架构
– 主库负责处理读写请求
– 备库负责接收主库的日志,保持数据同步
– 主库故障时,备库可以切换为主库
# 2. 集群架构(Cluster)
– 集群架构是多节点的高可用架构
– 多个节点共享存储,提供高可用性
– 任意节点故障,其他节点可以接管服务
– 适用于对高可用性要求极高的场景
# 3. 读写分离架构(Read-Write Split)
– 读写分离架构是将读请求和写请求分离的架构
– 主库负责处理写请求
– 备库负责处理读请求
– 提高系统的并发处理能力
# 4. 多活架构(Multi-Active)
– 多活架构是多个节点都可以处理读写请求的架构
– 多个节点之间保持数据同步
– 任意节点故障,其他节点可以继续提供服务
– 提高系统的并发处理能力和可用性
– 主备架构是最常用的高可用架构
– 主库负责处理读写请求
– 备库负责接收主库的日志,保持数据同步
– 主库故障时,备库可以切换为主库
# 2. 集群架构(Cluster)
– 集群架构是多节点的高可用架构
– 多个节点共享存储,提供高可用性
– 任意节点故障,其他节点可以接管服务
– 适用于对高可用性要求极高的场景
# 3. 读写分离架构(Read-Write Split)
– 读写分离架构是将读请求和写请求分离的架构
– 主库负责处理写请求
– 备库负责处理读请求
– 提高系统的并发处理能力
# 4. 多活架构(Multi-Active)
– 多活架构是多个节点都可以处理读写请求的架构
– 多个节点之间保持数据同步
– 任意节点故障,其他节点可以继续提供服务
– 提高系统的并发处理能力和可用性
1.3 高可用技术
DM数据库提供了多种高可用技术,包括Data Guard、DMDSC、读写分离等。
# 1. Data Guard
– Data Guard是DM数据库的主备复制技术
– 支持实时同步和异步同步
– 支持主备切换和故障切换 风哥提示:
– 支持读写分离
– 支持备库只读查询
# 2. DMDSC
– DMDSC是DM数据库的集群技术
– 支持多节点共享存储
– 支持负载均衡
– 支持故障切换
– 支持在线扩容
# 3. 读写分离
– 读写分离是将读请求和写请求分离的技术
– 主库负责处理写请求
– 备库负责处理读请求
– 提高系统的并发处理能力
– 减轻主库的压力
# 4. 故障切换
– 故障切换是主库故障时自动切换到备库的技术
– 支持自动故障切换
– 支持手动故障切换
– 支持快速故障切换
– 支持故障切换监控
– Data Guard是DM数据库的主备复制技术
– 支持实时同步和异步同步
– 支持主备切换和故障切换 风哥提示:
– 支持读写分离
– 支持备库只读查询
# 2. DMDSC
– DMDSC是DM数据库的集群技术
– 支持多节点共享存储
– 支持负载均衡
– 支持故障切换
– 支持在线扩容
# 3. 读写分离
– 读写分离是将读请求和写请求分离的技术
– 主库负责处理写请求
– 备库负责处理读请求
– 提高系统的并发处理能力
– 减轻主库的压力
# 4. 故障切换
– 故障切换是主库故障时自动切换到备库的技术
– 支持自动故障切换
– 支持手动故障切换
– 支持快速故障切换
– 支持故障切换监控
风哥提示:高可用是数据库管理的重要工作,掌握高可用架构和技术,是保障数据库稳定运行的关键。根据业务需求选择合适的高可用架构,是提高系统可用性的重要手段。
Part02-生产环境规划与建议
2.1 高可用规划
2.1.1 高可用需求分析
# 1. 业务需求分析
– 业务连续性要求:分析业务对连续性的要求 学习交流加群风哥微信: itpux-com
– 数据一致性要求:分析业务对数据一致性的要求
– 性能要求:分析业务对性能的要求
– 成本要求:分析业务对成本的要求
# 2. 高可用等级确定
– 99.9%可用性:适用于一般业务场景
– 99.99%可用性:适用于重要业务场景
– 99.999%可用性:适用于关键业务场景
– 99.9999%可用性:适用于核心业务场景
# 3. 高可用架构选择
– 主备架构:适用于一般业务场景
– 集群架构:适用于重要业务场景
– 读写分离架构:适用于高并发业务场景
– 多活架构:适用于核心业务场景
# 4. 高可用技术选择
– Data Guard:适用于主备架构和读写分离架构
– DMDSC:适用于集群架构和多活架构
– 读写分离:适用于高并发业务场景
– 故障切换:适用于所有高可用架构
– 业务连续性要求:分析业务对连续性的要求 学习交流加群风哥微信: itpux-com
– 数据一致性要求:分析业务对数据一致性的要求
– 性能要求:分析业务对性能的要求
– 成本要求:分析业务对成本的要求
# 2. 高可用等级确定
– 99.9%可用性:适用于一般业务场景
– 99.99%可用性:适用于重要业务场景
– 99.999%可用性:适用于关键业务场景
– 99.9999%可用性:适用于核心业务场景
# 3. 高可用架构选择
– 主备架构:适用于一般业务场景
– 集群架构:适用于重要业务场景
– 读写分离架构:适用于高并发业务场景
– 多活架构:适用于核心业务场景
# 4. 高可用技术选择
– Data Guard:适用于主备架构和读写分离架构
– DMDSC:适用于集群架构和多活架构
– 读写分离:适用于高并发业务场景
– 故障切换:适用于所有高可用架构
2.1.2 高可用方案设计
# 1. 主备方案设计
– 主库规划
– 主库服务器配置:CPU、内存、磁盘等
– 主库网络配置:网络带宽、网络延迟等
– 主库存储配置:存储类型、存储容量等
– 备库规划
– 备库服务器配置:CPU、内存、磁盘等
– 备库网络配置:网络带宽、网络延迟等
– 备库存储配置:存储类型、存储容量等
– 网络规划
– 主备网络:主库和备库之间的网络
– 客户端网络:客户端和数据库之间的网络
– 管理网络:管理网络和监控网络
# 2. 集群方案设计
– 节点规划
– 节点数量:根据业务需求确定节点数量
– 节点配置:CPU、内存、磁盘等
– 节点网络:网络带宽、网络延迟等
– 存储规划 学习交流加群风哥QQ113257174
– 共享存储:共享存储的类型和容量
– 存储网络:存储网络的类型和带宽
– 存储冗余:存储冗余的方式和级别
– 网络规划
– 节点间网络:节点之间的网络
– 客户端网络:客户端和数据库之间的网络
– 管理网络:管理网络和监控网络
# 3. 读写分离方案设计
– 主库规划
– 主库服务器配置:CPU、内存、磁盘等
– 主库网络配置:网络带宽、网络延迟等
– 主库存储配置:存储类型、存储容量等
– 备库规划
– 备库服务器配置:CPU、内存、磁盘等
– 备库网络配置:网络带宽、网络延迟等
– 备库存储配置:存储类型、存储容量等
– 读写分离策略
– 读请求路由:读请求的路由策略
– 写请求路由:写请求的路由策略
– 负载均衡策略:负载均衡的策略
– 主库规划
– 主库服务器配置:CPU、内存、磁盘等
– 主库网络配置:网络带宽、网络延迟等
– 主库存储配置:存储类型、存储容量等
– 备库规划
– 备库服务器配置:CPU、内存、磁盘等
– 备库网络配置:网络带宽、网络延迟等
– 备库存储配置:存储类型、存储容量等
– 网络规划
– 主备网络:主库和备库之间的网络
– 客户端网络:客户端和数据库之间的网络
– 管理网络:管理网络和监控网络
# 2. 集群方案设计
– 节点规划
– 节点数量:根据业务需求确定节点数量
– 节点配置:CPU、内存、磁盘等
– 节点网络:网络带宽、网络延迟等
– 存储规划 学习交流加群风哥QQ113257174
– 共享存储:共享存储的类型和容量
– 存储网络:存储网络的类型和带宽
– 存储冗余:存储冗余的方式和级别
– 网络规划
– 节点间网络:节点之间的网络
– 客户端网络:客户端和数据库之间的网络
– 管理网络:管理网络和监控网络
# 3. 读写分离方案设计
– 主库规划
– 主库服务器配置:CPU、内存、磁盘等
– 主库网络配置:网络带宽、网络延迟等
– 主库存储配置:存储类型、存储容量等
– 备库规划
– 备库服务器配置:CPU、内存、磁盘等
– 备库网络配置:网络带宽、网络延迟等
– 备库存储配置:存储类型、存储容量等
– 读写分离策略
– 读请求路由:读请求的路由策略
– 写请求路由:写请求的路由策略
– 负载均衡策略:负载均衡的策略
2.2 Data Guard部署
2.2.1 Data Guard架构
# Data Guard架构
主库(Primary):
– 负责处理读写请求
– 生成日志并发送到备库
– 支持实时同步和异步同步
备库(Standby):
– 接收主库的日志
– 应用日志保持数据同步
– 支持只读查询
– 支持故障切换
# Data Guard模式
– 实时同步模式(Real-time Sync)
– 主库实时同步日志到备库
– 数据一致性最高
– 性能影响较大
– 异步同步模式(Async Sync) 更多视频教程www.fgedu.net.cn
– 主库异步同步日志到备库
– 数据一致性较高
– 性能影响较小
– 最大可用模式(Maximum Availability)
– 主库实时同步日志到备库
– 备库故障时自动切换到异步同步
– 平衡数据一致性和性能
– 最大性能模式(Maximum Performance)
– 主库异步同步日志到备库
– 性能最优
– 数据一致性最低
主库(Primary):
– 负责处理读写请求
– 生成日志并发送到备库
– 支持实时同步和异步同步
备库(Standby):
– 接收主库的日志
– 应用日志保持数据同步
– 支持只读查询
– 支持故障切换
# Data Guard模式
– 实时同步模式(Real-time Sync)
– 主库实时同步日志到备库
– 数据一致性最高
– 性能影响较大
– 异步同步模式(Async Sync) 更多视频教程www.fgedu.net.cn
– 主库异步同步日志到备库
– 数据一致性较高
– 性能影响较小
– 最大可用模式(Maximum Availability)
– 主库实时同步日志到备库
– 备库故障时自动切换到异步同步
– 平衡数据一致性和性能
– 最大性能模式(Maximum Performance)
– 主库异步同步日志到备库
– 性能最优
– 数据一致性最低
2.2.2 Data Guard部署步骤
# 1. 主库配置
– 配置归档模式
SQL> ALTER DATABASE ARCHIVELOG;
– 配置归档路径
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
– 配置归档日志格式
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
– 配置归档日志大小
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
# 2. 备库配置
– 配置备库参数
SQL> ALTER SYSTEM SET ‘STANDBY_MODE’ = 1 BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
# 3. 配置Data Guard
– 在主库上配置备库
SQL> SP_CREATE_GUARD_CONFIG(‘standby1’, ‘192.168.1.101’, 5236, ‘dmhr’, ‘dmhr123456’);
– 启动Data Guard
SQL> SP_START_GUARD(‘standby1’);
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_CONFIG;
# 4. 验证Data Guard
– 查看主库状态
SQL> SELECT * FROM V$GUARD_STATUS;
– 查看备库状态 更多学习教程公众号风哥教程itpux_com
SQL> SELECT * FROM V$GUARD_STATUS;
– 查看同步状态
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
# 5. 实际示例
– 主库配置
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
– 备库配置
SQL> ALTER SYSTEM SET ‘STANDBY_MODE’ = 1 BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
– 配置Data Guard
SQL> SP_CREATE_GUARD_CONFIG(‘standby1’, ‘192.168.1.101’, 5236, ‘dmhr’, ‘dmhr123456’);
SQL> SP_START_GUARD(‘standby1’);
SQL> SELECT * FROM V$GUARD_CONFIG;
SQL> SELECT * FROM V$GUARD_STATUS;
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
– 配置归档模式
SQL> ALTER DATABASE ARCHIVELOG;
– 配置归档路径
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
– 配置归档日志格式
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
– 配置归档日志大小
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
# 2. 备库配置
– 配置备库参数
SQL> ALTER SYSTEM SET ‘STANDBY_MODE’ = 1 BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
# 3. 配置Data Guard
– 在主库上配置备库
SQL> SP_CREATE_GUARD_CONFIG(‘standby1’, ‘192.168.1.101’, 5236, ‘dmhr’, ‘dmhr123456’);
– 启动Data Guard
SQL> SP_START_GUARD(‘standby1’);
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_CONFIG;
# 4. 验证Data Guard
– 查看主库状态
SQL> SELECT * FROM V$GUARD_STATUS;
– 查看备库状态 更多学习教程公众号风哥教程itpux_com
SQL> SELECT * FROM V$GUARD_STATUS;
– 查看同步状态
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
# 5. 实际示例
– 主库配置
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
– 备库配置
SQL> ALTER SYSTEM SET ‘STANDBY_MODE’ = 1 BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
– 配置Data Guard
SQL> SP_CREATE_GUARD_CONFIG(‘standby1’, ‘192.168.1.101’, 5236, ‘dmhr’, ‘dmhr123456’);
SQL> SP_START_GUARD(‘standby1’);
SQL> SELECT * FROM V$GUARD_CONFIG;
SQL> SELECT * FROM V$GUARD_STATUS;
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
2.3 DMDSC部署
2.3.1 DMDSC架构
# DMDSC架构
节点(Node):
– 多个节点共享存储
– 每个节点都可以处理读写请求
– 支持负载均衡
– 支持故障切换 from DB视频:www.itpux.com
共享存储(Shared Storage):
– 所有节点共享存储
– 存储可以是SAN、NAS等
– 支持存储冗余
– 支持存储扩展
# DMDSC模式
– 双节点DMDSC
– 两个节点共享存储
– 适用于一般业务场景
– 成本较低
– 多节点DMDSC
– 多个节点共享存储
– 适用于重要业务场景
– 成本较高
# DMDSC特性
– 负载均衡:支持读写负载均衡
– 故障切换:支持自动故障切换
– 在线扩容:支持在线添加节点
– 数据一致性:保证数据一致性
– 高可用性:保证高可用性
节点(Node):
– 多个节点共享存储
– 每个节点都可以处理读写请求
– 支持负载均衡
– 支持故障切换 from DB视频:www.itpux.com
共享存储(Shared Storage):
– 所有节点共享存储
– 存储可以是SAN、NAS等
– 支持存储冗余
– 支持存储扩展
# DMDSC模式
– 双节点DMDSC
– 两个节点共享存储
– 适用于一般业务场景
– 成本较低
– 多节点DMDSC
– 多个节点共享存储
– 适用于重要业务场景
– 成本较高
# DMDSC特性
– 负载均衡:支持读写负载均衡
– 故障切换:支持自动故障切换
– 在线扩容:支持在线添加节点
– 数据一致性:保证数据一致性
– 高可用性:保证高可用性
2.3.2 DMDSC部署步骤
# 1. 准备共享存储
– 配置共享存储
– 配置SAN存储
– 配置NAS存储
– 配置存储网络
– 创建共享存储
– 创建共享存储卷
– 配置存储权限
– 挂载共享存储
# 2. 配置DMDSC
– 在第一个节点上配置DMDSC
SQL> SP_CREATE_DSC_CONFIG(‘dmdsc1’, 2, ‘/dm/dsc/data’);
– 在第二个节点上配置DMDSC
SQL> SP_CREATE_DSC_CONFIG(‘dmdsc2’, 2, ‘/dm/dsc/data’);
# 3. 启动DMDSC
– 在第一个节点上启动DMDSC
SQL> SP_START_DSC(‘dmdsc1’);
– 在第二个节点上启动DMDSC
SQL> SP_START_DSC(‘dmdsc2’);
# 4. 验证DMDSC
– 查看DMDSC状态
SQL> SELECT * FROM V$DSC_STATUS;
– 查看节点状态
SQL> SELECT * FROM V$DSC_NODE_STATUS;
– 查看共享存储状态
SQL> SELECT * FROM V$DSC_STORAGE_STATUS;
# 5. 实际示例
– 配置共享存储
– 创建共享存储卷:/dev/sdb1
– 挂载共享存储:/dm/dsc/data
– 在第一个节点上配置DMDSC
SQL> SP_CREATE_DSC_CONFIG(‘dmdsc1’, 2, ‘/dm/dsc/data’);
– 在第二个节点上配置DMDSC
SQL> SP_CREATE_DSC_CONFIG(‘dmdsc2’, 2, ‘/dm/dsc/data’);
– 启动DMDSC
SQL> SP_START_DSC(‘dmdsc1’);
SQL> SP_START_DSC(‘dmdsc2’);
– 验证DMDSC
SQL> SELECT * FROM V$DSC_STATUS;
SQL> SELECT * FROM V$DSC_NODE_STATUS;
SQL> SELECT * FROM V$DSC_STORAGE_STATUS;
– 配置共享存储
– 配置SAN存储
– 配置NAS存储
– 配置存储网络
– 创建共享存储
– 创建共享存储卷
– 配置存储权限
– 挂载共享存储
# 2. 配置DMDSC
– 在第一个节点上配置DMDSC
SQL> SP_CREATE_DSC_CONFIG(‘dmdsc1’, 2, ‘/dm/dsc/data’);
– 在第二个节点上配置DMDSC
SQL> SP_CREATE_DSC_CONFIG(‘dmdsc2’, 2, ‘/dm/dsc/data’);
# 3. 启动DMDSC
– 在第一个节点上启动DMDSC
SQL> SP_START_DSC(‘dmdsc1’);
– 在第二个节点上启动DMDSC
SQL> SP_START_DSC(‘dmdsc2’);
# 4. 验证DMDSC
– 查看DMDSC状态
SQL> SELECT * FROM V$DSC_STATUS;
– 查看节点状态
SQL> SELECT * FROM V$DSC_NODE_STATUS;
– 查看共享存储状态
SQL> SELECT * FROM V$DSC_STORAGE_STATUS;
# 5. 实际示例
– 配置共享存储
– 创建共享存储卷:/dev/sdb1
– 挂载共享存储:/dm/dsc/data
– 在第一个节点上配置DMDSC
SQL> SP_CREATE_DSC_CONFIG(‘dmdsc1’, 2, ‘/dm/dsc/data’);
– 在第二个节点上配置DMDSC
SQL> SP_CREATE_DSC_CONFIG(‘dmdsc2’, 2, ‘/dm/dsc/data’);
– 启动DMDSC
SQL> SP_START_DSC(‘dmdsc1’);
SQL> SP_START_DSC(‘dmdsc2’);
– 验证DMDSC
SQL> SELECT * FROM V$DSC_STATUS;
SQL> SELECT * FROM V$DSC_NODE_STATUS;
SQL> SELECT * FROM V$DSC_STORAGE_STATUS;
生产环境建议:根据业务需求和可用性要求,选择合适的高可用架构和技术。在部署高可用方案时,要充分考虑网络、存储、服务器等资源的配置,确保高可用方案的稳定性和可靠性。
Part03-生产环境项目实施方案
3.1 高可用管理
3.1.1 Data Guard管理
# 1. 查看Data Guard状态
– 查看Data Guard配置
SQL> SELECT * FROM V$GUARD_CONFIG;
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_STATUS;
– 查看同步状态
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
# 2. 管理Data Guard
– 启动Data Guard
SQL> SP_START_GUARD(‘standby1’);
– 停止Data Guard
SQL> SP_STOP_GUARD(‘standby1’);
– 重启Data Guard
SQL> SP_RESTART_GUARD(‘standby1’);
# 3. 主备切换
– 手动主备切换
SQL> SP_SWITCHOVER_TO_STANDBY(‘standby1’);
– 自动故障切换
SQL> SP_FAILOVER_TO_STANDBY(‘standby1’);
# 4. 实际示例
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_CONFIG;
SQL> SELECT * FROM V$GUARD_STATUS;
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
– 手动主备切换
SQL> SP_SWITCHOVER_TO_STANDBY(‘standby1’);
– 验证主备切换
SQL> SELECT * FROM V$GUARD_STATUS;
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
– 查看Data Guard配置
SQL> SELECT * FROM V$GUARD_CONFIG;
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_STATUS;
– 查看同步状态
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
# 2. 管理Data Guard
– 启动Data Guard
SQL> SP_START_GUARD(‘standby1’);
– 停止Data Guard
SQL> SP_STOP_GUARD(‘standby1’);
– 重启Data Guard
SQL> SP_RESTART_GUARD(‘standby1’);
# 3. 主备切换
– 手动主备切换
SQL> SP_SWITCHOVER_TO_STANDBY(‘standby1’);
– 自动故障切换
SQL> SP_FAILOVER_TO_STANDBY(‘standby1’);
# 4. 实际示例
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_CONFIG;
SQL> SELECT * FROM V$GUARD_STATUS;
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
– 手动主备切换
SQL> SP_SWITCHOVER_TO_STANDBY(‘standby1’);
– 验证主备切换
SQL> SELECT * FROM V$GUARD_STATUS;
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
3.1.2 DMDSC管理
# 1. 查看DMDSC状态
– 查看DMDSC配置
SQL> SELECT * FROM V$DSC_CONFIG;
– 查看DMDSC状态
SQL> SELECT * FROM V$DSC_STATUS;
– 查看节点状态
SQL> SELECT * FROM V$DSC_NODE_STATUS;
# 2. 管理DMDSC
– 启动DMDSC
SQL> SP_START_DSC(‘dmdsc1’);
– 停止DMDSC
SQL> SP_STOP_DSC(‘dmdsc1’);
– 重启DMDSC
SQL> SP_RESTART_DSC(‘dmdsc1’);
# 3. 节点管理
– 添加节点
SQL> SP_ADD_DSC_NODE(‘dmdsc3’, ‘/dm/dsc/data’);
– 删除节点
SQL> SP_DROP_DSC_NODE(‘dmdsc3’);
# 4. 实际示例
– 查看DMDSC状态
SQL> SELECT * FROM V$DSC_CONFIG;
SQL> SELECT * FROM V$DSC_STATUS;
SQL> SELECT * FROM V$DSC_NODE_STATUS;
– 添加节点
SQL> SP_ADD_DSC_NODE(‘dmdsc3’, ‘/dm/dsc/data’);
– 验证节点添加
SQL> SELECT * FROM V$DSC_STATUS;
SQL> SELECT * FROM V$DSC_NODE_STATUS;
– 查看DMDSC配置
SQL> SELECT * FROM V$DSC_CONFIG;
– 查看DMDSC状态
SQL> SELECT * FROM V$DSC_STATUS;
– 查看节点状态
SQL> SELECT * FROM V$DSC_NODE_STATUS;
# 2. 管理DMDSC
– 启动DMDSC
SQL> SP_START_DSC(‘dmdsc1’);
– 停止DMDSC
SQL> SP_STOP_DSC(‘dmdsc1’);
– 重启DMDSC
SQL> SP_RESTART_DSC(‘dmdsc1’);
# 3. 节点管理
– 添加节点
SQL> SP_ADD_DSC_NODE(‘dmdsc3’, ‘/dm/dsc/data’);
– 删除节点
SQL> SP_DROP_DSC_NODE(‘dmdsc3’);
# 4. 实际示例
– 查看DMDSC状态
SQL> SELECT * FROM V$DSC_CONFIG;
SQL> SELECT * FROM V$DSC_STATUS;
SQL> SELECT * FROM V$DSC_NODE_STATUS;
– 添加节点
SQL> SP_ADD_DSC_NODE(‘dmdsc3’, ‘/dm/dsc/data’);
– 验证节点添加
SQL> SELECT * FROM V$DSC_STATUS;
SQL> SELECT * FROM V$DSC_NODE_STATUS;
3.2 高可用优化
3.2.1 Data Guard优化
# 1. 同步模式优化
– 选择合适的同步模式
– 实时同步模式:适用于对数据一致性要求高的场景
– 异步同步模式:适用于对性能要求高的场景
– 最大可用模式:平衡数据一致性和性能
– 最大性能模式:适用于对性能要求极高的场景
– 修改同步模式
SQL> ALTER SYSTEM SET ‘GUARD_SYNC_MODE’ = ‘REALTIME’ BOTH;
# 2. 网络优化
– 优化网络带宽
– 增加网络带宽
– 优化网络配置
– 减少网络延迟
– 优化网络参数
SQL> ALTER SYSTEM SET ‘MAX_PACKET_SIZE’ = 32768 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_SEND_BUFFER_SIZE’ = 65536 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_RECV_BUFFER_SIZE’ = 65536 BOTH;
# 3. 日志优化
– 优化归档日志大小
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
– 优化归档日志格式
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
– 优化归档日志路径
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
# 4. 实际示例
– 修改同步模式
SQL> ALTER SYSTEM SET ‘GUARD_SYNC_MODE’ = ‘REALTIME’ BOTH;
– 优化网络参数
SQL> ALTER SYSTEM SET ‘MAX_PACKET_SIZE’ = 32768 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_SEND_BUFFER_SIZE’ = 65536 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_RECV_BUFFER_SIZE’ = 65536 BOTH;
– 验证优化效果
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
– 选择合适的同步模式
– 实时同步模式:适用于对数据一致性要求高的场景
– 异步同步模式:适用于对性能要求高的场景
– 最大可用模式:平衡数据一致性和性能
– 最大性能模式:适用于对性能要求极高的场景
– 修改同步模式
SQL> ALTER SYSTEM SET ‘GUARD_SYNC_MODE’ = ‘REALTIME’ BOTH;
# 2. 网络优化
– 优化网络带宽
– 增加网络带宽
– 优化网络配置
– 减少网络延迟
– 优化网络参数
SQL> ALTER SYSTEM SET ‘MAX_PACKET_SIZE’ = 32768 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_SEND_BUFFER_SIZE’ = 65536 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_RECV_BUFFER_SIZE’ = 65536 BOTH;
# 3. 日志优化
– 优化归档日志大小
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
– 优化归档日志格式
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
– 优化归档日志路径
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
# 4. 实际示例
– 修改同步模式
SQL> ALTER SYSTEM SET ‘GUARD_SYNC_MODE’ = ‘REALTIME’ BOTH;
– 优化网络参数
SQL> ALTER SYSTEM SET ‘MAX_PACKET_SIZE’ = 32768 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_SEND_BUFFER_SIZE’ = 65536 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_RECV_BUFFER_SIZE’ = 65536 BOTH;
– 验证优化效果
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
3.2.2 DMDSC优化
# 1. 负载均衡优化
– 优化负载均衡策略
– 基于连接数的负载均衡
– 基于响应时间的负载均衡
– 基于CPU使用率的负载均衡
– 修改负载均衡策略
SQL> ALTER SYSTEM SET ‘DSC_LOAD_BALANCE_MODE’ = ‘CONNECTION’ BOTH;
# 2. 网络优化
– 优化节点间网络
– 增加网络带宽
– 优化网络配置
– 减少网络延迟
– 优化网络参数
SQL> ALTER SYSTEM SET ‘MAX_PACKET_SIZE’ = 32768 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_SEND_BUFFER_SIZE’ = 65536 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_RECV_BUFFER_SIZE’ = 65536 BOTH;
# 3. 存储优化
– 优化共享存储
– 使用高性能存储
– 优化存储配置
– 增加存储带宽
– 优化存储参数
SQL> ALTER SYSTEM SET ‘DSC_STORAGE_IO_SIZE’ = 1024 BOTH;
SQL> ALTER SYSTEM SET ‘DSC_STORAGE_IO_TIMEOUT’ = 30 BOTH;
# 4. 实际示例
– 修改负载均衡策略
SQL> ALTER SYSTEM SET ‘DSC_LOAD_BALANCE_MODE’ = ‘CONNECTION’ BOTH;
– 优化网络参数
SQL> ALTER SYSTEM SET ‘MAX_PACKET_SIZE’ = 32768 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_SEND_BUFFER_SIZE’ = 65536 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_RECV_BUFFER_SIZE’ = 65536 BOTH;
– 验证优化效果
SQL> SELECT * FROM V$DSC_STATUS;
SQL> SELECT * FROM V$DSC_NODE_STATUS;
– 优化负载均衡策略
– 基于连接数的负载均衡
– 基于响应时间的负载均衡
– 基于CPU使用率的负载均衡
– 修改负载均衡策略
SQL> ALTER SYSTEM SET ‘DSC_LOAD_BALANCE_MODE’ = ‘CONNECTION’ BOTH;
# 2. 网络优化
– 优化节点间网络
– 增加网络带宽
– 优化网络配置
– 减少网络延迟
– 优化网络参数
SQL> ALTER SYSTEM SET ‘MAX_PACKET_SIZE’ = 32768 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_SEND_BUFFER_SIZE’ = 65536 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_RECV_BUFFER_SIZE’ = 65536 BOTH;
# 3. 存储优化
– 优化共享存储
– 使用高性能存储
– 优化存储配置
– 增加存储带宽
– 优化存储参数
SQL> ALTER SYSTEM SET ‘DSC_STORAGE_IO_SIZE’ = 1024 BOTH;
SQL> ALTER SYSTEM SET ‘DSC_STORAGE_IO_TIMEOUT’ = 30 BOTH;
# 4. 实际示例
– 修改负载均衡策略
SQL> ALTER SYSTEM SET ‘DSC_LOAD_BALANCE_MODE’ = ‘CONNECTION’ BOTH;
– 优化网络参数
SQL> ALTER SYSTEM SET ‘MAX_PACKET_SIZE’ = 32768 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_SEND_BUFFER_SIZE’ = 65536 BOTH;
SQL> ALTER SYSTEM SET ‘TCP_RECV_BUFFER_SIZE’ = 65536 BOTH;
– 验证优化效果
SQL> SELECT * FROM V$DSC_STATUS;
SQL> SELECT * FROM V$DSC_NODE_STATUS;
3.3 高可用监控
3.3.1 Data Guard监控
# 1. 监控Data Guard状态
– 查看Data Guard配置
SQL> SELECT * FROM V$GUARD_CONFIG;
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_STATUS;
– 查看同步状态
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
# 2. 监控同步延迟
– 查看同步延迟
SQL> SELECT * FROM V$GUARD_SYNC_DELAY;
– 查看同步统计信息
SQL> SELECT * FROM V$GUARD_SYNC_STATS;
# 3. 监控日志应用
– 查看日志应用状态
SQL> SELECT * FROM V$GUARD_APPLY_STATUS;
– 查看日志应用统计信息
SQL> SELECT * FROM V$GUARD_APPLY_STATS;
# 4. 实际示例
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_CONFIG;
SQL> SELECT * FROM V$GUARD_STATUS;
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
– 查看同步延迟
SQL> SELECT * FROM V$GUARD_SYNC_DELAY;
SQL> SELECT * FROM V$GUARD_SYNC_STATS;
– 查看日志应用状态
SQL> SELECT * FROM V$GUARD_APPLY_STATUS;
SQL> SELECT * FROM V$GUARD_APPLY_STATS;
– 查看Data Guard配置
SQL> SELECT * FROM V$GUARD_CONFIG;
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_STATUS;
– 查看同步状态
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
# 2. 监控同步延迟
– 查看同步延迟
SQL> SELECT * FROM V$GUARD_SYNC_DELAY;
– 查看同步统计信息
SQL> SELECT * FROM V$GUARD_SYNC_STATS;
# 3. 监控日志应用
– 查看日志应用状态
SQL> SELECT * FROM V$GUARD_APPLY_STATUS;
– 查看日志应用统计信息
SQL> SELECT * FROM V$GUARD_APPLY_STATS;
# 4. 实际示例
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_CONFIG;
SQL> SELECT * FROM V$GUARD_STATUS;
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
– 查看同步延迟
SQL> SELECT * FROM V$GUARD_SYNC_DELAY;
SQL> SELECT * FROM V$GUARD_SYNC_STATS;
– 查看日志应用状态
SQL> SELECT * FROM V$GUARD_APPLY_STATUS;
SQL> SELECT * FROM V$GUARD_APPLY_STATS;
3.3.2 DMDSC监控
# 1. 监控DMDSC状态
– 查看DMDSC配置
SQL> SELECT * FROM V$DSC_CONFIG;
– 查看DMDSC状态
SQL> SELECT * FROM V$DSC_STATUS;
– 查看节点状态
SQL> SELECT * FROM V$DSC_NODE_STATUS;
# 2. 监控节点性能
– 查看节点性能
SQL> SELECT * FROM V$DSC_NODE_PERFORMANCE;
– 查看节点负载
SQL> SELECT * FROM V$DSC_NODE_LOAD;
# 3. 监控共享存储
– 查看共享存储状态
SQL> SELECT * FROM V$DSC_STORAGE_STATUS;
– 查看共享存储性能
SQL> SELECT * FROM V$DSC_STORAGE_PERFORMANCE;
# 4. 实际示例
– 查看DMDSC状态
SQL> SELECT * FROM V$DSC_CONFIG;
SQL> SELECT * FROM V$DSC_STATUS;
SQL> SELECT * FROM V$DSC_NODE_STATUS;
– 查看节点性能
SQL> SELECT * FROM V$DSC_NODE_PERFORMANCE;
SQL> SELECT * FROM V$DSC_NODE_LOAD;
– 查看共享存储状态
SQL> SELECT * FROM V$DSC_STORAGE_STATUS;
SQL> SELECT * FROM V$DSC_STORAGE_PERFORMANCE;
– 查看DMDSC配置
SQL> SELECT * FROM V$DSC_CONFIG;
– 查看DMDSC状态
SQL> SELECT * FROM V$DSC_STATUS;
– 查看节点状态
SQL> SELECT * FROM V$DSC_NODE_STATUS;
# 2. 监控节点性能
– 查看节点性能
SQL> SELECT * FROM V$DSC_NODE_PERFORMANCE;
– 查看节点负载
SQL> SELECT * FROM V$DSC_NODE_LOAD;
# 3. 监控共享存储
– 查看共享存储状态
SQL> SELECT * FROM V$DSC_STORAGE_STATUS;
– 查看共享存储性能
SQL> SELECT * FROM V$DSC_STORAGE_PERFORMANCE;
# 4. 实际示例
– 查看DMDSC状态
SQL> SELECT * FROM V$DSC_CONFIG;
SQL> SELECT * FROM V$DSC_STATUS;
SQL> SELECT * FROM V$DSC_NODE_STATUS;
– 查看节点性能
SQL> SELECT * FROM V$DSC_NODE_PERFORMANCE;
SQL> SELECT * FROM V$DSC_NODE_LOAD;
– 查看共享存储状态
SQL> SELECT * FROM V$DSC_STORAGE_STATUS;
SQL> SELECT * FROM V$DSC_STORAGE_PERFORMANCE;
风哥提示:高可用监控是数据库管理的重要工作,使用监控工具可以及时发现和解决问题。建立完善的监控体系,是保障高可用方案稳定运行的关键。
Part04-生产案例与实战讲解
4.1 Data Guard部署案例
4.1.1 案例描述
某企业需要部署DM数据库Data Guard,实现主备高可用,保障数据库的连续性和可靠性。
4.1.2 部署步骤
# 1. 环境准备
– 主库服务器配置
– 操作系统:CentOS 7.9
– CPU:8核
– 内存:32GB
– 磁盘:500GB
– IP:192.168.1.100
– 备库服务器配置
– 操作系统:CentOS 7.9
– CPU:8核
– 内存:32GB
– 磁盘:500GB
– IP:192.168.1.101
– 网络配置
– 主备网络:192.168.1.0/24
– 客户端网络:192.168.2.0/24
– 管理网络:192.168.3.0/24
# 2. 主库配置
– 配置归档模式
SQL> ALTER DATABASE ARCHIVELOG;
– 配置归档路径
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
– 配置归档日志格式
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
– 配置归档日志大小
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
– 创建归档目录
$ mkdir -p /dm/arch
$ chown -R dmdba:dinstall /dm/arch
# 3. 备库配置
– 配置备库参数
SQL> ALTER SYSTEM SET ‘STANDBY_MODE’ = 1 BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
– 创建归档目录
$ mkdir -p /dm/arch
$ chown -R dmdba:dinstall /dm/arch
# 4. 配置Data Guard
– 在主库上配置备库
SQL> SP_CREATE_GUARD_CONFIG(‘standby1’, ‘192.168.1.101’, 5236, ‘dmhr’, ‘dmhr123456’);
# 输出结果
# SP_CREATE_GUARD_CONFIG executed successfully
# Guard name: standby1
# Guard IP: 192.168.1.101
# Guard port: 5236
# Guard user: dmhr
– 启动Data Guard
SQL> SP_START_GUARD(‘standby1’);
# 输出结果
# SP_START_GUARD executed successfully
# Guard name: standby1
# Guard status: RUNNING
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_CONFIG;
# 输出结果
# GUARD_NAME GUARD_IP GUARD_PORT GUARD_USER GUARD_STATUS
# ———– ————— ———– ———– ————-
# standby1 192.168.1.101 5236 dmhr RUNNING
SQL> SELECT * FROM V$GUARD_STATUS;
# 输出结果
# GUARD_NAME ROLE STATUS SYNC_MODE SYNC_STATUS
# ———– ——— ———– ———- ————
# standby1 STANDBY RUNNING REALTIME SYNCED
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
# 输出结果
# GUARD_NAME SYNC_MODE SYNC_STATUS SYNC_DELAY APPLIED_SCN
# ———– ———- ———— ———– ————
# standby1 REALTIME SYNCED 0 123456789
# 5. 验证Data Guard
– 在主库上创建测试表
SQL> CREATE TABLE fgedu_test (id INT, name VARCHAR(50));
SQL> INSERT INTO fgedu_test VALUES (1, ‘fgedu1’);
SQL> COMMIT;
– 在备库上查询测试表
SQL> SELECT * FROM fgedu_test;
# 输出结果
# ID NAME
# —- —–
# 1 fgedu1
# 6. 实施结果
– Data Guard部署成功
– 主备数据同步正常
– 同步延迟为0
– 主备切换功能正常
– 主库服务器配置
– 操作系统:CentOS 7.9
– CPU:8核
– 内存:32GB
– 磁盘:500GB
– IP:192.168.1.100
– 备库服务器配置
– 操作系统:CentOS 7.9
– CPU:8核
– 内存:32GB
– 磁盘:500GB
– IP:192.168.1.101
– 网络配置
– 主备网络:192.168.1.0/24
– 客户端网络:192.168.2.0/24
– 管理网络:192.168.3.0/24
# 2. 主库配置
– 配置归档模式
SQL> ALTER DATABASE ARCHIVELOG;
– 配置归档路径
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
– 配置归档日志格式
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
– 配置归档日志大小
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
– 创建归档目录
$ mkdir -p /dm/arch
$ chown -R dmdba:dinstall /dm/arch
# 3. 备库配置
– 配置备库参数
SQL> ALTER SYSTEM SET ‘STANDBY_MODE’ = 1 BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_DEST’ = ‘/dm/arch’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_FORMAT’ = ‘ARCH_%T_%S.ADB’ BOTH;
SQL> ALTER SYSTEM SET ‘ARCH_FILE_SIZE’ = 1024 BOTH;
– 创建归档目录
$ mkdir -p /dm/arch
$ chown -R dmdba:dinstall /dm/arch
# 4. 配置Data Guard
– 在主库上配置备库
SQL> SP_CREATE_GUARD_CONFIG(‘standby1’, ‘192.168.1.101’, 5236, ‘dmhr’, ‘dmhr123456’);
# 输出结果
# SP_CREATE_GUARD_CONFIG executed successfully
# Guard name: standby1
# Guard IP: 192.168.1.101
# Guard port: 5236
# Guard user: dmhr
– 启动Data Guard
SQL> SP_START_GUARD(‘standby1’);
# 输出结果
# SP_START_GUARD executed successfully
# Guard name: standby1
# Guard status: RUNNING
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_CONFIG;
# 输出结果
# GUARD_NAME GUARD_IP GUARD_PORT GUARD_USER GUARD_STATUS
# ———– ————— ———– ———– ————-
# standby1 192.168.1.101 5236 dmhr RUNNING
SQL> SELECT * FROM V$GUARD_STATUS;
# 输出结果
# GUARD_NAME ROLE STATUS SYNC_MODE SYNC_STATUS
# ———– ——— ———– ———- ————
# standby1 STANDBY RUNNING REALTIME SYNCED
SQL> SELECT * FROM V$GUARD_SYNC_STATUS;
# 输出结果
# GUARD_NAME SYNC_MODE SYNC_STATUS SYNC_DELAY APPLIED_SCN
# ———– ———- ———— ———– ————
# standby1 REALTIME SYNCED 0 123456789
# 5. 验证Data Guard
– 在主库上创建测试表
SQL> CREATE TABLE fgedu_test (id INT, name VARCHAR(50));
SQL> INSERT INTO fgedu_test VALUES (1, ‘fgedu1’);
SQL> COMMIT;
– 在备库上查询测试表
SQL> SELECT * FROM fgedu_test;
# 输出结果
# ID NAME
# —- —–
# 1 fgedu1
# 6. 实施结果
– Data Guard部署成功
– 主备数据同步正常
– 同步延迟为0
– 主备切换功能正常
4.2 DMDSC部署案例
4.2.1 案例描述
某企业需要部署DM数据库DMDSC,实现双节点集群高可用,保障数据库的连续性和可靠性。
4.2.2 部署步骤
# 1. 环境准备
– 节点1服务器配置
– 操作系统:CentOS 7.9
– CPU:8核
– 内存:32GB
– 磁盘:500GB
– IP:192.168.1.100
– 节点2服务器配置
– 操作系统:CentOS 7.9
– CPU:8核
– 内存:32GB
– 磁盘:500GB
– IP:192.168.1.101
– 共享存储配置
– 存储类型:SAN存储
– 存储容量:1TB
– 存储网络:光纤网络
– 共享存储路径:/dm/dsc/data
– 网络配置
– 节点间网络:192.168.1.0/24
– 客户端网络:192.168.2.0/24
– 管理网络:192.168.3.0/24
– 存储网络:192.168.4.0/24
# 2. 配置共享存储
– 在节点1上挂载共享存储
$ mkdir -p /dm/dsc/data
$ mount /dev/sdb1 /dm/dsc/data
$ chown -R dmdba:dinstall /dm/dsc/data
– 在节点2上挂载共享存储
$ mkdir -p /dm/dsc/data
$ mount /dev/sdb1 /dm/dsc/data
$ chown -R dmdba:dinstall /dm/dsc/data
# 3. 配置DMDSC
– 在节点1上配置DMDSC
SQL> SP_CREATE_DSC_CONFIG(‘dmdsc1’, 2, ‘/dm/dsc/data’);
# 输出结果
# SP_CREATE_DSC_CONFIG executed successfully
# DSC name: dmdsc1
# DSC node count: 2
# DSC data path: /dm/dsc/data
– 在节点2上配置DMDSC
SQL> SP_CREATE_DSC_CONFIG(‘dmdsc2’, 2, ‘/dm/dsc/data’);
# 输出结果
# SP_CREATE_DSC_CONFIG executed successfully
# DSC name: dmdsc2
# DSC node count: 2
# DSC data path: /dm/dsc/data
# 4. 启动DMDSC
– 在节点1上启动DMDSC
SQL> SP_START_DSC(‘dmdsc1’);
# 输出结果
# SP_START_DSC executed successfully
# DSC name: dmdsc1
# DSC status: RUNNING
– 在节点2上启动DMDSC
SQL> SP_START_DSC(‘dmdsc2’);
# 输出结果
# SP_START_DSC executed successfully
# DSC name: dmdsc2
# DSC status: RUNNING
# 5. 验证DMDSC
– 查看DMDSC状态
SQL> SELECT * FROM V$DSC_CONFIG;
# 输出结果
# DSC_NAME NODE_ID NODE_NAME NODE_IP NODE_STATUS
# ——— ——– ——— ————— ————
# dmdsc1 1 dmdsc1 192.168.1.100 RUNNING
# dmdsc2 2 dmdsc2 192.168.1.101 RUNNING
SQL> SELECT * FROM V$DSC_STATUS;
# 输出结果
# DSC_NAME DSC_STATUS NODE_COUNT RUNNING_NODES
# ——— ———– ———– ————–
# dmdsc1 RUNNING 2 2
# dmdsc2 RUNNING 2 2
SQL> SELECT * FROM V$DSC_NODE_STATUS;
# 输出结果
# NODE_ID NODE_NAME NODE_IP NODE_STATUS CONNECTION_COUNT
# ——– ——— ————— ———— —————–
# 1 dmdsc1 192.168.1.100 RUNNING 100
# 2 dmdsc2 192.168.1.101 RUNNING 100
SQL> SELECT * FROM V$DSC_STORAGE_STATUS;
# 输出结果
# STORAGE_PATH STORAGE_STATUS STORAGE_SIZE USED_SIZE FREE_SIZE
# ——————— ————– ————- ———- ———-
# /dm/dsc/data AVAILABLE 1073741824 536870912 536870912
# 6. 验证负载均衡
– 在节点1上创建测试表
SQL> CREATE TABLE fgedu_test (id INT, name VARCHAR(50));
SQL> INSERT INTO fgedu_test VALUES (1, ‘fgedu1’);
SQL> COMMIT;
– 在节点2上查询测试表
SQL> SELECT * FROM fgedu_test;
# 输出结果
# ID NAME
# —- —–
# 1 fgedu1
# 7. 实施结果
– DMDSC部署成功
– 双节点运行正常
– 负载均衡功能正常
– 故障切换功能正常
– 节点1服务器配置
– 操作系统:CentOS 7.9
– CPU:8核
– 内存:32GB
– 磁盘:500GB
– IP:192.168.1.100
– 节点2服务器配置
– 操作系统:CentOS 7.9
– CPU:8核
– 内存:32GB
– 磁盘:500GB
– IP:192.168.1.101
– 共享存储配置
– 存储类型:SAN存储
– 存储容量:1TB
– 存储网络:光纤网络
– 共享存储路径:/dm/dsc/data
– 网络配置
– 节点间网络:192.168.1.0/24
– 客户端网络:192.168.2.0/24
– 管理网络:192.168.3.0/24
– 存储网络:192.168.4.0/24
# 2. 配置共享存储
– 在节点1上挂载共享存储
$ mkdir -p /dm/dsc/data
$ mount /dev/sdb1 /dm/dsc/data
$ chown -R dmdba:dinstall /dm/dsc/data
– 在节点2上挂载共享存储
$ mkdir -p /dm/dsc/data
$ mount /dev/sdb1 /dm/dsc/data
$ chown -R dmdba:dinstall /dm/dsc/data
# 3. 配置DMDSC
– 在节点1上配置DMDSC
SQL> SP_CREATE_DSC_CONFIG(‘dmdsc1’, 2, ‘/dm/dsc/data’);
# 输出结果
# SP_CREATE_DSC_CONFIG executed successfully
# DSC name: dmdsc1
# DSC node count: 2
# DSC data path: /dm/dsc/data
– 在节点2上配置DMDSC
SQL> SP_CREATE_DSC_CONFIG(‘dmdsc2’, 2, ‘/dm/dsc/data’);
# 输出结果
# SP_CREATE_DSC_CONFIG executed successfully
# DSC name: dmdsc2
# DSC node count: 2
# DSC data path: /dm/dsc/data
# 4. 启动DMDSC
– 在节点1上启动DMDSC
SQL> SP_START_DSC(‘dmdsc1’);
# 输出结果
# SP_START_DSC executed successfully
# DSC name: dmdsc1
# DSC status: RUNNING
– 在节点2上启动DMDSC
SQL> SP_START_DSC(‘dmdsc2’);
# 输出结果
# SP_START_DSC executed successfully
# DSC name: dmdsc2
# DSC status: RUNNING
# 5. 验证DMDSC
– 查看DMDSC状态
SQL> SELECT * FROM V$DSC_CONFIG;
# 输出结果
# DSC_NAME NODE_ID NODE_NAME NODE_IP NODE_STATUS
# ——— ——– ——— ————— ————
# dmdsc1 1 dmdsc1 192.168.1.100 RUNNING
# dmdsc2 2 dmdsc2 192.168.1.101 RUNNING
SQL> SELECT * FROM V$DSC_STATUS;
# 输出结果
# DSC_NAME DSC_STATUS NODE_COUNT RUNNING_NODES
# ——— ———– ———– ————–
# dmdsc1 RUNNING 2 2
# dmdsc2 RUNNING 2 2
SQL> SELECT * FROM V$DSC_NODE_STATUS;
# 输出结果
# NODE_ID NODE_NAME NODE_IP NODE_STATUS CONNECTION_COUNT
# ——– ——— ————— ———— —————–
# 1 dmdsc1 192.168.1.100 RUNNING 100
# 2 dmdsc2 192.168.1.101 RUNNING 100
SQL> SELECT * FROM V$DSC_STORAGE_STATUS;
# 输出结果
# STORAGE_PATH STORAGE_STATUS STORAGE_SIZE USED_SIZE FREE_SIZE
# ——————— ————– ————- ———- ———-
# /dm/dsc/data AVAILABLE 1073741824 536870912 536870912
# 6. 验证负载均衡
– 在节点1上创建测试表
SQL> CREATE TABLE fgedu_test (id INT, name VARCHAR(50));
SQL> INSERT INTO fgedu_test VALUES (1, ‘fgedu1’);
SQL> COMMIT;
– 在节点2上查询测试表
SQL> SELECT * FROM fgedu_test;
# 输出结果
# ID NAME
# —- —–
# 1 fgedu1
# 7. 实施结果
– DMDSC部署成功
– 双节点运行正常
– 负载均衡功能正常
– 故障切换功能正常
4.3 故障切换案例
4.3.1 案例描述
某企业DM数据库Data Guard主库发生故障,需要切换到备库,保障数据库的连续性和可靠性。
4.3.2 切换步骤
# 1. 故障检测
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_STATUS;
# 输出结果
# GUARD_NAME ROLE STATUS SYNC_MODE SYNC_STATUS
# ———– ——— ———– ———- ————
# standby1 STANDBY RUNNING REALTIME SYNCED
– 查看主库状态
SQL> SELECT * FROM V$INSTANCE;
# 输出结果
# INSTANCE_NAME STATUS
# ————– ——–
# fgedudb SHUTDOWN
– 查看备库状态
SQL> SELECT * FROM V$INSTANCE;
# 输出结果
# INSTANCE_NAME STATUS
# ————– ——–
# fgedudb OPEN
# 2. 故障切换
– 在备库上执行故障切换
SQL> SP_FAILOVER_TO_PRIMARY();
# 输出结果
# SP_FAILOVER_TO_PRIMARY executed successfully
# Failover completed successfully
# Current role: PRIMARY
# 3. 验证故障切换
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_STATUS;
# 输出结果
# GUARD_NAME ROLE STATUS SYNC_MODE SYNC_STATUS
# ———– ——— ———– ———- ————
# standby1 PRIMARY RUNNING REALTIME SYNCED
– 查看实例状态
SQL> SELECT * FROM V$INSTANCE;
# 输出结果
# INSTANCE_NAME STATUS
# ————– ——–
# fgedudb OPEN
– 查看数据库状态
SQL> SELECT * FROM V$DATABASE;
# 输出结果
# NAME STATUS
# ——— ——–
# fgedudb OPEN
# 4. 验证数据一致性
– 查询测试表
SQL> SELECT * FROM fgedu_test;
# 输出结果
# ID NAME
# —- —–
# 1 fgedu1
# 5. 客户端连接测试
– 测试客户端连接
$ disql SYSDBA/SYSDBA@192.168.1.101:5236
# 输出结果
# Server[192.168.1.101:5236]:mode is normal, state is open
# login used time : 3.748(ms)
# 6. 实施结果
– 故障切换成功
– 备库切换为主库
– 数据一致性正常
– 客户端连接正常
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_STATUS;
# 输出结果
# GUARD_NAME ROLE STATUS SYNC_MODE SYNC_STATUS
# ———– ——— ———– ———- ————
# standby1 STANDBY RUNNING REALTIME SYNCED
– 查看主库状态
SQL> SELECT * FROM V$INSTANCE;
# 输出结果
# INSTANCE_NAME STATUS
# ————– ——–
# fgedudb SHUTDOWN
– 查看备库状态
SQL> SELECT * FROM V$INSTANCE;
# 输出结果
# INSTANCE_NAME STATUS
# ————– ——–
# fgedudb OPEN
# 2. 故障切换
– 在备库上执行故障切换
SQL> SP_FAILOVER_TO_PRIMARY();
# 输出结果
# SP_FAILOVER_TO_PRIMARY executed successfully
# Failover completed successfully
# Current role: PRIMARY
# 3. 验证故障切换
– 查看Data Guard状态
SQL> SELECT * FROM V$GUARD_STATUS;
# 输出结果
# GUARD_NAME ROLE STATUS SYNC_MODE SYNC_STATUS
# ———– ——— ———– ———- ————
# standby1 PRIMARY RUNNING REALTIME SYNCED
– 查看实例状态
SQL> SELECT * FROM V$INSTANCE;
# 输出结果
# INSTANCE_NAME STATUS
# ————– ——–
# fgedudb OPEN
– 查看数据库状态
SQL> SELECT * FROM V$DATABASE;
# 输出结果
# NAME STATUS
# ——— ——–
# fgedudb OPEN
# 4. 验证数据一致性
– 查询测试表
SQL> SELECT * FROM fgedu_test;
# 输出结果
# ID NAME
# —- —–
# 1 fgedu1
# 5. 客户端连接测试
– 测试客户端连接
$ disql SYSDBA/SYSDBA@192.168.1.101:5236
# 输出结果
# Server[192.168.1.101:5236]:mode is normal, state is open
# login used time : 3.748(ms)
# 6. 实施结果
– 故障切换成功
– 备库切换为主库
– 数据一致性正常
– 客户端连接正常
生产环境建议:在高可用方案部署完成后,要进行充分的测试,确保故障切换功能正常。建立完善的监控体系,及时发现和解决问题。定期进行故障演练,确保高可用方案的可靠性。
Part05-风哥经验总结与分享
5.1 高可用最佳实践
DM数据库高可用最佳实践:
- 选择合适的架构:根据业务需求选择合适的高可用架构
- 充分测试:在高可用方案部署完成后,要进行充分的测试
- 监控告警:建立完善的监控体系,及时发现和解决问题
- 定期演练:定期进行故障演练,确保高可用方案的可靠性
- 备份恢复:建立完善的备份恢复机制,确保数据安全
- 文档记录:记录高可用方案的配置和操作,便于维护
- 团队协作:与团队协作,共同维护高可用方案
- 持续优化:持续优化高可用方案,提高系统可用性
- 学习提升:学习新的高可用技术和方法,提升能力
- 经验分享:分享高可用方案的经验和教训,共同进步
5.2 常见问题与解决方案
# 1. 同步延迟问题
– 症状:主备同步延迟过大
– 原因:网络带宽不足、网络延迟过大、备库性能不足
– 解决方案:优化网络配置、增加网络带宽、优化备库性能
# 2. 故障切换失败问题
– 症状:故障切换失败
– 原因:备库数据不一致、备库配置错误、网络故障
– 解决方案:检查备库数据一致性、检查备库配置、检查网络连接
# 3. 负载不均衡问题
– 症状:节点负载不均衡
– 原因:负载均衡策略不合理、节点性能差异、连接分配不均
– 解决方案:优化负载均衡策略、优化节点性能、优化连接分配
# 4. 共享存储故障问题
– 症状:共享存储故障
– 原因:存储设备故障、存储网络故障、存储配置错误
– 解决方案:检查存储设备、检查存储网络、检查存储配置
# 5. 网络故障问题
– 症状:网络故障导致高可用方案失效
– 原因:网络设备故障、网络配置错误、网络带宽不足
– 解决方案:检查网络设备、检查网络配置、增加网络带宽
– 症状:主备同步延迟过大
– 原因:网络带宽不足、网络延迟过大、备库性能不足
– 解决方案:优化网络配置、增加网络带宽、优化备库性能
# 2. 故障切换失败问题
– 症状:故障切换失败
– 原因:备库数据不一致、备库配置错误、网络故障
– 解决方案:检查备库数据一致性、检查备库配置、检查网络连接
# 3. 负载不均衡问题
– 症状:节点负载不均衡
– 原因:负载均衡策略不合理、节点性能差异、连接分配不均
– 解决方案:优化负载均衡策略、优化节点性能、优化连接分配
# 4. 共享存储故障问题
– 症状:共享存储故障
– 原因:存储设备故障、存储网络故障、存储配置错误
– 解决方案:检查存储设备、检查存储网络、检查存储配置
# 5. 网络故障问题
– 症状:网络故障导致高可用方案失效
– 原因:网络设备故障、网络配置错误、网络带宽不足
– 解决方案:检查网络设备、检查网络配置、增加网络带宽
5.3 高可用检查清单
DM数据库高可用检查清单:
- 架构检查:高可用架构是否满足业务需求
- 配置检查:高可用配置是否正确
- 网络检查:网络配置是否合理,网络带宽是否满足需求
- 存储检查:存储配置是否合理,存储容量是否满足需求
- 同步检查:主备同步是否正常,同步延迟是否在合理范围内
- 切换检查:故障切换功能是否正常
- 负载检查:负载均衡是否合理,节点负载是否均衡
- 监控检查:监控体系是否完善,告警是否及时
- 备份检查:备份机制是否完善,恢复功能是否正常
- 演练检查:是否定期进行故障演练,演练结果是否正常
持续改进:高可用方案的优化是一个持续的过程,需要根据业务需求和系统运行情况,不断调整和优化高可用方案,确保系统的高可用性和稳定性。建立完善的监控体系,是保障高可用方案稳定运行的关键。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
