同其他的数据库系统相比,Teradata数据库提供了更多的数据保护措施。概括起来有以下几种:锁保护、fallback机制、Recovery Journals、Cliques、Transient Journal、ARC工具、Permanent Journal,当然还有最底层的RAID技术,不过RAID技术与Teradata本身无关,这里不做说明。
[@more@]一、Locks
锁可以防止多用户在同一时刻试图修改同一数据而影响数据的完整性。这种并发控制是通过锁定目标数据来实现的。锁是在请求操作的同时自动加载的,在请求完成后自动释放。另外,用户是可以改变锁的类型。有四种类型锁:
有四种类型的锁
Exclusive --- 防止其他任何类型的并行访问
--- 只应用于DATABASE和TABLE,而不应用于行
--- 限制最高
Write --- 防止其他的Write、Read、Exclusive锁
Read --- 防止其他的Write、Exclusive锁
Access --- 只防止其他的Exclusive
锁可以应用有三个数据库级别
Database --- 应用到数据库中所有的Table/View
Table/View --- 应用到Table/View中所有的行
Row hash – 应用到所有具有相同哈希值的行
锁的类型根据SQL命令自动施加
Select –- 施加Read锁
Update --- 施加Write锁
Create Table --- 施加Exclusive锁
DW中最常用的为Access锁
ACCESS锁优点:
在多用户环境中,容许用户快速访问表
对其他的访问产生最小的影响
对访问大量行数据非常有用
ACCESS锁缺点:
在维护表的同时执行ACCESS锁,可能产生不一致或不正确的数据。
二、fall back protection
cluster:作为一个独立的fallback活动单元一组AMPs。
Fallback保护是在同一Cluster中其他的AMP上保存一份相同的记录来达到保护数据的目的。如果一个AMP失效,系统就会访问Fallback的记录。Fallback机制在表的级别上提供了AMP的容错能力。在Fallback下,如果一个AMP失效,AMP上的数据仍然可用。用户可以继续使用Fallback的表,而不会丢失任何数据。
建表的时候或建表以后,都可以进行表的Fallback保护定义。如果定义了Fallback保护,它的保护是自动和透明的。
Fallback容许在不同的AMP上有两条相同的记录。如果其中的一个AMP失效,另一个AMP上的记录仍然可用。
这样的好处就是保护了用户的数据,但是也带来了额外的开销。包括两倍的磁盘空间、两倍的Insert、Update、Delete的I/O开销(Fallback选项对于Select操作不需要额外的I/O开销)。
在一个AMP不可用时,一张FALLBACK保护的表仍然可用
一个FALLBACK记录是主记录存在其他AMP上的副本
FALLBACK优点:
在AMP下线期间仍然可以正常访问数据
在磁盘阵列RAID保护的基础上增加了一层数据保护
自动存储
高可用性
FALLBACK开销
两倍的库表存储开销
两倍INSERT、UPDATE、DELETE的I/O开销
注意:如果在同一个CLUSTER中失效两个AMP则RDBMS会停掉
FALLBACK集群是AMP集群,它担当独立的FALLBACK单元。集群对表中行的分布没有影响。FALLBACK行只复制到同一集群中的其他AMP上。
集群的大小可以通过TERADATA控制工具设置,从2个AMP到16个AMP不等(在同一系统中集群的大小是可以不相等的)。例如将8个AMP系统被分成2个集群,每个集群有4个AMP。
如果一个AMP出错,存储在这个AMP上的主行和FALLBACK行是不可以访问的。但是这些行的副本在同一集群中的其他AMP上是可用的。
在一集群中失效一个AMP对其他的集群是没有影响的
如果在集群中失效一个AMP,仍然可以完全访问所有FALLBACK保护的表。
如果在同一集群中失效两个AMP,则整个数据库系统将停掉
当一个AMP失效后,同一集群中的其他AMP出了完成自己以前的工作,还要完成Down掉AMP的工作。集群越大,如果一个AMP Down掉后对其他AMP负载的增加影响就越小。但是集群越大,坏两个AMP的几率就更大,而使整个数据系统停掉的可能性就越大。
FALLBACK保护集群定义为独立的AMP容错单元
集群中的FALLBACK行必须在同一个集群中
集群中一个AMP失效仍然可以访问表中的数据
在同一集群中同时有两个AMP失效,数据库系统停掉
Fallback vs. Non-Fallback Tables
Fallback tables
Fallback保护表的一个主要好处就是它的可用性和可恢复性。在一个AMP失效的情况下,仍然是所有的数据可以被访问。任何一组中坏掉两个AMP,则系统停掉。在这种情况下,必须手动重起系统。由于Fallback行数据的存在,FALLBACK表很容易恢复。
Non-Fallback Tables
没有Fallback保护的表会受到一个AMP坏掉的影响。表还是可以被访问的,但是只能访问在线的AMP上的数据。单AMP的主索引访问是可能的,但是全表扫描是不可以的。没有受FALLBACK保护的表,如果遇到问题,只能从其他的存储介质上重新导入。
Fallback and Disk Arrays
Fallback保护表的应用经常涉及到磁盘阵列保护的问题。通过镜像机制,RAID1为每一个数据行提供了一个备份。Fallback在RAID1之上增加了一层保护,但是某些实施案例这些开销是不可以承受的。
RAID1加Fallback保护提供了最高级别的数据保护。甚至在整个Rank失效的情况下,系统都是可用的。
RAID5加Fallback保护被普遍应用,可以对失去两个磁盘以下的情况进行保护。
因为系统每天要24个小时,每星期要7天地不停运行,推荐Fallback以减少系统的Down机时间。
三、Recovery Journals for Down AMPs(失效AMP的恢复日志)
任何AMP Down掉后,恢复日志会自动启动,来记录AMP在Down掉期间的所有行变化,对失效AMP的insert,update,delete等操作都被应用于同一集群中的Fallback备份。拥有Fallback备份的AMP会将变化的ROW_ID记录到恢复日志中。
这种操作一直进行到Down掉的AMP重新上线为止。做为重新启动的一部分,系统将读取日志,并将变化应用到重起的AMP。在恢复完成后,日志将被丢弃。
恢复日志是:
当AMP DOWN掉后自动启动
由同一FALLBACK组中的其他AMP维护
对系统用户来说是透明
AMP下线期间:
日志是活动的
表可以正常进行UPDATE操作
日志记录DOWN掉AMP变化的行的ROW_ID
AMP重起上线
重新存储行的变化到当前的状态
日志恢复完成后被删除
四、Cliques
共享一个磁盘阵列两个或更多的TPA (Trusted Parallel Application)节点称为一个clique.
Cliques只对UNIX系统适用。一个CLIQUE可以包含2到8个节点。通常建议每个CLIQUE 4个节点。
AMP虚拟进程可以运行在同一CLIQUE中的任何一个节点上,可以完全访问到磁盘阵列的所有空间。
在同一个CLIQUE中,多节点之间都可以通信。
在MPP系统中的一个CLIQUE中如果坏掉一个节点或磁盘,就算在没有FALLBACK保护情况下,MPP系统仍然可以运行。如果在同一CLIQUE中的不同节点上丢失了AMP虚拟进程,则系统要重起。当节点恢复后,将会把AMP转移给原来的节点。例如7x24系统,FALLBACK选项建议最小化系统磁盘的DOWN机时间。
五、Transient Journal /临时日志
临时日志容许事务可以成功回滚(TXN)。事务在AMP没有收到结束请求是不能提交给数据的,无论是隐式还是显式。事务有可能失败,如果这样,涉及到的数据表就必须恢复到事件前的状态。
临时日志维护一张事务影响的数据行的副本。如果事务失败,事务前的数据副本就会应用到受影响的表上,然后从日志中删除,回滚操作完成。如果事务提交成功,则将在事务提交前的数据副本从日志中删除。
1)由事务前的视图组成
2)在事务TXN失败后自动回滚到事务前的状态
3)是自动和透明的
4)如果TXN失败则前试图应用到表
5)如果TXN完成则丢弃日志
六、备份和恢复数据
ARC工具
ARC工具可以备份和重新加载数据库对象,这样就可以恢复被损坏和丢失的数据。成功从其他介质重新存储对象有几方面:、
在磁盘错误后,恢复没有FALLBACK的表
恢复由于批处理产生不正常状态而被损坏的表
恢复那些被用户不慎删除的TABLE、VIEW和MACRO
各种用户损坏或删除的数据对象
ASF2工具
ASF2以X-WINDOWS的形式提供了编写、执行ARC命令脚本的前端工具。它是为运行在UNIX节点或工作区设计的。
七、Permanent Journal(永久日志)
永久日志的目的是提供一种可以将整个数据库恢复到一个特定的时间点的选择。可以恢复各种不可预料的软硬件错误。永久日志也可以减少全表备份而产生高昂的时间和资源开销。
永久日志是可选的,而且永久日志是由用户自己因特殊需要来创建的。永久日志包括两种前像日志(回滚)和后像日志(前滚)。此外,用户必须自己手工设定是单像还是双像。
多张表或多个数据库可以共享同一永久日志。日志并发获取标准表的维护和查询的镜像。额外的磁盘空间需要计算以保证有充足的磁盘空间可以使用。
日志需要定期放到其他的介质上。这样就减少了全表备份的需要,只需备份变化就可以了。
永久日志:
永久日志可以使数据库恢复到一个特定的时间点,是可选项,用户自定义的,系统维护的日志。
是为了针对意想不到的软硬件灾难而备份数据
可以指定
---一张或多张表
---一个或多个数据库
可以建立前像日志使数据库回滚
可以建立后像日志是数据库前滚
表维护期间可以备份表改变的镜像
减少全表备份的需要
提供一种无Fallback表的恢复方式
需要额外的磁盘空间来存储变化的镜像
需要用户干预备份和恢复行为,应该被定期释放来节省磁盘空间
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16723161/viewspace-1026293/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16723161/viewspace-1026293/