首页 理论教育分布式DBMS故障与解决

分布式DBMS故障与解决

【摘要】:在分布式数据库术语中,系统故障指的是节点故障,因为故障导致分布式数据库中的消息无法从其他节点到达该节点。现在区分分布式系统中的部分(局部)故障和全局故障。从DBMS的可靠性观点看,这种故障是存放在辅助存储器中数据库的部分或全部损坏或不能存取了。而通信线路故障是分布式DBMS中特有的。

数据库事务处理器主要处理四类故障:事务故障、节点(系统)故障、介质(如硬盘)故障和通信线路故障。

1.事务故障

事务容易出现故障,有很多原因。输入数据不正确以及出现死锁都是事务出现故障的原因。更进一步,有些并发控制算法不允许事务试图超前去存取被别的事务并发存取的数据,若出现这类情况,也可看成是故障。通常采用夭折事务这类故障,将数据库恢复到原来的一致状态。

事务发生故障的频率很难量度。

2.节点(系统)故障

关于系统故障,我们不打算追溯到硬件故障(如处理器、内存、电源等的故障)或者软件故障(如操作系统中的缺陷或者DBMS代码的缺陷[2])。这里的系统故障只考虑内存内容的丢失,以及内存缓冲中数据库的部分丢失。当然,我们认为辅助存储器中存储的数据是安全的、正确的。在分布式数据库术语中,系统故障指的是节点故障,因为故障导致分布式数据库中的消息无法从其他节点到达该节点。

现在区分分布式系统中的部分(局部)故障和全局故障。全局故障是指分布式系统中的所有节点同时发生故障;部分(局部)故障是指只是某些节点而不是全部节点出现故障。

3.介质故障

介质故障是指存放数据库的辅助存储设备出现故障。这种故障产生的原因可能是操作系统出错、磁盘磁头损坏或控制器出现问题等。从DBMS的可靠性观点看,这种故障是存放在辅助存储器中数据库的部分或全部损坏或不能存取了。(www.chuimin.cn)

将磁盘存储器双备份或维护一个后备副本是一种常用的技术,可以用来解决这种灾难性损坏问题。

4.通信线路故障

上述三类故障在集中式DBMS和分布式DBMS中都会出现。而通信线路故障是分布式DBMS中特有的。最常有的情况发生在消息方面,如消息次序搞乱、丢失消息、无法传递消息和线路故障等。在讨论分布式DBMS的可靠性时,我们希望计算机网络的硬件和软件能保证每个消息无差错地在两个通信节点间传输。

丢失传递的消息一般是通信线路故障或者目的节点故障。由于通信线路出现故障,传输中丢失消息,可能会把网络划分成两个或两个以上隔离的网络,称为网络分割。进行网络分割,每个分割中的节点可以继续运行。这种情况下,执行事务如何存取多个分割中存放的数据呢?维护数据库的互一致性就成了主要问题。

网络分割是分布式计算机系统特有的问题。在集中式系统中,系统状态可以特征化为all-or-nothing:系统在运行或者没有运行。这样,出现一个故障,整个系统就变得不可运行。显然,在分布式系统中不能成立。

如果不能传递消息,就假设这个网络已无能为力。该网络既不能缓存消息以便在通信恢复时发送到目的地,也无法通知发送者,这说明该消息没有成功传递。简言之,消息简单地丢失了。这么规定的原因是,我们对计算机网络最起码的期待是能够把想传递的消息按时准确无误地送到目的地。

这种情况下判别的依据就简单多了,即只需要一个定时器,超时未见答复就可以看作是出现了问题。