Сетевые решения :: Дифференциальное резервное копирование в MS SQL
Дифференциальное (разностное) резервное копирование появилось в MS SQL Server 7.0 и позволяет сократить время восстановления базы данных и журналов транзакций.
что такое дифференциальное копирование?
Дифференциальная копия — это запись всех страниц, в которых были сделаны изменения с момента последней, полной копии. Отличие от резервного копирования журнала транзакций в том, что в разностную копию всегда включаются все изменения, произошедшие с момента создания последней, полной копии базы данных. Таким образом, если у вас имеется две дифференциальные копии, одна из которых сделана позже второй, то последняя копия содержит первую и все последующие изменения.
Если вы сделали последовательно две копии журнала транзакций, то вторая содержит только изменения, сделанные после создания первой копии журнала.
разработка эффективной стратегии резервирования
Самый простой путь для обеспечения возможности восстановления базы данных на любой момент времени — это регулярное создание копий журнала транзакций. При этом нужно будет восстановить копию базы данных и последовательность копий журнала транзакций до заданного момента времени.
Например, полная копия базы выполняется в полночь, а журнал транзакций резервируется каждый час. Для восстановления базы данных в ее состояние на 9:30 нужно сначала восстановить полную копию базы, затем все копии журналов транзакций, определив параметр "stopat 9:30" для последней (десятичасовой) копии журнала транзакций.
Технически это правильно, но тогда придется восстановить 11 файлов копий журнала и базы. Можно сделать это значительно проще, используя дифференциальные копии. В следующем примере мы добавим создание дифференциальной копии в 8 часов. Теперь для восстановления базы данных на состояние в 9:30, нам придется восстановить только 4 файла: полную копию базы, дифференциальную и затем копии журналов транзакций, сделанные в 9 и 10 часов.
Дифференциальные копии можно создавать и чаще, что позволит восстановить базу на любой момент времени после последнего разностного бэкапа.
Возьмем предыдущий пример и расширим задачу. Добавим создание второй дифференциальной копии в 17 часов, продолжим делать ежечасно копии журнала транзакций. Тогда для восстановления базы данных на 17:30 нужно будет восстановить последнюю, полную копию базы, затем вторую дифференциальную копию (она включает в себя предыдущую разностную копию) и копию журнала транзакций, созданную в 18:00, с параметром "stopat 17:30".
В приведенном выше примере нам пришлось восстановить только 3 файла. Без использования дифференциальной копии, мы вынуждены были бы восстанавливать все копии журнала транзакций, созданные с 1:00 до 18:00, итого 19 файлов.
расписание бэкапов
Я выбрал значения 8:00 и 17:00 для дифференциального копирования в вышеприведенном примере, потому что они более или менее определяют обычный рабочий день. Разумеется, время выполнения резервного копирования у вас должно быть продиктовано вашими собственными условиями.
Запомните — вам по прежнему всегда нужно делать копии журнала транзакций!
Дифференциальное копирование не дает возможности восстановить базу до состояния на определенный момент времени, таким образом, в вышеприведенных примерах, если мы хотим восстановить базу на 4:00 , нужно восстановить копию базы данных и последовательность журналов транзакций до 4 часов. Дифференциальная копия, созданная в 5 часов содержит нужные нам данные, но поскольку ее внутренняя структура отличается от журнала транзакций, невозможно ее использовать для восстановления базы на определенный момент времени.
Neil Boyle, перевод Ирины Наумовой.
что такое дифференциальное копирование?
Дифференциальная копия — это запись всех страниц, в которых были сделаны изменения с момента последней, полной копии. Отличие от резервного копирования журнала транзакций в том, что в разностную копию всегда включаются все изменения, произошедшие с момента создания последней, полной копии базы данных. Таким образом, если у вас имеется две дифференциальные копии, одна из которых сделана позже второй, то последняя копия содержит первую и все последующие изменения.
Если вы сделали последовательно две копии журнала транзакций, то вторая содержит только изменения, сделанные после создания первой копии журнала.
разработка эффективной стратегии резервирования
Самый простой путь для обеспечения возможности восстановления базы данных на любой момент времени — это регулярное создание копий журнала транзакций. При этом нужно будет восстановить копию базы данных и последовательность копий журнала транзакций до заданного момента времени.
Например, полная копия базы выполняется в полночь, а журнал транзакций резервируется каждый час. Для восстановления базы данных в ее состояние на 9:30 нужно сначала восстановить полную копию базы, затем все копии журналов транзакций, определив параметр "stopat 9:30" для последней (десятичасовой) копии журнала транзакций.
Технически это правильно, но тогда придется восстановить 11 файлов копий журнала и базы. Можно сделать это значительно проще, используя дифференциальные копии. В следующем примере мы добавим создание дифференциальной копии в 8 часов. Теперь для восстановления базы данных на состояние в 9:30, нам придется восстановить только 4 файла: полную копию базы, дифференциальную и затем копии журналов транзакций, сделанные в 9 и 10 часов.
Дифференциальные копии можно создавать и чаще, что позволит восстановить базу на любой момент времени после последнего разностного бэкапа.
Возьмем предыдущий пример и расширим задачу. Добавим создание второй дифференциальной копии в 17 часов, продолжим делать ежечасно копии журнала транзакций. Тогда для восстановления базы данных на 17:30 нужно будет восстановить последнюю, полную копию базы, затем вторую дифференциальную копию (она включает в себя предыдущую разностную копию) и копию журнала транзакций, созданную в 18:00, с параметром "stopat 17:30".
В приведенном выше примере нам пришлось восстановить только 3 файла. Без использования дифференциальной копии, мы вынуждены были бы восстанавливать все копии журнала транзакций, созданные с 1:00 до 18:00, итого 19 файлов.
расписание бэкапов
Я выбрал значения 8:00 и 17:00 для дифференциального копирования в вышеприведенном примере, потому что они более или менее определяют обычный рабочий день. Разумеется, время выполнения резервного копирования у вас должно быть продиктовано вашими собственными условиями.
Запомните — вам по прежнему всегда нужно делать копии журнала транзакций!
Дифференциальное копирование не дает возможности восстановить базу до состояния на определенный момент времени, таким образом, в вышеприведенных примерах, если мы хотим восстановить базу на 4:00 , нужно восстановить копию базы данных и последовательность журналов транзакций до 4 часов. Дифференциальная копия, созданная в 5 часов содержит нужные нам данные, но поскольку ее внутренняя структура отличается от журнала транзакций, невозможно ее использовать для восстановления базы на определенный момент времени.
Neil Boyle, перевод Ирины Наумовой.
Сетевые решения. Статья была опубликована в номере 09 за 2003 год в рубрике sysadmin