创新谈-Data Guard 在制造业生产数据库中的应用演变-王颐

Data Guard 在制造业生产数据库中的应用演变
 
Data guard是ORACLE 推出的一种高可用性(HIGH AVAILABLE)的数据库方案,在8i之前称之为standby database,从9i开始,正式更名为Data guard,它是在主节点与备用节点间通过日志同步来保证数据的同步,可以实现快速切换与灾难性恢复。Data guard只是在软件上对数据库进行设置,并不需要额外购买任何组件能在对主数据库影响很小的情况下,实现主备数据库的同步,而主备机的数据差异只在在线日志部分,所以被不少企业作为了数据容灾方案。

     ORACLE 从7.3推出standby database,7.3.x-8.0.x 需要手工拷贝所有归档日志并手工同步,从ORACLE815 开始,开始支持多节点复制,并实现了自动同步,但是这种同步是数据异步模式的,可能引起数据丢失。从ORACLE9i开始,备用服务器已经换了一种新的称呼,叫数据保护(DATA GUARD),在这种模式中,开始支持三种不同的数据保护模式,并开始采用LGWR 对数据的传送而不是以往的ARCH,而且增加了一个新的后台进程叫DMON 监控数据的同步,支持多达9个节点的同时复制。从920开始,还开始支持逻辑备用服务器。
本文通过笔者对公司苏州地区制造业客户 Data Guard 的使用发展情况来阐述 oracle 这一新技术在制造业数据库应用中的推广普及以及从单纯的 max performance physical data guard 的数据库容灾保护到逻辑 Data Guard 等新特性的增值使用。
说到这边我们不得不简单的描述下制造业系统数据库的使用特性,制造业生产用数据库前端应用一般以各类 ERP,MES shop floor 系统为多,目前我们维护客户中以 MES shop floor 为多,这类生产类的系统一般是 24x7 不间断运行,应用以 OLTP 为主且会定期月结时或实时的 run 大量的 report, 在高可用性方面会要求低 downtime 最好不能超过半小时,资料丢失一般最多容忍也就 15 分钟。
纵观前几年苏州地区制造业的 Oracle 数据库系统几乎都是单机运行的数据库,最多加上 Cluster 的双机热备,但是双机热备其实不能真正意思上保障到数据库系统的安全,该 HA 只是保障了 server 故障及维护时的数据库的高可用性,对 oracle database 来说没有任何保障。
                
  这就是利用os cluster或 某些第三方的软件也实现了集群功能,如 ClusterWizard 双机集群容错软件、 AFS/2000 高可用备援系统等。这些系统一般通过 RS232 联机或内部网络联机做心跳线,检测主机状态,一旦发现主机宕机,则接管主机的 IP ,并且重新启动应用程序,达到减少宕机时间的目的。
后来随着 oracle HA 技术的发展, standby 技术的完善以及 oracle database 委外服务的盛行,专业顾问服务公司专业技术及理念的注入,让制造业在 database 容灾方面有了很大的改善,硬件成本的降低各家公司开始在 HA 的机制上局部加入 physical data guard 的容灾功能,此阶段的制造业生产系统的数据库均为 cluster + physical Data guard 架构这样既保障了主机维护高可用性又保障了 DB 损毁对生产造成的影响。另 standby db 还可以代替主库备份以分担备份所消耗的性能。
      
Data Guard 运行要求 :
1.       主机必需运行在归档模式下。
2.       主备数据库的版本必须一样,操作系统必须一样,版本可不同 , 主备机可使用不同的目录结构。
3.       主备机必须都要运行在 32 位或 64 位下。
4.       主库避免 nologing 的方式,这样会导致备机无法与主机同步。
Physical standby database
物理备用机在物理上和主据库的结构完全一样。也就是说,物理备机除了 control 文件和主机不一样以及在线日志是可选的以外,其他都和主数据库一样。物理备机是靠应用主机所产生的归档文件来实现主备的一致。归档日志从主数据库通过网络传到备库上,并在备机上应用传过来的归档文件,以实现两台机的同步。 物理备用机有两种模式: Managed recovery mode 归档文件从主数据传到备用数据库, log apply services 把这些日志应用到备用数据库中。 Read only mode 这种模式可供用户只读的操作数据库,归档日志仍然会从主数据库传到备用数据库,但 Log apply services 不可以把这些日志应用到备用数据库中。
Logical standby database
    除了 physical data guard,9i R2 又推出 logical data guard, 逻辑备用机在逻辑上和主库一样,也就是说,两台服务器的表、视图等对像需要保持一致,对物理结构上则不需要保持一致。逻辑备用机是靠把主机传过来的归档日志通过 logminer 解析成 SQL 语句,并应用到备用机上来进行更新的,与物理备用机不同的是它可以在更新的同时对数据库进行查询,这个可以进行近实时 ( 差异一个 current redo) 数据库查询的功能对制造业生产系统的 run report 应用与其他应用分开以减轻主库的负担有很大帮助。就目前来看各企业数据库的性能瓶颈均在月结或实时的 report 查询未与生产应用分开导致阶段性的 performance 较差, logical standby 的这种近实时的 run report 的功能对性能改善有很大的帮助。
但是很大程度上,而 logical 的方式则是需要把所有的归档转换成 SQL 语句再在 logical standby database 上执行它。这会占用一定的系统资源,如 CPU memory,I/O 等,另外一点就是 9i logical standby 相对来说 bug 限制等较多,还有就是不是很稳定,所以很少有企业在生产系统中使用,但是 9i R2 后几个 patch 针对 logical DG 修正了不少的 bug, 加上生产系统相对简单的 , 较少特殊运用的特性,故 logical 的近实时查询功还是有很好的可以用性,再加上专业的规划,制度化的管理相对来说这种技术还是值得推广使用的。
值得高兴的是在我们的精心准备及规划下苏州地区某大型制造业终于成为第一个吃螃蟹的,在正式的生产系统中运用了 logical standby, 正是这种近实时查询功能弥补了应用上的不足,解决了原系统 I/O 严重的问题,所有的 report 均至 logical standby 端实时查询,在功能未受影响的同时,因为不同应用在 2 DB 内完成所以 I/O 大大降低,性能得到很大的改善。加上 logical standby 设计合理,管理上的规范目前该系统上线以来运行稳定。此项目的成功对苏州地区制造业对此项新技术的广泛运用有很大推动作用。
             
10g Data Guard
无论是 8i standby 还是 9i Data Guard, Physical Standby Database 只可以处于两种状态 :mount read-only, 在处于 mount 状态时 , 可以手动或自动恢复 archived logs, 但是处于 read-only 模式时 , 不能恢复 archived logs. logical standby database 也必须是从已收到的 archived logs 中解析出 SQL 语句恢复 , 也就是说 , 即使无数据丢失 , standby 数据库上 , 用户获得的数据时落后实纪生产数据库的旧的资料 . 是近实时的数据 ( 差一个 current redo).10g data guard, logical standby database 也支持了 standby redo logs 的物理结构 , 允许一个实时恢复的进程与 MPR 或者 LSP 进程一起工作 ,, 直接将 standby redo logs 中刚刚收到的 primary 数据库的 redo 日志内容恢复到物理或逻辑 standby 数据库上面 , 使得用户在 standby 数据库运行报告的信息是 primary database 的实时信息 . 另外新增的实时恢复功能也可使数据库的 switchover 或者 failover 过程的时间大大缩短 , 系统的高可用性能大大的提高 .Flashback Database standby 数据库就可以恢复到一个指定的时间点 , 避免因为人为的错误带来的数据丢失 , 加上 10G Data Guard 图形管理功能进一步完善 , 管理起来会更容易 ,EM 管理 , 可使 Switchover/failover 功能 , 单击鼠标就可以完成 .
最后总结下 data guard 的优点
1.       支持所有的 DDL DML 语句
2.       不管是什么数据类型、表的类型,任何 DDL DML 语句都可以应用在物理备用数据库上。
3.       可以减轻主数据库的备份压力
4.       standby 的中的数据文件可以用来快速恢复主数据库的数据文件
5.       逻辑 standby 可以减轻主数据库的工作压力
6.       物理 standby 也可以用只读来打开,可以分担一部分非实时的查询的工作
7.       逻辑 standby 数据是近实时更新的,而且也可以让用户进行查询操作
8.       逻辑 standby 可以在 standby 中建立索引和物化视图以方便用户的查询
     人们的观念中 , 容灾所谓的火灾 , 地震之类的灾难是乎是很遥远的 . 911 , 人们开始对主要的系统制定紧急的计划 . 自动化的 data guard 开始被广泛的使用起来 . 加上 data guard 功能的不断改进使得这项实用的技术能个逐渐被接受且广泛的应用起来,从制造业集中的苏州各大企业的 data guard 的应用演变来说这种经济实用的技术正越来越得到制造业的青睐。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值