Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекция №21

.docx
Скачиваний:
37
Добавлен:
03.02.2015
Размер:
536.9 Кб
Скачать

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

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

Определяя, какие из данных подлежат распределению, следует учитывать следующие факторы:

  • Допустимая задержка поступления данных.Как часто изменяются данные? Насколько часто эти изменения необходимо загружать на получатели?

  • Редактирование. Кому необходим допуск к изменению данных? Нужно ли объединять модификации?

  • Общий доступ к данным.Вам нужно пересылать только сегмент данных или всю базу данных?

  • Безопасность.Уязвимы ли ваши данные?

В лекциях 4-5 мы научились использовать T-SQL для резервного копирования и восстановления баз данных. В данной лекции будет рассмотрено четыре метода переноса данных SQL Server 2005, в том числе, резервное копирование с последующим восстановлением. Каждый метод имеет свои сильные и слабые стороны, и каждый подходит для переноса определенного типа данных. Вот эти четыре метода:

  • Резервное копирование и восстановление

  • Отсоединение и присоединение

  • Репликация

  • Службы интеграции SQL Server (SSIS)

Чтобы использовать некоторые из этих методов, нужно запустить мастер; о мастерах также рассказывается в соответствующих разделах. Службы SSIS и агент SQL Server также можно использовать для планирования и автоматизации выбранного вами метода; об этой методике рассказывает последний раздел данной лекции.

При описании этих методов термин "целевой сервер" мы будем использовать для обозначения системы, на которую перемещаются данные. Термин "сервер-источник" используется для обозначения системы, которая является источником перемещаемых данных. Во всех примерах в этой лекции в качестве исходной используется база данных Adventure Works, которая выполняется на экземпляре SQL Server по умолчанию. Конечным сервером будет именованный экземпляр "target" на том же сервере. Мы будем использовать различные целевые серверы, чтобы проиллюстрировать возможные варианты переноса данных в соответствии с различными требованиями.

Как конвертировать базу данных из SQL Server 2000 в SQL Server 2005

Для обновления базы данных посредством копирования на сервер с установленным пакетом SQL Server 2005 можно воспользоваться одним из следующих методов:

  • Резервное копирование и восстановление

  • Отсоединение и присоединение

  • Мастер копирования базы данных

Прежде чем вступить на путь обновления, запустите средство Microsoft SQL Server 2005 Upgrade Advisor и ознакомьтесь с рекомендациями SQL Server 2005 Upgrade Handbook. Оба этих ресурса доступны для бесплатной загрузки на сайте www.microsoft.com/sql.

Использование резервного копирования и восстановления для переноса данных

Как? Использовать резервное копирование и восстановление в качестве метода переноса данных. Конечно! Одно из главных преимуществ использования резервного копирования заключается в том, что оно оказывает минимальное влияние на работу системы. Резервное копирование - это рутинная операция, которая позволяет продолжать ведение бизнеса во время ее выполнения. Существует три типа резервных копий, которые можно использовать, каждая из них может подойти в какой-либо ситуации. Эти три типа - полная резервная копия, разностная резервная копия базы данных и резервная копия журнала транзакций. Подробная информация о каждом из этих типов и об их использовании приводится в лекциях 4-5.

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

При восстановлении базы данных следует иметь в виду несколько параметров. Во-первых, нужно знать, какой вид восстановления вы собираетесь выполнить. Если вы используете разностные резервные копии и резервные копии журнала транзакций, то придется восстанавливать фрагменты в определенной последовательности. Используйте параметр NO RECOVERY, чтобы сообщить SQL Server, что есть еще фрагменты, которые нужно восстановить. Используйте параметр RECOVERY, чтобы сообщить SQL Server, что вы закончили восстановление данных до желательной точки.

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

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

Только полная резервная копия

Существует два способа настроить резервное копирование. Вы можете написать сценарии сами или воспользоваться SQL Server Management Studio. Мы продемонстрируем обе методики.

Примечание. Имейте в виду, что в среде SQL Server Management Studio можно воспользоваться кнопкой Script (Сценарий), чтобы сгенерировать сценарий для дальнейшего использования.

Создаем резервную копию при помощи SQL Server Management Studio

  1. В меню Start (Пуск) выберите All Programs,. Microsoft SQL Server 2005, SQL Server Management Studio (Все программы, Microsoft SQL Server 2005, Среда SQL Server Management Studio).

  2. В панели Object Explorer (Обозреватель объектов) щелкните правой кнопкой мыши на базе данных, резервную копию которой нужно создать. В контекстном меню выберите команды Tasks, Back Up (Задачи, Создать резервную копию). При этом откроется следующее диалоговое окно:

увеличить изображение

  1. В этом диалоговом окне выберите Backup Type (Тип резервной копии) Full (Полная). Здесь можно также задать свойства Backup Set (Резервного набора данных). Дополнительную информацию по этим настройкам и их использованию см. в Электронной документации по SQL Server 2005.

Укажите свойства в разделе Destination (Назначение), нажав кнопку Add (Добавить). При этом откроется следующее диалоговое окно:

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

Предупреждение. Будьте особенно осторожны, если используете для резервной копии путь в формате UNC. Это может снизить производительность резервного копирования, а в SQL Server 2000 возможно также снижение общей производительности сервера. Обязательно протестируйте влияние резервного копирования на производительность, прежде чем реализуете его в производственных условиях.

Примечание. Теперь можно нажать кнопку Script (Сценарий) в диалоговом окне Back Up Database (Резервное копирование базы данных) и получить сгенерированный сценарий в окне New Query (Новый запрос). Следующий сценарий был создан в нашем примере; его также можно найти в файлах примеров под именемFullBackupScript.sql.

BACKUP DATABASE [AdventureWorks] TO DISK =

N'C:\Program Files\Microsoft SQL Server\

MSSQL.1\MSSQL\Backup\AdvWorks20060301.bak'

WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10

GO

  1. Указав путь, нажмите кнопку ОК. Затем нажмите кнопку ОК в диалоговом окне Backup Database (Резервное копирование базы данных). При этом в указанном файле будет создана резервная копия базы данных

  2. Далее нужно выполнить восстановление базы данных. В панели Object Explorer сервера-адресата щелкните правой кнопкой мыши папку базы данных и выберите из контекстного меню пункт Restore Database (Восстановить базу данных). При этом откроется следующее диалоговое окно:

увеличить изображение

  1. Укажите имя базы данных в диалоговом окне Restore Database (Восстановление базы данных).

  2. Затем выберите источник, как показано ниже. Для нашего примера выберите From Device (С устройства). Задайте путь к резервной копии, щелкнув кнопку построителя выражений и настройки свойств в диалоговом окне. Из раскрывающегося списка Backup Media (Носитель резервной копии) выберите File (Файл). Нажмите кнопку Add (Добавить) и укажите путь к файлу, в который была записана резервная копия. После того, как все действия будут выполнены, нажмите кнопку OK.

  1. Затем выберите набор резервных данных для восстановления, установив флажок в столбце Restore (Восстановить) рядом с созданным вами набором (в данном случае, файлом).

  2. Теперь выберите в панели Select A Page (Выбор страницы) диалогового окна Restore Database (Восстановление базы данных) страницу Options (Параметры), как показано ниже. Здесь нужно будет задать параметры восстановления. Если планируется перезаписывать базы данных на целевом сервере на регулярной основе, то следует установить флажок Overwrite The Existing Database (Перезаписать существующую базу данных).

увеличить изображение

  1. Далее, нужно указать пути к файлам базы данных на целевом сервере. Если вы не установили флажок Overwrite The Existing Database (Перезаписать существующую базу данных), то нужно создать новое имя файла в разделе Restore The Database Files As (Восстановить файлы базы данных как), нажав кнопку построителя выражений. (Если вы создаете копию базы данных, убедитесь в том, что дали базе данных новое имя на странице General (Общие) диалогового окна Restore Database (Восстановление базы данных).

  2. В завершение выберите первый вариант, RESTORE WITH RECOVERY, в секции Recovery State (Состояние восстановления). Этот параметр используется при полных восстановлениях базы данных, поскольку позволяет приступить к ее использованию сразу после восстановления. Другие варианты используются в тех случаях, когда при восстановлении используются дополнительные файлы резервных копий.

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

RESTORE DATABASE [AdventureWorks2]

FROM DISK = N'C:\Program Files\Microsoft SQL Server\

MSSQL.1\MSSQL\Backup\AdvWorks20060301.bak'

WITH FILE = 1,

MOVE N'AdventureWorks_Data' TO N'C:\Program Files\Microsoft SQL

Server\

MSSQL.1\MSSQL\Data\AdventureWorks_Data2.mdf',

MOVE N'AdventureWorks_Log' TO N'C:\Program Files\Microsoft SQL

Server\

MSSQL.1\MSSQL\Data\AdventureWorks_Log2.ldf',

NOUNLOAD, REPLACE, STATS = 10

  1. Для завершения восстановления базы данных нажмите кнопку ОК.

Резервное копирование всех пользовательских баз данных при помощи инструкций T-SQL

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

Данный код создает резервные копии всех пользовательских баз данных. Измените этот сценарий так, чтобы он лучше удовлетворял вашим требованиям. Обратите внимание на то, что некоторые строки разбиты из-за их длины.

declare @DatabaseName varchar(300)

,@BackupSQL varchar(8000)

,@Timestamp varchar(30)

,@DirectoryPath varchar(2000)

,@FullPath varchar(2500)

,@RecoveryModel int

set @DirectoryPath = "D:\MSSQL\BACKUP\"

-создаем временную метку для имени файла резервной копии

set @TimeStamp = convert(varchar, getdate(),112) +

replace(convert(varchar, getdate(),108),':','')

-извлекаем только пользовательские базы данных

declare Database_Cursor cursor for

select d.name

from sys.databases d

where d.name not in("master",'tempdb','model','msdb')

open Database_Cursor

fetch next from Database_Cursor

into @DatabaseName

while @@fetch_status = 0

begin

set @FullPath = ""

set @FullPath = @DirectoryPath + @DatabaseName

exec sys.xp_create_subdir @FullPath

set @BackupSQL = ""

set @BackupSQL = @BackupSQL + "BACKUP DATABASE "+

@DatabaseName + "TO DISK = N'" +

@FullPath + "\" +

@DatabaseName + "_" +

@TimeStamp + ".bak"'

WITH NOFORMAT, NOINIT, SKIP'

exec (@BackupSQL)

-создаем резервные копии журнала транзакций

select @RecoveryModel = d.recovery_model

from sys.databases as d

where d.name = @DatabaseName

-только резервные копии журналов транзакций тех баз данных, для которых выбрана модель восстановления Full

if @RecoveryModel = 1

begin

set @BackupSQL = ""

set @BackupSQL = @BackupSQL + "BACKUP LOG "+

@DatabaseName + "TO DISK = N'" + @FullPath + "\" +

@DatabaseName + "_" + @TimeStamp + ".trn"'

WITH NOFORMAT, NOINIT, SKIP'

exec(@BackupSQL)

end

fetch next from Database_Cursor

into @DatabaseName

end

close Database_Cursor

deallocate Database_Cursor

Полная резервная копия, разностная резервная копия и резервные копии журнала транзакций

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

Создаем разностную резервную копию

  1. Повторите действия с 1 по 5 для создания полной резервной копии, но в пункте 3 задайте Backup Type (Тип резервной копии) Differential (Разностная). В разностной резервной копии будут отражены все изменения, которые были сделаны после создания последней полной резервной копии базы данных.

  2. Следующие действия, которые надо выполнить для восстановления данных из полной резервной копии, совпадают с описанными выше (пункты 6-13), с единственным отличием - необходимо выбрать для Recovery State (Состояние восстановления) вариант RESTORE WITH NORECOVERY (пункт 12). Благодаря этому база данных останется в неиспользуемом состоянии. В панели Object Explorer (Обозреватель объектов) база данных будет помечена зеленой стрелкой и словом "(Restoring)" (Восстановление из копии) Эту базу данных нельзя будет использовать до завершения процесса восстановления работоспособности.

  3. Далее, восстановим данные из разностной резервной копии базы данных, щелкнув правой кнопкой мыши на восстанавливаемой базе данных и выбрав из контекстного меню команды Task, Restore, Database (Задачи, Восстановить, База данных). В открывшемся диалоговом окне Restore Database (Восстановление базы данных) выберите только что созданную разностную резервную копию и параметр состояния восстановления RESTORE WITH RECOVERY. Нажмите кнопку OK, и база данных будет готова к использованию по завершении операции восстановления.

Создаем резервную копию журнала транзакций

  1. Как и раньше, начните с описанного выше создания полной резервной копии базы данных. При желании можно использовать также разностную резервную копию. Убедитесь, что выбрана модель восстановления FULL. Дополнительную информацию о моделях восстановления можно найти в лекциях 4-5.

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

  1. Снова откройте диалоговое окно Backup Database (Резервное копирование базы данных), как описано в пункте 2 раздела "Создание резервной копии через интерфейс SQL Server Management Studio" этой лекции. Здесь нужно изменить Backup Type (Тип резервной копии) на Transaction Log (Журнал транзакций). Остальные настройки такие же, как и в предыдущем примере.

Совет. Обычно для полных и разностных резервных копий используется расширение имени файла .bak, а для резервных копий журнала транзакций - расширение имени файла .trn.

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

  2. Затем восстановите данные из полной резервной копии. Как и при восстановлении данных из разностной резервной копии, нужно выбрать для состояния восстановления вариантRESTORE WITH NORECOVERY.

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

Как видите, это диалоговое окно не отличается от обычного окна Restore (Восстановление). Единственная дополнительная настройка – это Restore To (Восстановить в) в нижней части диалогового окна. Для всех примеров используйте вариант Point In Time (На момент времени). Выделите первую резервную копию в цепочке журналов, задав для Recovery State (Состояние восстановления) параметр RESTORE WITH NORECOVERY. Нажмите кнопку ОК, чтобы восстановить данные из этой резервной копии.

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

  1. Теперь восстановим вторую резервную копию журнала транзакций. На этот раз для Recovery State (Состояния восстановления) выберем параметр RESTORE WITH RECOVERY, благодаря чему база данных после восстановления будет в рабочем состоянии.

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

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

Соседние файлы в предмете Безопасность систем баз данных