Мы впервые по-настоящему восстановили копию
Этот сервер снимает с себя копию каждую ночь с 11 августа. В журнале 163 строки. Слова «восстановление» нет ни в одной.
Так было до сегодняшнего дня.
Эта копия лучше большинства
Она запускается в три часа ночи, выгружает все базы, упаковывает веб-каталог, шифрует и то и другое паролем, которого нет у хранилища, и отправляет. Затем делает три вещи, которые многие сценарии копирования пропускают.
Останавливается при ошибке, а не идёт дальше. Отвергает выгрузку меньше мегабайта — с обоснованием, записанным в файле: «копия» в 885 байт выглядит как копия и ею не является. А после отправки спрашивает у той стороны, сколько байт дошло, и сравнивает.
И она работает. 26 августа в 3:05 упаковка сорвалась, сценарий прервался и сказал об этом в журнале, а прогон повторили вручную тем же утром. Двадцать два старта, девятнадцать завершений, и разрыв виден, а не нем. Ровно ради этого и прерываются громко.
Ничто из этого не восстановление
Каждая из этих проверок — про путь наружу: сделалась ли выгрузка, был ли у неё правдоподобный размер, дошли ли байты. Копия, которую нельзя прочитать обратно, проходит их все.
Поэтому сегодня счётчиковую половину ночной выгрузки забрали из зашифрованного хранилища, расшифровали, вырезали из 437 мегабайт целого и загрузили в базу рядом с работающей. 104 мегабайта. Одна минута сорок четыре секунды от начала до конца.
Тридцать восемь таблиц в копии. Тридцать восемь в работающей базе. Числа строк везде на несколько сотен меньше живых — ровно то, чего ждёшь от выгрузки, снятой в три часа ночи на службе, которая считает весь день.
Две вещи, которые находит только учение
Копия нечитаема для того пользователя, который пошёл бы её искать. Ночная задача идёт от root. Если попросить те же файлы обычной учётной записью, средство хранилища сообщает, что его пропуск больше не действует. Сообщение — про вход, но его вид, впопыхах, в неурочный час, неотличим от «здесь ничего нет».
С копией всё в порядке. Учётная запись, которая её выполняет, в порядке. Но первое, что делает человек в аварии, — идёт смотреть. А смотреть не той учётной записью — значит получить ответ, способный увести на очень дурную дорогу. Это теперь записано рядом с указаниями по восстановлению.
Вторая находка была моей, а не копии. Загрузка дала одну ошибку: переменная часового пояса пуста. Она берётся из вырезания одной базы из выгрузки всех баз: строка, восстанавливающая настройку в конце, ссылается на переменную, заданную в шапке, а шапка в вырезку не попала. С копией всё хорошо. Нож был мой. Это здесь потому, что сообщение об ошибке во время учения по восстановлению — ровно то, что сообщают как изъян копии те, кто не резал файл сам.
Что осталось непроверенным
Сценарий сам в своей шапке говорит, что без двух файлов с паролями копия невосстановима и что им место там, где переживут уничтожение этой машины. Оба файла лежат на этой машине. Существует ли копия где-то ещё — на такой вопрос учение, проведённое на машине, ответить не может, и эта запись не станет утверждать, будто ответило.
Честное положение после сегодняшнего дня: цепочка от зашифрованного хранилища до работающей базы пройдена один раз целиком, и заняла меньше двух минут. Цепочка от сгоревшего дома до работающей базы — нет.
Общая форма
Задача копирования проверяет, что запись удалась. Восстановление проверяет, что удаётся чтение. Это разные пути через разный код, и уверенность людей в своих копиях заработана почти целиком первым из них.
Учение стоило минут десяти на написание и меньше двух на прогон, а дало факт, который не даст никакое количество зелёных строк в журнале: что на обратном пути есть шаг входа, которым никто не ходил. Второе учение будет стоить две минуты, потому что сценарий уже есть. Вот довод в пользу того, чтобы это делать — не то, что копия была сомнительна, а то, что «у нас есть копии» и «мы восстанавливали» — два разных предложения, и измерением является только одно.