17.9.5.1 Основы распределенного восстановления
Всякий раз, когда член присоединяется к группе репликации, он подключается к существующему члену для выполнения передачи состояния. Сервер, присоединяющийся к группе, передает все транзакции, которые произошли в группе до его присоединения, которые предоставляются существующим членом (называемым донором). Далее сервер, присоединяющийся к группе, применяет транзакции, которые произошли в группе в процессе этой передачи состояния. Когда сервер, присоединяющийся к группе, догонит оставшиеся серверы в группе, он начинает нормально участвовать в группе. Этот процесс называется распределенным восстановлением.
Этап 1
На первом этапе сервер, присоединяющийся к группе, выбирает один из онлайн-серверов в группе в качестве донора недостающего состояния. Донор отвечает за предоставление серверу, присоединяющемуся к группе, всех отсутствующих данных до момента присоединения к группе. Это достигается с помощью стандартного асинхронного канала репликации, установленного между донором и сервером, присоединяющимся к группе, см. Раздел 16.2.2, «Каналы репликации». Через этот канал репликации бинарные логи донора реплицируются до точки, в которой произошла смена представления, когда сервер, присоединяющийся к группе, стал частью группы. Присоединяющийся к группе сервер применяет бинарные логи донора по мере их получения.
В то время как бинарные логи реплицируются, сервер, присоединяющийся к группе, также кэширует каждую транзакцию, которая обменивается в группе. Другими словами, он прослушивает транзакции, происходящие после его присоединения к группе и во время применения отсутствующего состояния от донора. Когда первый этап завершается и канал репликации с донором закрывается, сервер, присоединяющийся к группе, переходит ко второму этапу: догонянию.
Этап 2
На этом этапе сервер, присоединяющийся к группе, приступает к выполнению кэшированных транзакций. Когда количество транзакций, ожидающих выполнения, наконец, достигает нуля, член объявляется онлайн.
Устойчивость
Процедура восстановления сохраняет работоспособность при сбоях донора, пока сервер, присоединяющийся к группе, извлекает бинарные логи от него. В таких случаях, если донор выходит из строя во время этапа 1, сервер, присоединяющийся к группе, переключается на нового донора и возобновляет процесс с него. В этом случае сервер, присоединяющийся к группе, явно закрывает соединение с вышедшим из строя сервером и открывает соединение с новым донором. Это происходит автоматически.
© 2025 Oracle
Licensed under the GPLv2 License.