способ и система восстановления целостности базы данных в системе секционированных баз данных без разделения ресурсов с использованием виртуальных дисков коллективного использования и машиночитаемый носитель для них

Классы МПК:G06F11/14 обнаружение и исправление ошибок в данных с помощью избыточности операций,например с использованием различных последовательностей операций, приводящих к тому же результату
Автор(ы):, , ,
Патентообладатель(и):ИНТЕРНЭШНЛ БИЗНЕС МАШИНЗ КОРПОРЕЙШН (US)
Приоритеты:
подача заявки:
1998-05-27
публикация патента:

Изобретение относится к компьютерным системам доступа к базам данных. Его использование позволяет получить технический результат в виде снижения непроизводственных затрат на обработку при восстановлении целостности базы данных, нарушенной в результате сбоя в системе обеспечения доступа к базам данных, имеющей множество узлов доступа к базе данных. Технический результат достигается благодаря тому, что на первом узле доступа к базе данных запускают первый экземпляр базы данных, при этом первый и второй узлы доступа имеют соединенное с ними обоими запоминающее устройство для хранения первых данных для первого экземпляра базы данных; осуществляют обнаружение сбоя в первом узле доступа; предоставляют доступ к первым данным, хранящимся в одном запоминающем устройстве, третьему узлу доступа через второй узел доступа и запускают первый экземпляр базы данных на третьем узле доступа с предоставлением доступа к первым данным через второй узел, восстанавливая тем самым целостность базы данных, нарушенную в результате сбоя в первом узле доступа. 4 с. и 27 з.п. ф-лы, 6 ил.
Рисунок 1, Рисунок 2, Рисунок 3, Рисунок 4, Рисунок 5, Рисунок 6

Формула изобретения

1. Способ восстановления целостности базы данных, нарушенной в результате возникшего в первом узле доступа к базе данных сбоя в системе обеспечения доступа к базам данных, имеющей множество таких узлов доступа к базе данных, заключающийся в том, что на первом узле доступа к базе данных запускают первый экземпляр базы данных, при этом первый и второй узлы доступа к базе данных имеют по крайней мере одно первое соединенное с ними обоими запоминающее устройство для хранения первых данных для первого экземпляра базы данных, осуществляют обнаружение сбоя в первом узле доступа к базе данных, третьему узлу доступа к базе данных предоставляют доступ через второй узел к первым данным, хранящимся по крайней мере в одном запоминающем устройстве, и запускают первый экземпляр базы данных на третьем узле с предоставлением доступа через второй узел к первым данным, хранящимся по крайней мере в одном первом запоминающем устройстве, восстанавливая тем самым целостность базы данных, нарушенную в результате сбоя в первом узле.

2. Способ по п.1, в котором также осуществляют копирование первых данных по крайней мере с одного первого запоминающего устройства по крайней мере в одно второе запоминающее устройство, соединенное с третьим узлом доступа к базе данных, при этом запуск первого экземпляра базы данных на третьем узле включает зеркальное отображение последующих обновлений первого экземпляра базы данных на первые данные, хранящиеся по крайней мере в одном первом запоминающем устройстве, и на скопированные первые данные, хранящиеся по крайней мере в одном втором запоминающем устройстве.

3. Способ по п.1 или 2, в котором после перезапуска первого узла доступа к базе данных этот первый узел делают в системе обеспечения доступа к базе данных первым запасным узлом доступа к базе данных.

4. Способ по любому из пп.1-3, в котором по крайней мере одно первое запоминающее устройство образовано двумя запоминающими устройствами, каждое из которых двухразветвленным соединением связано с первым и вторым узлами доступа к базе данных.

5. Способ по любому из пп.1-3, в котором по крайней мере одно первое запоминающее устройство образовано несколькими запоминающими устройствами, каждое из которых в системе обеспечения доступа к базе данных многоразветвленным соединением связано с первым, вторым и другими узлами доступа к базе данных.

6. Способ по любому из предыдущих пунктов, в котором первые данные представляют собой раздел секционированной базы данных без разделения ресурсов, являющейся резидентной в системе обеспечения доступа к базе данных.

7. Способ по любому из предыдущих пунктов, в котором для предоставления третьему узлу доступа к первым данным используют сервисную программу виртуального диска коллективного использования, имеющую серверную часть на втором узле и клиентскую часть на третьем узле.

8. Способ по любому из предыдущих пунктов, в котором третий узел делают в системе обеспечения доступа к базе данных запасным узлом доступа к базе данных.

9. Способ по любому из предыдущих пунктов, в котором перед обнаружением сбоя в первом узле запускают второй экземпляр базы данных на втором узле, при этом вторые данные для второго экземпляра базы данных хранятся по крайней мере в одном первом запоминающем устройстве, а после обнаружения сбоя в первом узле предоставляют доступ четвертому узлу ко вторым данным, хранящимся по крайней мере в одном первом запоминающем устройстве, через второй узел и запускают второй экземпляр базы данных на четвертом узле с предоставлением доступа ко вторым данным, хранящимся по крайней мере в одном первом запоминающем устройстве, через второй узел.

10. Способ по п.9, в котором первые данные и вторые данные копируют по крайней мере с одного первого запоминающего устройства по крайней мере в одно второе запоминающее устройство, соединенное как с третьим, так и с четвертым узлами, при этом запуск первого экземпляра базы данных на третьем узле включает зеркальное отображение последующих обновлений первого экземпляра базы данных на первые данные, хранящиеся по крайней мере в одном первом запоминающем устройстве, и на скопированные первые данные, хранящиеся по крайней мере в одном втором запоминающем устройстве, а запуск второго экземпляра базы данных на четвертом узле включает зеркальное отображение последующих обновлений второго экземпляра базы данных на вторые данные, хранящиеся по крайней мере в одном первом запоминающем устройстве, и на скопированные вторые данные, хранящиеся по крайней мере в одном втором запоминающем устройстве.

11. Способ по п. 9 или 10, в котором после перезапуска первого узла доступа к базе данных этот первый узел делают в системе обеспечения доступа к базе данных первым запасным узлом доступа к базе данных, а второй узел делают в системе обеспечения доступа к базе данных вторым запасным узлом доступа к базе данных.

12. Способ по любому из пп. 9-11, в котором первые и вторые данные представляют собой соответствующие разделы секционированной базы данных без разделения ресурсов, являющейся резидентной в системе обеспечения доступа к базе данных.

13. Способ по любому из пп.9-12, в котором для предоставления четвертому узлу доступа ко вторым данным используют сервисную программу виртуального диска коллективного использования, имеющую серверную часть на втором узле и первую клиентскую часть на четвертом узле.

14. Способ по п.13, в котором для предоставления третьему узлу доступа к первым данным используют сервисную программу виртуального диска коллективного использования, имеющую серверную часть на втором узле и вторую клиентскую часть на третьем узле.

15. Способ по п.10, в котором третий узел и четвертый узел делают в системе обеспечения доступа к базе данных запасными узлами доступа к базе данных.

16. Способ восстановления целостности базы данных, нарушенной в результате возникшего в первом узле доступа к базе данных сбоя в системе обеспечения доступа к базам данных, имеющей множество таких узлов доступа к базе данных, заключающийся в том, что на первом узле доступа к базе данных запускают первый экземпляр базы данных, при этом первый и второй узлы доступа к базе данных имеют по крайней мере одно соединенное с ними обоими запоминающее устройство для хранения первых данных для первого экземпляра базы данных, осуществляют обнаружение сбоя в первом узле доступа к базе данных, осуществляют восстановление первого экземпляра базы данных на втором узле с предоставлением доступа к первым данным, хранящимся по крайней мере в одном запоминающем устройстве, через второй узел, во время этого восстановления первого экземпляра базы данных предпринимают попытку перезапуска первого узла и, если эта попытка приводит к успешному перезапуску первого узла, затем перезапускают первый экземпляр базы данных на первом узле с предоставлением доступа к первым данным, хранящимся по крайней мере в одном запоминающем устройстве, через первый узел либо, если эта попытка не приводит к успешному перезапуску первого узла, затем перезапускают первый экземпляр базы данных на втором узле с предоставлением доступа к первым данным, хранящимся по крайней мере в одном запоминающем устройстве, через второй узел, восстанавливая тем самым целостность базы данных, нарушенную в результате сбоя в первом узле.

17. Способ по п.16, в котором по крайней мере одно запоминающее устройство образовано двумя запоминающими устройствами, каждое из которых двухразветвленным соединением связано с первым и вторым узлами доступа к базе данных.

18. Способ по п.16, в котором по крайней мере одно запоминающее устройство образовано несколькими запоминающими устройствами, каждое из которых в системе обеспечения доступа к базе данных многоразветвленным соединением связано с первым, вторым и другими узлами доступа к базе данных.

19. Способ по любому из пп.16-18, в котором первые данные представляют собой раздел секционированной базы данных без разделения ресурсов, являющейся резидентной в системе обеспечения доступа к базе данных.

20. Способ по п.16, в котором осуществляют восстановление первого экземпляра базы данных на втором узле с предоставлением доступа к первым данным, хранящимся по крайней мере в одном запоминающем устройстве, через второй узел, во время этого восстановления первого экземпляра базы данных предпринимают попытку перезапуска первого узла и, если эта попытка приводит к успешному перезапуску первого узла, затем перезапускают первый экземпляр базы данных на первом узле с предоставлением доступа к первым данным, хранящимся по крайней мере в одном запоминающем устройстве, через первый узел либо, если эта попытка не приводит к успешному перезапуску первого узла, затем предоставляют третьему узлу доступ к первым данным, хранящимся по крайней мере в одном запоминающем устройстве, через второй узел и запускают первый экземпляр базы данных на третьем узле с предоставлением доступа к первым данным, хранящимся по крайней мере в одном запоминающем устройстве, через второй узел.

21. Система восстановления целостности базы данных, нарушенной в результате возникшего в первом узле доступа к базе данных сбоя в системе обеспечения доступа к базам данных, имеющей множество таких узлов доступа к базе данных, включающая средства для запуска первого экземпляра базы данных на первом узле доступа к базе данных, при этом первый и второй узлы доступа к базе данных имеют по крайней мере одно первое соединенное с ними обоими запоминающее устройство для хранения первых данных для первого экземпляра базы данных, средства обнаружения сбоя в первом узле доступа к базе данных, средства предоставления третьему узлу доступа через второй узел к первым данным, хранящимся по крайней мере в одном запоминающем устройстве, и средства для запуска первого экземпляра базы данных на третьем узле, включая средства предоставления доступа через второй узел к первым данным, хранящимся по крайней мере в одном первом запоминающем устройстве, что обеспечивает тем самым восстановление целостности базы данных, нарушенной в результате сбоя в первом узле.

22. Система по п.21, в которой по крайней мере одно первое запоминающее устройство образовано двумя запоминающими устройствами, каждое из которых двухразветвленным соединением связано с первым и вторым узлами доступа к базе данных.

23. Система по п.21, в которой по крайней мере одно первое запоминающее устройство образовано несколькими запоминающими устройствами, каждое из которых в системе обеспечения доступа к базе данных многоразветвленным соединением связано с первым, вторым и другими узлами доступа к базе данных.

24. Система по любому из пп.21-23, в которой первые данные представляют собой раздел секционированной базы данных без разделения ресурсов, являющейся резидентной в системе обеспечения доступа к базе данных.

25. Система по любому из пп.21-24, в которой средства предоставления третьему узлу доступа к первым данным включают сервисную программу виртуального диска коллективного использования, имеющую серверную часть на втором узле и клиентскую часть на третьем узле.

26. Система по любому из пп.21-25, в которой также имеются средства для запуска перед обнаружением сбоя в первом узле второго экземпляра базы данных на втором узле, при этом вторые данные для второго экземпляра базы данных хранятся по крайней мере в одном первом запоминающем устройстве, средства предоставления четвертому узлу после обнаружения сбоя в первом узле доступа ко вторым данным, хранящимся по крайней мере в одном первом запоминающем устройстве, через второй узел и средства запуска второго экземпляра базы данных на четвертом узле, включая средства предоставления доступа ко вторым данным, хранящимся по крайней мере в одном первом запоминающем устройстве, через второй узел.

27. Машиночитаемый носитель, содержащий представленные в машиночитаемом коде программные средства для восстановления целостности базы данных, нарушенной в результате возникшего в первом узле доступа к базе данных сбоя в системе обеспечения доступа к базам данных, имеющей множество таких узлов доступа к базе данных, при этом указанные программные средства в машиночитаемом носителе включают представленные в машиночитаемом коде программные средства для запуска на первом узле доступа к базе данных первого экземпляра базы данных, при этом первый и второй узлы доступа к базе данных имеют по крайней мере одно первое соединенное с ними обоими запоминающее устройство для хранения первых данных для первого экземпляра базы данных, представленные в машиночитаемом коде программные средства для обнаружения сбоя в первом узле доступа к базе данных, представленные в машиночитаемом коде программные средства для предоставления третьему узлу доступа через второй узел к первым данным, хранящимся по крайней мере в одном запоминающем устройстве, и представленные в машиночитаемом коде программные средства запуска первого экземпляра базы данных на третьем узле, включая программные средства для предоставления доступа через второй узел к первым данным, хранящимся по крайней мере в одном первом запоминающем устройстве, с обеспечением тем самым восстановления целостности базы данных, нарушенной в результате сбоя в первом узле.

28. Машиночитаемый носитель по п.27, в котором первые данные представляют собой раздел секционированной базы данных без разделения ресурсов, являющейся резидентной в системе обеспечения доступа к базе данных.

29. Машиночитаемый носитель по п.27 или 28, в котором программные средства предоставления третьему узлу доступа к первым данным включают сервисную программу виртуального диска коллективного использования, имеющую серверную часть на втором узле и клиентскую часть на третьем узле.

30. Машиночитаемый носитель по любому из пп.27-29, в котором также имеются представленные в машиночитаемом коде программные средства для запуска перед обнаружением сбоя в первом узле второго экземпляра базы данных на втором узле, при этом вторые данные для второго экземпляра базы данных хранятся по крайней мере в одном первом запоминающем устройстве, представленные в машиночитаемом коде программные средства предоставления четвертому узлу после обнаружения сбоя в первом узле доступа ко вторым данным, хранящимся по крайней мере в одном первом запоминающем устройстве, через второй узел и представленные в машиночитаемом коде программные средства для запуска второго экземпляра базы данных на четвертом узле, включая программные средства предоставления доступа ко вторым данным, хранящимся по крайней мере в одном первом запоминающем устройстве, через второй узел.

31. Машиночитаемый носитель по п.27, содержащий представленные в машиночитаемом коде программные средства для восстановления в системе обеспечения доступа к секционированной базе данных без разделения ресурсов целостности базы данных, нарушенной в результате сбоя, возникшего в первом узле из пары таких узлов, с каждым из которых двухразветвленным соединением связано по крайней мере одно запоминающее устройство, при этом первый узел имеет первый экземпляр базы данных, запускаемый на нем, и осуществляет до появления на нем сбоя доступ к первому разделу данных, хранящемуся на указанном по меньшей мере одном запоминающем устройстве, при этом указанные программные средства в промышленном изделии включают представленные в машиночитаемом коде программные средства предоставления третьему узлу доступа через второй узел из пары таких узлов к первому разделу данных, хранящемуся по крайней мере в одном запоминающем устройстве, и представленные в машиночитаемом коде программные средства для запуска на третьем узле первого заменяющего экземпляра базы данных вместо первого экземпляра базы данных, который был запущен на первом узле до возникновения в нем сбоя, включая программные средства предоставления доступа через второй узел к первому разделу данных, хранящемуся по крайней мере в одном запоминающем устройстве, что тем самым обеспечивает восстановление целостности базы данных, нарушенной в результате сбоя в первом узле.

Описание изобретения к патенту

Изобретение относится к компьютерным системам доступа к базам данных. В частности, изобретение относится к способу и системе восстановления целостности базы данных, нарушенной в результате возникшего в узле доступа к базе данных сбоя в системе доступа к базам данных без разделения ресурсов, а также к соответствующему для них машиночитаемому носителю.

В современных компьютерных системах часто используется множество отдельных процессоров или узлов, связанных между собой через общую коммуникационную сеть. В таких системах часто хранится и обрабатывается огромное количество информации. Помимо оборудования для обработки данных в каждом узле обычно имеются цифровые запоминающие устройства (например, магнитные диски) для хранения такой информации. При этом информация часто представляется (упорядочивается) в виде базы данных, которая занимает доступное для ее хранения пространство памяти в различных узлах системы.

Выбор того или иного подхода к распределению необходимой для хранения базы данных памяти и к обеспечению доступа к базе данных в компьютерной системе со множеством узлов зависит от требований, предъявляемых к конкретной системе. Однако некоторые требования являются общими для большинства систем. Все данные в базе данных должны быть доступны для каждого узла в системе. Для эффективной работы системы непроизводительные затраты, связанные с сохранением и обработкой данных, необходимо поддерживать на минимальном уровне, а стратегия хранения/доступа к информации в общем случае должна защищать систему от сбоев и неполадок, возникающих в каждом отдельном узле.

В современных системах используются два основных подхода к распределению памяти для хранения или секционирования баз данных. Первый из них, предусматривающий совместное использование данных, предполагает обеспечение физического доступа ко всем дискам из любого узла системы. Однако для сохранения когерентности, или связности, базы данных в таких системах необходимо использовать списки глобальных блокировок или изменений, предотвращающих возможность изменения части базы данных двумя узлами путем внесения в эту часть противоречивых данных.

Второй подход к хранению данных предполагает физическое разбиение или секционирование данных по отдельным разделам и распределение полученных разделов между узлами, которые становятся ответственными за этот раздел базы данных и которые называют также узлами-владельцами раздела базы данных, и такие узлы становятся в системе также ответственными за осуществление тех транзакций, в которые вовлекаются их соответствующие собственные разделы базы данных.

Такой метод, "не предполагающий разделения ресурсов", требует дополнительных, связанных с обменом данными непроизводительных затрат времени, необходимых для того, чтобы обеспечить доступ ко всем данным во всех узлах системы. Запрашивающий узел должен выдавать запросы на узел, который является владельцем запрошенного раздела базы данных. Последний либо (I) обрабатывает поступивший запрос к базе данных, относящийся к хранящемуся в нем разделу этой базы данных (т.е. осуществляет функциональную пересылку), либо (II) сам передает данные на пославший запрос узел (т.е. осуществляет пересылку по схеме ввод-вывод).

Проблема, возникающая при таком подходе, не предполагающем разделения ресурсов, связана с тем, что возможный сбой в одном из узлов системы приводит к неспособности этого узла принимать или обрабатывать запросы к относящемуся к нему разделу базы данных.

В настоящее время известны два основных метода восстановления целостности базы данных, нарушенной в результате сбоя, возникшего в узле системы базы данных без разделения ресурсов, а именно: (I) асинхронное тиражирование (или дублирование), когда обновления данных передаются асинхронно в тиражируемую копию или реплику базы данных (см., например, работу A. Bhide, A. Goyal, H. Hsiao и A. Jhingran "An Efficient Scheme for Providing High Availability", SIGMOD "92, стр. 236-245, включенную в настоящее описание в качестве ссылки), и (II) восстановление со спаренного узла (так называемого узла-"партнера"), с которым диски поврежденного узла связаны двухразветвленной связью. Использование таких двухразветвленных связей для соединения дисков узла, в работе которого произошел сбой, со спаренными узлами обработки информации известно в данной области техники и предусматривает физическое соединение одного диска с несколькими узлами обработки. В первом варианте двухразветвленного соединения только один узел является активным и получает доступ к диску в любой момент времени. В другом варианте двухразветвленного соединения обоим узлам разрешен одновременный доступ к диску, но при этом во избежание нарушения целостности базы данных используются соответствующие протоколы по предотвращению/разрешению конфликтных ситуаций.

Основное преимущество метода (I) заключается в возможности восстановить целостность базы данных, нарушенную в результате сбоя либо диска, либо узла, однако основной недостаток этого метода заключается в необходимости зеркально дублировать данные, что предполагает удвоение емкости дисковой памяти, и в увеличении непроизводительных затрат, которые в процессе нормальной, без сбоев, работы системы обусловлены выполнением операций, необходимых для передачи данных в тиражируемую копию. Основное преимущество метода (II) состоит в отсутствии дополнительных непроизводительных затрат в процессе нормальной работы, однако главный недостаток этого метода заключается в том, что после возникновения сбоя нагрузка на спаренный узел возрастает в два раза, в результате чего производительность всего кластера может снизиться вдвое, поскольку "узким местом" для всего кластера является поиск запросов или вызов функций по обработке транзакций в узле, спаренным с давшим сбой узлом.

Таким образом, в данной области техники существует необходимость в разработке такого способа восстановления целостности базы данных, нарушенной в результате возникшего в узле обработки информации сбоя в системе обеспечения доступа к базам данных без разделения ресурсов, который не требовал бы значительных непроизводительных затрат на обработку в процессе нормальной работы системы или использования дополнительного объема памяти для полного тиражирования данных.

В настоящем изобретении предлагается способ восстановления целостности базы данных, нарушенной в результате возникшего в узле доступа к базе данных сбоя, в частности способ и система восстановления целостности базы данных, нарушенной в результате возникшего в первом узле доступа к базе данных сбоя, в системе обеспечения доступа к базам данных, имеющей множество таких узлов доступа к базе данных. При этом на первом узле доступа к базе данных до возникновения на нем сбоя запущен первый экземпляр базы данных. Первый и второй узлы доступа к базе данных имеют первое соединенное с ними обоими запоминающее устройство для хранения первых данных для первого экземпляра базы данных. При обнаружении сбоя в первом узле третьему узлу предоставляется доступ через второй узел к первым данным. Затем первый экземпляр базы данных запускается на третьем узле с предоставлением ему доступа через второй узел к первым данным, хранящимся в первом запоминающем устройстве. Тем самым обеспечивается восстановление целостности базы данных, нарушенной в результате сбоя в первом узле.

Согласно одному из предпочтительных вариантов осуществления изобретения осуществляется копирование первых данных с первого запоминающего устройства во второе запоминающее устройство, соединенное с третьим узлом доступа к базе данных. Когда первый экземпляр базы данных запущен и выполняется на третьем узле, последующие обновления первого экземпляра базы данных могут зеркально отображаться (дублироваться) на первое запоминающее устройство и на скопированные данные, хранящиеся во втором запоминающем устройстве. После перезапуска первого узла доступа к базе данных его можно сделать в системе обеспечения доступа к базе данных запасным узлом, который будет использоваться для доступа к базе данных при возможном последующем возникновении сбоев в других узлах.

Первое запоминающее устройство образовано двумя запоминающими устройствами, каждое из которых двухразветвленным соединением связано с первым и вторым узлами доступа к базе данных.

Для обеспечения доступа к первым данным через второй узел предпочтительно использовать сервисную программу виртуального диска коллективного использования, имеющую серверную часть на втором узле и клиентскую часть на третьем узле.

Поскольку на втором узле также может быть запущен и выполняться его собственный второй экземпляр базы данных, доступ ко вторым данным, относящимся ко второму экземпляру базы данных, можно предоставить четвертому узлу через второй узел. В этом случае второй экземпляр базы данных может быть запущен на четвертом узле с предоставлением доступа ко вторым данным, хранящимся в первом запоминающем устройстве, через второй узел. Второй узел после этого должен будет только поддерживать хранящуюся на нем серверную часть, а вся нагрузка, связанная с обработкой соответствующего экземпляра базы данных, может быть полностью переложена со второго узла на третий и четвертый узлы, на которых запущены соответствующие клиентские части сервисной программы виртуального диска коллективного использования.

В изобретении рассмотрены также дополнительные варианты и модификации этого способа, включая восстановление первого экземпляра базы данных на втором узле с одновременной попыткой перезапуска первого узла. Если эта попытка оказывается успешной, то первый экземпляр базы данных вновь запускается на первом узле. В противном же случае этот экземпляр базы данных запускается на втором узле или, как указано выше, на запасном узле.

В настоящем изобретении, таким образом, предлагается эффективный подход к восстановлению целостности базы данных в системе секционированных баз данных без разделения ресурсов, который не требует значительных непроизводительных затрат на обработку при нормальной работе системы или не требует дополнительного объема памяти для полного тиражирования данных.

В изобретении для предложенных способа и системы восстановления целостности базы данных, нарушенной в результате возникшего в первом узле доступа к базе данных сбоя в системе обеспечения доступа к базам данных, предлагается также машиночитаемый носитель, содержащий представленные в машиночитаемом коде программные средства для восстановления целостности базы данных, нарушенной в результате возникшего в первом узле доступа к базе данных сбоя в системе обеспечения доступа к базам данных, имеющей множество таких узлов доступа к базе данных, при этом указанные программные средства в машиночитаемом носителе включают представленные в машиночитаемом коде программные средства для запуска на первом узле доступа к базе данных первого экземпляра базы данных, при этом первый и второй узлы доступа к базе данных имеют по крайней мере одно первое соединенное с ними обоими запоминающее устройство для хранения первых данных для первого экземпляра базы данных, представленные в машиночитаемом коде программные средства для обнаружения сбоя в первом узле доступа к базе данных, представленные в машиночитаемом коде программные средства для предоставления третьему узлу доступа через второй узел к первым данным, хранящимся по крайней мере в одном запоминающем устройстве, и представленные в машиночитаемом коде программные средства запуска первого экземпляра базы данных на третьем узле, включая программные средства для предоставления доступа через второй узел к первым данным, хранящимся по крайней мере в одном первом запоминающем устройстве, с обеспечением тем самым восстановления целостности базы данных, нарушенной в результате сбоя в первом узле.

Ниже изобретение более подробно описано на примере одного из вариантов его осуществления со ссылкой на прилагаемые чертежи, которые показывают:

на фиг. 1 - схему системы обеспечения доступа к базам данных, имеющую множество узлов доступа к базе данных, два запасных узла доступа к базе данных и запоминающее устройство, соединенное по крайней мере с некоторыми из узлов доступа к базе данных,

на фиг.2 - схему, выполненную по первому варианту изобретения системы, в которой после сбоя одного из узлов его экземпляр базы данных запускается на одном из запасных узлов, а доступ к относящемуся к этому экземпляру базы данных осуществляется с помощью сервисной программы виртуального диска коллективного использования на том узле, который соединен с запоминающим устройством, в котором хранятся данные для этого экземпляра базы данных,

на фиг. 3 - блок-схему процедуры, выполняемой при восстановлении целостности базы данных после сбоя на одном из узлов,

на фиг. 4 - другой вариант выполнения настоящего изобретения, согласно которому два экземпляра базы данных запускаются на двух соответствующих запасных узлах, каждый из которых имеет доступ к серверу виртуального диска коллективного использования на другом узле, с которым соединено запоминающее устройство, на котором хранятся данные для обоих экземпляров базы данных,

на фиг.5 - еще один вариант выполнения настоящего изобретения, согласно которому осуществляется копирование данных в запоминающие устройства, связанные с узлами, которые ранее были запасными, что обеспечивает возможность восстановления целостности базы данных в случае возможных будущих сбоев в узлах системы,

на фиг.6 - блок-схему процедуры, которая выполняется в соответствии еще с одним вариантом осуществления настоящего изобретения и согласно которой предпринимается попытка перезагрузки вышедшего из строя узла с одновременным восстановлением соответствующего экземпляра базы данных.

Показанная на фиг.1 система 10 обеспечения доступа к базе данных имеет несколько узлов 201,..., 20n доступа к базе данных, каждый из которых в нормальном режиме работает с соответствующим экземпляром БД1,...,БДN базы данных. Связь между узлами осуществляется по соответствующей коммуникационной сети (не показана). Диски 30k и 30k+1 с использованием каналов 25 связи двухразветвленными соединениями связаны со спаренными узлами 20k и 20k+1 доступа к базе данных. Хотя на чертеже показан пример с двухразветвленными связями, однако на практике диски могут быть связаны со множеством узлов доступа к базе данных многоразветвленными соединениями. Таким образом, на фиг.1 показан узел 20k, работающий с экземпляром БДК базы данных, и спаренный с ним узел 20k+1, который работает с экземпляром БДK+1 базы данных.

При нормальной работе системы диски логически разделены по спаренным узлам таким образом, что одному из спаренных узлов логически принадлежит одно подмножество дисков, имеющих двухразветвленные соединения, а другому спаренному узлу - остальные диски. Количество узлов доступа к базе данных в системе может составлять от нескольких десятков до нескольких сотен. Кроме того, в системе имеется несколько запасных узлов 401, 402 доступа к базе данных. Система должна иметь по крайней мере один, но предпочтительно два или даже более таких запасных узлов.

Предлагаемый в изобретении способ восстановления целостности базы данных, нарушенной в результате сбоя в узле доступа к базе данных, иллюстрируется схемой, показанной на фиг.2. На этой схеме показан случай, когда сбой произошел в узле 20k+1, который работает с экземпляром БДK+1 базы данных. По описанному выше известному способу (II) экземпляр БДK+1 базы данных восстанавливался бы на спаренном узле 20k, который после сбоя в узле 20k+1 работал бы с обоими экземплярами БДK и БДK+1 базы данных. Как уже было отмечено выше, при таком способе нагрузка на узел 20k увеличивается вдвое, что приводит к ухудшению эффективности работы всей системы. Схема на фиг.2 иллюстрирует предлагаемый в изобретении способ решения этой проблемы. После возникновения сбоя экземпляр БДK+1 базы данных запускается на отдельном запасном узле 401. Этому экземпляру базы данных все еще необходим доступ к тем же дискам, которые были логически выделены ему перед сбоем. Как показано на фиг. 2, после сбоя диски, которые составляли логический раздел давшего сбой узла 20k+1, реконфигурируются на доступ к ним через спаренный узел 20k по линии 50 связи соответствующей коммуникационной сети (не показана). Такой доступ обеспечивается, например, с помощью сервисной программы восстанавливаемых виртуальных дисков коллективного использования (ВВДКИ), как это описано в заявке на патент США 08/332157, озаглавленной "Application-Transparent Recovery for Virtual Shared Disks". При сбое в одном из узлов ВВДКИ независимо переключается на режим предоставления доступа из любого узла системы к дискам 30k и 30k+1 через спаренный узел 20k. После восстановления с помощью ВВДКИ экземпляр БДK+1 базы данных, с которым работал давший сбой узел, перезапускается на одном из резервных узлов 401. Экземпляру БДK+1 базы данных при этом логически принадлежат те же самые диски, и он обращается к разделу базы данных, экземпляр которой находится на давшем сбой узле, посылая запросы на чтение диска/запись на диск через клиентскую часть ВВДКИ в узле 401 на серверную часть узла 20k. Сервисная программа ВВОД независимо отправляет запросы к узлу 20k и отыскивает требуемую информацию.

При работе системы по способу, показанному на фиг.2, нагрузка на узел 20k соответствует нагрузке на экземпляр БДK базы данных и нагрузке на сервер виртуального диска коллективного использования (ВДКИ), поддерживающего экземпляр БДK+1 базы данных на узле 401. Эта нагрузка будет меньше, чем нагрузка при восстановлении полностью всего экземпляра БД1 базы данных на узле 20k после сбоя. Таким образом, в этом случае эффективность работы системы после сбоя в одном из узлов хотя и несколько снизится за счет двойной нагрузки на узел 20k, поскольку он становится "ответственным" за два экземпляра базы данных, тем не менее пропускная способность системы при этом будет значительно выше, чем при работе системы по известным методам, описанным выше.

На фиг.3 показана блок-схема процедуры, необходимой для реализации способа, который проиллюстрирован на фиг.2. После сбоя в узле 20k+1, что определяется на шаге 100, на следующем шаге 110 в качестве запасного выбирается узел 401, на котором запускается экземпляр БДK+1 базы данных. Полагая, что на диске 30k+1 хранятся разделы, относящиеся к экземпляру БДK+1 базы данных, узел 20k на шаге 120 берет на себя функции по управлению с помощью ВДКИ диском 30k+1.На следующем шаге 130 в узле 401 конфигурируется соответствующая клиентская часть ВДКИ. После этого на шаге 140 все другие узлы системы информируются (путем обновления соответствующих таблиц в системе) о том, что экземпляр БДK+1, будет теперь запускаться на узле 401. Следовательно, все относящиеся к экземпляру БДK+1, запросы будут направляться в узел 401. В завершение на шаге 150 экземпляр БДК+1 базы данных запускается на узле 401.

На фиг. 4 показан несколько модифицированный вариант осуществления настоящего изобретения. На этом чертеже показана схема системы, в которой экземпляр БДK базы данных также перезапускается на другом запасном узле 402 путем предоставления удаленного доступа с помощью ВДКИ к его данным по линии 60 через узел 20k. При запуске обоих экземпляров БДK и БДK+1 базы данных на запасных узлах 402 и 401 нагрузка на узел 20k определяется только той нагрузкой, которая необходима для управления доступами через ВДКИ от обоих этих экземпляров. Проведенные испытания показали, что в такой схеме связанная с управлением ВДКИ нагрузка на узел 20k оказывается меньше, чем при нормальной работе системы. Кроме того, при последовательном доступе пропускная способность ВДКИ практически равна пропускной способности локального диска, и при этом ВДКИ может также поддерживать работу с произвольным доступом. Таким образом, такая схема позволяет системе после выхода из строя узла 20k+1 работать в режиме, близком к нормальному. Такой подход, однако, имеет один недостаток, который заключается в том, что перенос экземпляра БДK базы данных может потребовать его сброса и перезапуска на запасном узле. Степень влияния этого фактора зависит от рабочей нагрузки системы. При решении этой проблемы необходимо учитывать, что сбои в узле 20k+1 в основном, если не полностью, влияют на выполнение запросов, и поэтому сброс и перезапуск экземпляра БДK можно считать вполне допустимыми. При оперативной обработке транзакций выбор будет зависеть от соотношения нагрузок, создаваемых выходом из строя одного узла 20k и сбоем в обоих узлах 20k и 20k+1.

Одной из возможных проблем, присущих такому способу, является проблема реинтеграции после устранения неполадок в узле 20k+1. В простейшем случае сбой в узле 20k+1 может произойти из-за отказа операционной системы, простая перезагрузка которой может привести к восстановлению нормальной работы узла. В идеальном случае систему было бы целесообразно восстанавливать до конфигурации, при которой она могла бы справиться с последующим сбоем (т.е. до конфигурации, в которой имеется достаточное количество запасных узлов). Одной из возможных альтернатив является перенос экземпляров БДK и БДK+1 базы данных снова в узлы 20k и 20k+1 соответственно. Однако для этого обычно требуется сначала удалить экземпляры базы данных, а затем снова перезапустить их в исходных узлах. В изобретении предлагается усовершенствованный способ управления процессом реинтеграции, не предусматривающий сброс или удаление экземпляров баз данных и включающий копирование данных с дисков 30k и 30k+1 на имеющие двухразветвленные соединения 65 (фиг.5) диски 701 и 702 запасных узлов. Реализовать это можно путем одновременного выполнения операций с базой данной после реконфигурации системы в результате отказа. С использованием доступа через ВДКИ данные могут быть зеркально продублированы копированием или отображением на имеющие двухразветвленные соединения диски запасных узлов, а любые осуществляемые одновременно с этим операции по обновлению дисков должны быть зеркально продублированы в узле 20k и бывших запасными узлах 401 и 402. Для специалистов в данной области техники очевидно, что достичь этого можно за счет соответствующей синхронизации процессов. Для возможного восстановления целостности базы данных, нарушенной в результате последующих сбоев в других узлах системы, узлы 20k и 20k+1 можно после этого перевести в разряд запасных.

Как указано выше, для восстановления вышедшего из строя узла 20k+1 до рабочего состояния может оказаться достаточным просто перезагрузить систему. В этом случае может оказаться целесообразным полностью отказаться от передачи функций по управлению другим узлам. Однако в этом случае решение вопроса о необходимости передачи функций по управлению необходимо отложить до того момента, пока не будет выполнен перезапуск вышедшего из строя узла и не будет предпринята попытка его перезагрузки, что соответственно увеличивает время восстановления. Для совмещения во времени операций, необходимых для восстановления, с операцией по возможной перезагрузке вышедшего из строя узла может использоваться процедура, показанная на фиг.6. При отказе узла 20k+1, что определяется на шаге 200, спаренный с ним узел 20k берет на себя функции по управлению дисками этого вышедшего из строя узла и инициирует процесс восстановления, т. е. выполняет на шаге 210 операции по восстановлению файловой системы и по восстановлению экземпляра базы данных с ведением журнала. Во время этого периода восстановления вышедший из строя узел 20k+1 можно попытаться перезагрузить на шаге 220. Если эта попытка окажется удачной (решение "Да" на шаге 230), то узел 20k+1 на шаге 250 возобновляет управление своими первоначальными дисками и локально осуществляет перезапуск своего экземпляра базы данных. Если же попытка перезагрузки окажется неудачной (решение "Нет" на шаге 230), то на шаге 240 соответствующий экземпляр базы данных запускается на спаренном узле 20k или, как сказано выше, на запасном узле. В любом случае перезапуск экземпляра базы данных выполняется немедленно, поскольку восстановление дисков уже выполнено спаренным узлом 20k.

Предлагаемый в настоящем изобретении способ относится к системам обеспечения доступа к базам данных и, в частности, к любой системе секционированной базы данных (без разделения ресурсов).

Настоящее изобретение может быть реализовано в виде промышленно изготавливаемого машиночитаемого носителя (например, в виде одного или нескольких компьютерных программных продуктов), имеющего, например, пригодный для использования с компьютером носитель. Такой носитель может содержать, например, представленные в машиночитаемом коде программные средства, позволяющие достаточно просто реализовать предложенные в настоящем изобретении подходы. Указанный машиночитаемый носитель может быть использован как часть компьютерной системы или поставляться отдельно.

Хотя выше изобретение рассмотрено на примере предпочтительного (ых) варианта (ов) его осуществления, тем не менее следует отметить, что для специалистов в данной области техники должны быть очевидны различные не рассмотренные подробно модификации, которые можно вносить в эти варианты и которые, следовательно, включены в объем изобретения.

Класс G06F11/14 обнаружение и исправление ошибок в данных с помощью избыточности операций,например с использованием различных последовательностей операций, приводящих к тому же результату

способ восстановления данных в системе управления базами данных -  патент 2526753 (27.08.2014)
способ устранения конфликта доступа к центру и реализующая способ система -  патент 2523935 (27.07.2014)
устройство для приема двоичной информации по двум параллельным каналам связи -  патент 2523210 (20.07.2014)
способ, устройство и компьютерное программное изделие для определения сигнатур данных в сети динамически распределенных устройств -  патент 2503999 (10.01.2014)
устройство обработки данных, способ управления доступом и носитель данных -  патент 2497183 (27.10.2013)
поэтапная, облегченная система резервного копирования -  патент 2483349 (27.05.2013)
способ исправления одиночных ошибок и предотвращения возникновения двойных ошибок в регистровом файле и устройство для его осуществления -  патент 2465636 (27.10.2012)
устройство хранения информации с обнаружением одиночных и двойных ошибок -  патент 2450332 (10.05.2012)
способ обнаружения ошибок при приеме дискретных сообщений (варианты) -  патент 2449349 (27.04.2012)
устройство хранения и передачи данных с исправлением ошибок в байте информации и обнаружением ошибок в байтах информации -  патент 2448359 (20.04.2012)
Наверх