создание полной копии бд происходит быстрее чем инкрементной
Создание полной копии бд происходит быстрее чем инкрементной
Acronis Backup & Recovery 11 предоставляет возможность использования популярных схем резервного копирования, таких как «дед-отец-сын» и «Ханойская башня», а также создания собственных схем резервного копирования. Все схемы резервного копирования строятся на основе методов полного, инкрементного и дифференциального резервного копирования. Термин «схема» в действительности обозначает алгоритм применения этих методов в сочетании с алгоритмом очистки архива.
Сравнение методов резервного копирования между собой не имеет смысла, поскольку в схеме они работают в совокупности. Каждый метод должен выполнять собственную роль в соответствии со своими преимуществами. Грамотная схема резервного копирования позволяет использовать преимущества всех методов, уменьшая влияние их недостатков. Например, еженедельное создание дифференциальных резервных копий облегчает очистку архива, поскольку их легко удалять вместе с набором зависящих от них ежедневных инкрементных резервных копий, сохраняемых в течение недели.
Резервное копирование с помощью методов полного, инкрементного или дифференциального резервного копирования создает резервную копию соответствующего типа.
В полной резервной копии хранятся все данные, выбранные для резервного копирования. Полная резервная копия лежит в основе любого архива и формирует базу для инкрементных и дифференциальных резервных копий. Архив может содержать несколько полных резервных копий или состоять только из них. Полная резервная копия является самодостаточной: чтобы восстановить из нее данные, доступ к любой другой резервной копии не требуется.
Широко известно, что полная резервная копия — самая медленная для создания и самая быстрая для восстановления. С помощью технологий Acronis восстановление из инкрементной резервной копии может выполняться так же быстро, как из полной.
Полное резервное копирование наиболее полезно в следующем случае:
Примеры: интернет-кафе, школа или университетская лаборатория, в которых администратор часто отменяет изменения, сделанные студентами или гостями, но базовую резервную копию обновляет редко (только после установки обновлений программного обеспечения). Время создания резервной копии в этом случае не является решающим, а время восстановления будет минимальным, если восстанавливать систему из полной резервной копии. Для обеспечения дополнительной надежности администратор может иметь несколько полных резервных копий.
Инкрементное резервное копирование наиболее полезно в следующем случае:
Широко известно, что инкрементные резервные копии менее надежны, чем полные, так как, если повреждена одна копия в «цепочке», следующие копии уже нельзя использовать. Тем не менее хранение нескольких полных резервных копий не является оптимальным вариантом, если требуется иметь несколько предыдущих версий данных, потому что надежность слишком большого архива еще более сомнительна.
Пример: резервное копирование журнала транзакций базы данных.
Обычно считается, что «дифференциальные резервные копии дольше создаются и быстрее восстанавливаются, а инкрементные быстрее создаются и медленнее восстанавливаются». В действительности не существует физической разницы между инкрементной резервной копией, прилагаемой к полной, и дифференциальной копией, прилагаемой к той же полной резервной копии, на один и тот же момент времени. Упомянутая выше разница подразумевает, что дифференциальная резервная копия создана после (или вместо) создания нескольких инкрементных копий.
Инкрементная или дифференциальная резервная копия, созданная после дефрагментации диска, может иметь значительно больший объем, чем обычно, потому что в процессе дефрагментации изменяется местоположение файлов на диске и резервная копия отражает эти изменения. После дефрагментации диска рекомендуется заново создавать полную резервную копию.
В следующей таблице указаны общепризнанные преимущества и недостатки каждого типа резервного копирования. В действительности эти параметры зависят от множества факторов, таких как объем, скорость и характер изменения данных, их природа, физические характеристики устройств, установленные параметры резервного копирования и восстановления. Лучшим учителем в выборе оптимальной схемы резервного копирования является опыт.
Полное, инкрементное и дифференциальное резервное копирование
Резервное копирование данных — то, что должен регулярно выполнять каждый активный пользователь компьютера, который не хочет потерять всю свою информацию (или часть от нее) при неожиданном сбое. Часто в различных приложениях, предназначенных для резервного копирования информации, можно встретить три механизма, как создать копию: полностью, инкрементно или дифференциально. В рамках данной статьи рассмотрим, чем эти методы копирования отличаются друг от друга.
Методы резервного копирования данных
Программ, которые разработаны для создания резервной копии информации, много, как в операционной системе Windows, там и в Mac OS. Все они выполняют примерно одинаковые действия — создают резервную копию операционной системы, полностью копируют диск, его некоторые разделы, папки или прочие данные, в зависимости от настроек, выбранных пользователем. После чего эти резервные копии можно использовать для восстановления информации.
Созданная резервная копия нуждается в постоянной актуализации. На базе примененных в программе условий создания бэкапа можно выполнить создание копии, при этом выбрав механизм резервного копирования:
Данные действия имеются во многих приложений, например, в одной из самых популярных программ для резервного копирования данных, AOMEI Backupper. В рамках данной статьи примеры будут рассмотрены на ней, но найти подобные механизмы резервного копирования можно и в других программах.
Полное резервное копирование
При подобном методе резервного копирования снимки системы, которые генерируются в рамках одной задачи по бэкапу, способны работать независимо друг от друга. Повреждение одного из таких снимков никак не повлияет на работу других. То есть, при полном резервном копировании снимок системы содержит в себе всю резервируемую информацию.
Метод полного резервного копирования самый надежный, но и самый расточительный в плане ресурсов. Чтобы создать резервную копию операционной системы Windows и нескольких небольших приложений, потребуются десятки гигабайт. Соответственно, постоянно сохранять такие полноценные бэкапы и хранить их на жестком диске нерационально и расточительно с точки зрения свободного пространства на накопителе. Именно поэтому используются два других механизма, рассмотренных ниже.
Инкрементное резервное копирование
Инкрементное резервное копирование данных подразумевает, что пользователь при создании бэкапа единожды генерирует полноценную копию системы и всех файлов, а все создаваемые в будущем копии являются дочерними к главной и предыдущим, то есть, содержат в себе исключительно информацию о произошедших изменениях — удаленных, измененных и созданных файлах.
Таким образом, каждая последующая после первой инкрементная копия содержит в себе только информацию об изменениях. Выглядит это примерно так:
И так далее. То есть, каждая новая инкрементная копия не может использоваться для восстановления данных без предыдущих копий, в том числе и без основной первичной.
Плюс подобного метода резервного хранения данных, в сравнении с первым, меньший размер копий (каждая новая инкрементная копия весит десятки-сотни мегабайт, в зависимости от количества произошедших изменений). Минус — обращение каждой новой копии к предыдущей при восстановлении. То есть, если одна из копий повреждена, придется выполнять восстановление к последней рабочей копии в непрерывной цепи от первой. Кроме того, восстановление из инкрементной копии происходит дольше по времени, чем из других методов резервного копирования.
Дифференциальное резервное копирование
Дифференциальный метод копирования близок к инкрементному по смыслу, но между ними имеется ключевое различие. В рамках дифференциального копирования новые снимки являются дочерними к первому.
Это значит, что при первом резервном копировании дифференциальным методом создается полная копия системы, после чего все последующие снимки содержат в себе информацию о произошедших изменениях от первой копии. Выглядит это примерно следующим образом:
Как можно видеть, третья копия при дифференциальном методе резервного копирования не является дочерней ко второй. То есть, если с одним из дифференциальных снимков возникнут проблемы, можно будет восстановиться к любой другой рабочей дифференциальной копии. Это ключевое отличие дифференциального резервного копирования от инкрементного.
Размер каждого дифференциального снимка больше, чем размер инкрементного снимка, поскольку в нем нужно хранить информацию обо всех изменениях с момента создания первой полной копии. При этом каждый новый дифференциальный снимок будет весить больше предыдущего.
Какой метод резервного копирования лучше
Рассмотрев три метода резервного копирования, каждый пользователь может самостоятельно сделать вывод, какой из вариантов для него лучше. Кратко подведем итоги и приведем несколько сценариев:
Полное, инкрементное, дифференциальное – о методах резервного копирования : Windows
Полное, инкрементное, дифференциальное – о методах резервного копирования
А разбираться в методах резервного копирования предлагаю на примере программы AOMEI Backupper. Итак, друзья, когда мы в программе AOMEI Backupper создаём резервную копию Windows, целого диска, отдельных разделов или отдельных папок с данными, в дальнейшем после создания резервной копии сможем использовать для неё некоторые программные возможности. В их числе – создание на базе заданных условий бэкапа новых копий с выбором механизма резервного копирования:
— Полная копия;
— Инкрементная копия;
— Дифференциальная копия.
Что же это за механизмы?
Полное резервное копирование
Полное – это резервное копирование, при котором снимок операционной системы, диска, раздела или отдельных папок содержит все резервируемые данные. Такие снимки, создаваемые в рамках одной и той же задачи по бэкапу, независимы друг от друга, повреждение одного из них никак не повлияет на другие снимки. Это самый надёжный метод резервного копирования, но, вместе с тем, самый затратный по ресурсам дискового пространства. Например, образ рабочей Windows без особых каких-то громоздких программ и игр будет весить примерно 20 Гб. Если по мере создания новых бэкапов не избавляться от старых, диск-хранилище просто забьётся ими под завязку. Решить эту проблему призваны два других механизма резервного копирования.
Инкрементное резервное копирование
Удаление инкрементной копии (или повреждение её вирусами) не будет иметь следствием неработоспособность предыдущих инкрементных копий и первичной полной. А вот последующих – будет. К точкам после удалённой инкрементной копии откатиться мы уже не сможем. В этом плане, конечно, метод инкрементного копирования уязвим, но его сильной стороной является обеспечение отката к разным точкам состояния при минимально занятом дисковом пространстве. Ведь при незначительных изменениях каждая новая копия будет весить пару Мб разницы между ней и предшественницей. Вот как, например, бэкап раздела на скриншоте ниже. Вес в 3,57 Гб, отмеченный сиреневым маркером – это вес полной первичной копии, а отмеченные жёлтым маркером 9,12 Мб и 20,01 Мб – это вес инкрементных копий.
Ещё один недостаток инкрементных копий – более долгий по времени процесс восстановления, чем из полных и дифференциальных бэкапов.
Дифференциальное резервное копирование
Дифференциальное – это такое резервное копирование, при котором полная копия создаётся единожды в начале, а все последующие копии, создаваемые в рамках одной и той же задачи, содержат не все данные, а лишь произошедшие изменения с момента создания первичной полной копии. Ключевой момент здесь – с момента создания полной копии. Тогда как при инкрементом копировании вторая инкрементная копия цепочки являет собой разницу между ней и первой копией, при дифференциальном и первая, и вторая, и третья, и четвёртая, и все следующие дифференциальные копии будут зависимыми только от полной копии. Но никак не зависимыми друг от друга. Удаление или повреждение любой из дифференциальных копий не повлияет на другие копии – ни на те, что создавались до удалённой (повреждённой), ни на те, что после неё.
Дифференциальные резервные копии – это тоже точки восстановления.
Необходимость дифференциальной копии каждый раз сравнивать себя с полной первичной копией, соответственно, влечёт за собой использование большего дискового пространства. На скриншоте ниже сиреневым маркером отмечен размер полной копии и жёлтым размеры дифференциальных бэкапов. Размер последних в районе 450 Мб свидетельствует о том, что между ними произошло немного изменений, тем не менее каждое такое изменение с момента создания полной копии зафиксировано в отдельном порядке. И в отдельном порядке поглощает место на диске.
Какой метод лучше выбрать
Какой из методов резервного копирования – полное, инкрементное или дифференциальное – выбрать для обычных домашних нужд? Полное – самое надёжное, но каждый раз создавать полную копию не всегда целесообразно. В стеснённых условиях дискового пространства ветвистой системы точек отката особо не настроишь. Инкрементное будет экономить место на диске, но если вирус повредит промежуточную копию или её, например, кто-то из близких случайно удалит, мы не сможем откатиться к свежим бэкапам. Оптимальный вариант – дифференциальное резервное копирование. Его можно как периодически выполнять вручную, так и настроить для автоматического запуска в планировщике программы-бэкапера.
Но есть же ещё нюанс, друзья. Некоторые продвинутые программы-бэкаперы могут предложить не только тот или иной метод создания бэкапа, но и его применение в тех или иных условиях. Например, у AOMEI Backupper есть 5 схем резервного копирования. Схемы можно включить сразу при создании первичного бэкапа.
А можно подключить позднее.
При настройке схем нужно поставить галочку «Включить управление дисками». И в выпадающем списке ниже увидим пятёрку гибких решений от AOMEI Backupper.
В других программах-бэкаперах, соответственно, могут быть другие идеи от разработчиков. Здесь нужно уже разбираться с каждой такой программой в отдельности и подбирать условия создания бэкапа под свои нужды.
Acronis True Image: стратегии резервного копирования
Методы создания бэкапов
Создание схемы начинается с понимания методов резервного копирования. Таких методов три: полное, инкрементное и дифференциальное резервное копирование (full, incremental, differential backup). Зачем они нужны и в чем разница? Смотрим.
Полное резервное копирование
Тут все очень просто. В файл бэкапа записываются все данные, которые были выбраны для резервного копирования.
На рисунке: все бэкапы — полные.
Такие бэкапы самые надежные, но и самые большие. При этом для восстановления потребуется только один файл.
Инкрементное резервное копирование
В файл бэкапа записываются только изменения, которые произошли с момента последнего резервного копирования.
На рисунке: 1.tib — полный бэкап (первый бэкап всегда полный), 2.tib, 3.tib, 4.tib — инкрементные бэкапы.
Инкрементные бэкапы гораздо меньше полных. Однако для восстановления потребуется предыдущий полный бэкап (на рисунке — 1.tib) и вся цепочка инкрементных бэкапов заканчивая тем бэкапом, из которого вы хотите восстановить данные.
Дифференциальное резервное копирование
В файл бэкапа записываются только изменения, которые произошли с момента последнего полного резервного копирования.
На рисунке: 1.tib — полный бэкап (первый бэкап всегда полный), 2.tib, 3.tib, 4.tib — дифференциальные бэкапы.
Дифференциальные бэкапы меньше полных, но больше инкрементных. Для восстановления потребуется сам дифференциальный бэкап и предыдущий полный бэкап (на рисунке — 1.tib).
Цепочки и схемы
Ну вот мы и подошли к самому интересному. Разумеется, вы уже догадались. Три метода резервного копирования дают нам массу всевозможных вариантов так называемых цепочек бэкапов. Цепочка – это один полный бэкап и все зависящие от него инкрементные и/или дифференциальные бэкапы. Схема же состоит из одной или нескольких цепочек, а также содержит правила удаления старых бэкапов.
Действительно, вариантов цепочек может быть великое множество. Но это в теории. На практике же в основу цепочки берется только один из методов: полный, инкрементный или дифференциальный.
«Тут же все ясно как белый день! Всегда создавай полные бэкапы!» – скажете вы и будете правы. Но как всегда есть одно больше «но». Полные бэкапы – самые увесистые. Вам не жалко забить ваш 2 ТБ диск бэкапами? Тогда это самое лучшее решение. Но большинству хочется максимальной надежности и вариативности при минимальных потерях дискового пространства. Поэтому, как говорится, давайте разбираться. Вот со схем на основе полных бэкапов и начнем.
Схемы на основе полных бэкапов
Схемы на основе инкрементных бэкапов
При такой схеме создается один полный бэкап и цепочка зависимых от него инкрементных. Достоинства очевидны – бэкапы создаются быстро и весят мало, т.е. можно позволить себе насоздавать их гораздо больше, чем при схеме с полными бэкапами. Как итог, вы получаете максимальную вариативность при выборе точки восстановления. Но есть один серьезный недостаток – низкая надежность. При повреждении любого из бэкапов все последующие превращаются в мусор – восстановиться из них вы не сможете. Можно ли каким-то образом повысить надежность? Да, можно. Самый простой способ – создавать новый полный бэкап после нескольких инкрементных, скажем, после четырех или пяти. Таким образом, мы получаем схему с несколькими цепочками, и повреждение одной из цепочек не повлияет на другие.
Эта схема универсальная, ее можно использовать для защиты как дисков, так и файлов.
Схемы на основе дифференциальных бэкапов
При такой схеме создается один полный бэкап и зависимые от него дифференциальные. Этот подход объединяет в себе достоинства двух предыдущих. Так как дифференциальные бэкапы меньше полных и больше инкрементных, вы получаете среднюю вариативность при выборе точки восстановления и довольно высокую надежность. Но без недостатков все равно не обойдешься. Чем дальше по времени отстоит дифференциальный бэкап от своего полного бэкапа, тем он «тяжелее», и даже может превысить размер полного бэкапа. Решение здесь то же, что и при инкрементном подходе, — разбавляйте ваши дифференциальные бэкапы полными. В зависимости от интенсивности изменения защищаемых данных новый полный бэкап рекомендуется создавать после двух-пяти дифференциальных.
Такой схемой можно защитить ваш системный раздел, если дисковое пространство не позволяет вам хранить несколько полных бэкапов.
Планирование
Здесь все просто. Вы составляете расписание, а True Image обновляет для вас бэкапы точно в назначенное вами время и в соответствии с настроенной схемой. Чем чаще меняются данные, тем чаще рекомендуется их бэкапить. К примеру, системный раздел можно бэкапить раз в месяц, а вот файлы, с которыми вы работаете каждый день, и бэкапить рекомендуется каждый день или даже чаще.
Разумеется, когда вам срочно нужно создать бэкап, не обязательно ждать запланированного времени. Вы всегда можете запустить резервное копирование вручную.
Правила очистки
Как насчет бэкапа в облачное хранилище?
Все, о чем мы до сих пор говорили, относится к бэкапам, которые вы храните у себя на внутреннем или внешнем жестком диске, на NAS-е, FTP-сервере и т.д. А как насчет бэкапа в облако? True Image сохраняет как файловые, так и дисковые бэкапы в Acronis Cloud по простой инкрементной схеме – один полный бэкап и цепочка инкрементных – и не позволяет ее менять. На резонный вопрос «почему» ответ прост – эта схема самая бережливая к дисковому пространству, а сохранность бэкапов в облаке гарантирует Acronis.
Правила очистки облачного бэкапа чуть проще, чем обычного.
Вы можете ограничить бэкап по «возрасту» и по количеству версий каждого из файлов, которые хранятся в облаке. Ограничивать бэкап по объему хранилища было бы не очень логично. Ведь в первую очередь Acronis Cloud используется именно для хранения бэкапов.
Путеводитель по резервному копированию баз данных
– О, никакое убежище не выдержит попадания метеорита. Но ведь у вас, как и у каждого, есть резерв, так что можете не беспокоиться.
Станислав Лем, «Звёздные дневники Ийона Тихого»
Резервным копированием называется сохранение копии данных где-то вне основного места их хранения.
Главное назначение резервного копирования – восстановление данных после их потери. В связи с этим нередко приходится слышать, что при наличии реплики базы данных с неё всегда можно восстановить данные, и резервное копирование не нужно. На самом деле резервное копирование позволяет решить как минимум три задачи, которые не могут быть решены при помощи реплики, да и реплику без резервной копии не инициализировать.
Во-первых, резервная копия позволяет восстановить данные после логической ошибки. Например, бухгалтер удалил группу проводок или администратор БД уничтожил табличное пространство. Обе операции абсолютно легитимны с точки зрения базы данных, и процесс репликации воспроизведёт их в базе-реплике.
Во-вторых, современные СУБД – весьма надёжные программные комплексы, однако изредка всё же происходит повреждение внутренних структур базы данных, после которого доступ к данным пропадает. Что особенно обидно, такое нарушение происходит обычно при высокой нагрузке или при установке какого-нибудь обновления. Но как высокая нагрузка, так и регулярные обновления говорят о том, что база данных – отнюдь не тестовая, и данные, хранящиеся в ней, ценны.
Наконец, третья задача, решение которой требует наличия резервной копии, – это клонирование базы, например, для целей тестирования.
Резервное копирование баз данных так или иначе базируется на одном из двух принципов:
Выгрузка данных
В наборе утилит, прилагающихся к любой СУБД, обязательно есть инструменты для выгрузки и загрузки данных. Данные сохраняются либо в текстовом формате, либо в двоичном формате, специфичном для конкретной СУБД. В таблице ниже приведён список таких инструментов:
Двоичный формат | Текстовый формат | |
---|---|---|
Oracle | DataPump Export/DataPump Import Export/Import | SQL*Plus/SQL*Loader |
PostgreSQL | pg_dump, pg_dumpall/pg_restore | pg_dump, pg_dumpall/psql |
Microsoft SQL Server | bcp | bcp |
DB2 | unload/load | unload/load |
MySQL | mysqldump, mysqlpump/mysql, mysqlimport | |
MongoDB | mongodump/mongorestore | mongoexport/mongoimport |
Cassandra | nodetool snapshot/sstableloader | cqlsh |
Текстовый формат хорош тем, что его можно редактировать или даже создавать внешними программами, а двоичный в свою очередь хорош тем, что позволяет быстрее выгружать и загружать данные за счёт распараллеливания загрузки и экономии ресурсов на преобразовании форматов.
Несмотря на простоту и очевидность идеи выгрузки данных, для резервирования нагруженных промышленных баз такой метод применяют редко. Вот причины, по которым выгрузка не подходит для полноценного резервного копирования:
Самым же распространённым методом резервного копирования баз данных является копирование файлов базы.
«Холодное» сохранение файлов БД
Очевидная идея – остановить базу данных и скопировать все её файлы. Такая резервная копия называется «холодной». Способ крайне надёжный и простой, но у него есть два очевидных недостатка:
«Горячее» сохранение файлов
Большинство резервных копий современных баз данных выполняется путём копирования файлов базы данных без остановки базы. Здесь видны несколько проблем:
Вот как выглядит подготовка к резервному копированию в СУБД с изменяемыми дисковыми структурами, т. е. во всех традиционных дисковых реляционных системах:
По окончании резервного копирования нужно перевести базу данных обратно в обычное состояние. В Oracle это делается командой ALTER DATABASE/TABLESPACE END BACKUP, в PostgreSQL – вызовом функции pg_stop_backup(), а в других базах – внутренними подпрограммами соответствующих команд или внешних сервисов.
Вот как выглядит временнáя диаграмма процесса резервного копирования:
Восстановление на точку
Резервная копия позволяет восстановить состояние базы данных на момент, когда завершилась команда возврата из режима резервного копирования. Однако авария, после которой потребуется восстановление, может произойти в любой момент. Задача восстановления состояния БД на произвольный момент называется «восстановлением на точку» (point-in-time recovery).
Чтобы обеспечить такую возможность, следует сохранять журналы БД начиная с момента окончания резервного копирования, а в процессе восстановления продолжить применять журналы к восстановленной копии. После того, как БД восстановлена из резервной копии на момент окончания копирования, состояние базы (файлов и кэшированных страниц) гарантированно корректно, поэтому особый режим журналирования не нужен. Применяя журналы до нужного момента, можно получить состояние базы данных на любую точку во времени.
Если скорость восстановления резервной копии ограничена лишь пропускной способностью диска, то скорость применения журналов обычно ограничена производительностью процессора. Если в основной базе данных изменения происходят параллельно, то при восстановлении все изменения выполняются последовательно – в порядке чтения из журнала. Таким образом время восстановления линейно зависит от того, насколько далеко точка восстановления отстоит от точки окончания резервного копирования. Из-за этого приходится довольно часто делать полные резервные копии – минимум раз в неделю для баз с небольшой транзакционной нагрузкой и до ежедневного копирования высоконагруженных баз.
Инкрементальное резервное копирование
Чтобы ускорить восстановление на точку, хотелось бы иметь возможность выполнять резервное копирование как можно чаще, но при этом не занимать лишнего места на дисках и не нагружать базу задачами резервного копирования.
Решение задачи – инкрементальное резервное копирование, то есть копирование только тех страниц данных, которые изменились с момента предыдущего резервного копирования.
Инкрементальное резервное копирование имеет смысл только для СУБД, использующих изменяемые структуры данных.
Инкремент может отсчитываться как от полной резервной копии (кумулятивная копия), так и от любой предыдущей копии (дифференциальная копия).
К сожалению, единой терминологии не существует, и разные производители используют разные термины:
Дифференциальная | Кумулятивная | |
---|---|---|
Oracle | Differential | Cumulative |
PostgresPro | Incremental | — |
Microsoft SQL Server | — | Differential |
IBM DB2 | Delta | Incremental |
MySQL Enterprise | Incremental | Differential |
Percona Server | Incremental |
При наличии инкрементальных копий процесс восстановления на точку выглядит следующим образом:
Есть три способа создания инкрементальной копии:
Второй и третий способ отличаются механизмом определения списка изменённых страниц. Разбор журналов более ресурсоёмкий, плюс для его реализации необходимо знать структуру журнальных файлов. Спросить у самой базы, какие именно страницы изменились, проще всего, но для этого ядро СУБД должно иметь функциональность отслеживания изменённых блоков (block change tracking).
Впервые функциональность инкрементального резервного копирования была создана в ПО Oracle Recovery Manager (RMAN), появившемся в релизе Oracle 8i. Oracle сразу реализовал отслеживание изменённых блоков, поэтому необходимости в разборе журналов нет.
PostgreSQL не отслеживает изменённые блоки, поэтому утилита pg_probackup, разработанная российской компанией Postgres Professional, определяет изменённые страница путём анализа журнала. Однако компания поставляет и СУБД PostgresPro, которая включает расширение ptrack, отслеживающее изменение страниц. При использовании pg_probackup с СУБД PostgresPro утилита запрашивает изменённые страницы у самой базы – точно так же, как и RMAN.
Microsoft SQL Server так же, как и Oracle, отслеживает изменённые страницы, но команда BACKUP позволяет делать только полные и кумулятивные резервные копии.
В DB2 есть возможность отслеживания измененных страниц, но по умолчанию она выключена. После включения DB2 позволит делать полные, дифференциальные и кумулятивные резервные копии.
Важное отличие описанных в этом разделе средств (кроме pg_probackup) от файловых средств резервного копирования в том, что они запрашивают образы страниц у базы данных, а не читают данные с диска самостоятельно. Недостаток такого подхода – небольшая дополнительная нагрузка на базу. Однако этот недостаток с лихвой компенсируется тем, что прочитанная страница всегда корректна, поэтому нет необходимости во включении на время резервного копирования особого режима журналирования.
Ещё раз обратите внимание, что наличие инкрементальных копий не отменяет требований к наличию журналов для восстановления на произвольную точку во времени. Поэтому в промышленных базах данных журналы постоянно переписываются на внешний носитель, а резервные копии, полные и/или инкрементальные, создаются по расписанию.
Наилучшей на сегодня реализацией идеи инкрементального резервного копирования является программно-аппаратный комплекс (в терминологии Oracle – engineered system) Zero Data Loss Recovery Appliance – специализированное решение Oracle для резервного копирования собственной БД. Комплекс представляет собой кластер серверов с большим объёмом дисков, на которые установлена модифицированная версия ПО Recovery Manager и может работать как с другими программно-аппаратными комплексами Oracle (Database Appliance, Exadata, SPARC Supercluster), так и с базами Oracle на традиционной инфраструктуре. В отличие от «обычного» RMAN, в ZDLRA реализована концепция «вечного инкремента» (incremental forever). Система единственный раз создаёт полную копию базы данных, а потом делает только инкрементальные копии. Дополнительные модули RMAN позволяют объединять копии, создавая новые полные копии из инкрементальных.
К чести российских разработчиков нужно заметить, что и pg_probackup умеет объединять инкрементальные копии.
В отличие от многих похожих вопросов, вопрос «какой метод резервного копирования лучше» имеет однозначный ответ – лучше всего родная для используемой СУБД утилита, обеспечивающая возможность инкрементального копирования.
Для администратора БД гораздо более важными являются вопросы выбора стратегии резервного копирования и интеграция средств резервирования баз данных в корпоративную инфраструктуру. Но эти вопросы выходят за рамки данной статьи.