Исходные данные: есть конфигурация Lync Server Enterprise. Базы данных расположены на отдельном SQL Server. Развернуто 2 Front End, развернут Archieving, Monitoring, которые держат базы на том же сервере SQL.
Задача: перенести данные со старого физического сервера SQL на новый с минимальным простоем сервисов. При этом старый SQL Server версии 2008 r2, а новый будет SQL 2012
Самый простой вариант, который приходит в голову: скопировать через Backup - Restore базы данных средствами SQL Server, затем присвоить новому серверу имя старого. Этот вариант мне не понравился по нескольким причинам, во-первых, нужно будет вручную переносить все базы данных, во-вторых для начала выключить все сервера Lync и во время переноса они работать не будут. В третьих, возможно, что-то не запустится, что затянет перенос. Да и ручные операции над базами данных чреваты возможностью их дальнейшей неработоспособностью. Поэтому лучше использовать средства Lync Server
Согласно документации вот список файлов баз данных, взятый отсюда: SQL Server Data and Log File Placement
Файлы данных и журналов для центрального хранилища управления
Файлы базы данных управления | Назначение файла данных или журнала |
---|---|
Xds.ldf | Файл журнала транзакций для управления |
Xds.mdf | Служит для хранения конфигурации текущей топологии Lync Server 2013, определенной и опубликованной с помощью топологий |
Lis.mdf | Файл данных информирования о местонахождении |
Lis.ldf | Журнал транзакций для файла данных информирования о местонахождении |
Файлы данных и журналов для пользователей, конференц-связи и адресной книги
Основные файлы базы данных Lync Server 2013 | Назначение файла данных или журнала |
---|---|
Rtc.mdf | Сохраняемые пользовательские данные (например, списки управления доступом (ACL), контакты, планируемые конференции) |
Rtc.ldf | Журнал транзакций для данных Rtc |
Rtcdyn.mdf | Служит для хранения промежуточных пользовательских данных (данные времени выполнения для присутствия) |
Rtcdyn.ldf | Журнал транзакций для данных Rtcdyn |
Rtcab.mdf | База данных адресной книги для связи в режиме реального времени (RTC) — это репозиторий SQL Server, в котором хранятся данные службы адресной книги. |
Rtcab.ldf | Журнал транзакций для службы адресной книги |
Rtclocal.mdb | Служит для размещения каталога конференций |
Rtcxds.mdf | Служит для хранения резервной копии пользовательских данных |
Rtcxds.ldf | Журнал транзакций для данных Rtcxds |
Файлы данных и журналов для Парковки вызовов и группы ответа
База данных приложения | Назначение файла данных или журнала |
---|---|
Cpsdyn.mdf | Динамическая база данных для приостановки вызовов |
Cpsdyn.ldf | Журнал транзакций для файла данных приостановки вызовов |
Rgsconfig.mdf | Файл данных службы группы ответа Lync Server для настройки служб |
Rgsconfig.ldf | Файл журнала транзакций для конфигурации "Группа ответа" |
Rgsdyn.mdf | Файл данных службы группы ответа для выполняемых операций |
Rgsdyn.ldf | Журнал транзакций для файла данных времени выполнения, связанных со службой группы ответа |
Файлы данных и журналов для сервера архивации и мониторинга
Файлы базы данных архивации и мониторинга | Назначение файла данных или журнала |
---|---|
LcsCdr.mdf | Хранилище данных для регистрации вызовов (CDR) мониторинга |
LcsCdr.ldf | Журнал транзакций для данных регистрации вызовов (CDR) |
QoEMetrics.mdf | Файл данных качества взаимодействия, сохраняемых из мониторинга |
QoEMetrics.ldf | Журнал транзакций для данных мониторинга |
Lcslog.mdf | Файл данных для хранения мгновенных сообщений и конференций в архивации |
Lcslog.ldf | Журнал транзакций для данных архивации |
Т.е. при переносе вручную ни одну нельзя забыть.
На мой взгляд самым безболезненным должен быть вариант создания зеркальной базы данных, как написано здесь:
Deploying SQL Mirroring for Back End Server High Availability
Однако, этот вариант может быть использован только в случае, если старый SQL Server той же версии, что и новый, что не наш случай.
Поэтому воспользуемся другими встроенными средствами Lync Server, такими как Tolopogy Builder и Management ShellОбщий порядок действий такой:
- Установить новый SQL сервер на отдельном сервере, создать новый Instance и дать необходимые права для установки
- Создать новое место для хранения общих файлов File Share
- Добавить в топологию новый SQL Server и новое место для хранения файлов
- Сделать копию.
- Переключить архивацию и мониторинг на новое место хранения
- Перенести Центральное хранилище
- Перенести базы данных сервисов Front End
- Восстановить данные
- Очистка топологии от старых данных
1.Установить новый SQL сервер на отдельном сервере, создать новый Instance и дать необходимые права для установки
Поскольку у нас SQL Server используется у нас не только для хранения данных Lync Server, то чтобы точно никто никому не мешал, я создал новый Instance и назвал его RTC2. По аналогии с RTC, которые создается по умолчанию при установке к примеру Lync Standard. Обязательно устанавливаем Reporting Service, поскольку он нам понадобится для Мониторинга
На SQL Instancе даем полные административные права пользователю, от имени которого будет остуществляться установка. Сам пользователь должен входить в группу администраторов Lync Server, можно дать такие, как написано здесь , у меня входил в группу CSAdministrator
2.Создать новое место для хранения общих файлов File Share
Также на новом сервере будут находится общие файлы. Описание конфигурирования File Storage находится здесь
3.Добавить в топологию новый SQL Server и новое место для хранения файлов
При помощи Topology Builder добавляем новый SQL в общие компоненты и новое хранилище даннх в и хранилище данных в и публикуем топологию.
4.Сделать копию
Теперь самое время сделать копии. Для этого запускаем Lync Management Shell с правами администратора (!) и делаем экспорт
Центральное хранилище:
Export-CsConfiguration -FileName "C:\Config.zip"Информация о месторасположении
Export-CsLisConfiguration -FileName "C:\LisConfig.zip"Информация сохраняемого чата (если чат установлен)
Export-CsPersistentChatData-DBInstance "sql1.resource.nk\rtc2" -FileName "C:\PersistentChatData.zip"Информация о группах ответа
Export-CsRgsConfiguration -Source "ApplicationServer:ls-pool2.resource.nk" -FileName "C:\Rgs.zip"Пользовательские данных конференций
Export-CsUserData -PoolFqdn "ls-pool2.resource.nk" -FileName "C:\ExportedUserData.zip"
5.Переключить архивацию и мониторинг на новое место хранения
Через построитель топологии переключить Archieving и Monitoring на новое хранилище данных. К сожалению, средствами Lync Server старые данные нет возможности перенести, т.е. в моем случае при переезде на новый сервер история начинается заново. После публикации топологии, необходимо перезапустить каждый из серверов Front End для активации изменений.6. Перенести Центральное хранилище
Через Topology Builder переключить базу данных пула невозможно. Необходимо использовать командную консольДля получения информации о центральном хранилище можно использовать следующие команды
Get-CsConfigurationStoreLocation
Get-CsManagementConnection
Get-CsManagementStoreReplicationStatus
Перед началом пененоса необходимо убедиться, что репликации центрального хранилища прошли на всех серверах.
Перенос центрально хранилища осуществляется при помощи команды Move-CsManagementServer
Описание здесь: http://technet.microsoft.com/en-us/library/gg412921%28v=ocs.15%29.aspx
Неудача при переносе может привести центральное хранилище в неработоспособное состояние, поэтому необходима предварительная подготовка.
К сожалению, перенести центральное хранилище можно только в другой пул. Т.е. предварительно необходимо создать новый пул, перенести туда хранилище, а затем перенести хранилище на новый сервер в старый пул. Для простоты можно использовать пул Standard.
В моем случае
Начальная конфигурация | Промежуточный пул | Конечная конфигурация |
пул Ent: ls-pool2.resource.nk SQL:sql1.resource.nk\rtc2 | пул Std lync.resource.nk SQL: lync.resource.nk\rtc | пул Ent: ls-pool2.resource.nk SQL:data.resource.nk\rtc2 |
Через построитель топологии создаем новый пул. В моем случае lync.resource.nk, публикуем топологию.
Затем запускаем мастер развертывания на новом сервере.
Первое что нужно сделать - запустить подготовку сервера Standard Edition. После чего будет создана локальная база данных. Далее провести полную установку, согласно руководства http://technet.microsoft.com/en-us/library/gg398827.aspx
После успешной установки и успешного запуска всех сервисов (важно!) необходимо создать пустое центральное хранилище на новом сервере
Install-CsDatabase -CentralManagementDatabase -SqlServerFqdn lync.resource.nk -SqlInstanceName rtc -Clean -UseDefaultSqlPathПроверьте еще раз, что топология публикуется без ошибок (запустите Enable-CsTopology), что все сервисы на новом сервере работают и репликация центрального хранилища данных успешно завершена на всех серверах, что достаточно места для переноса.
Запустите команду для нового сервера
Move-CsManagementServer -ConfigurationFileName "C:\Config.zip" -LisConfigurationFileName "C:\LisConfig.zip" -Force -TargetFqdn lync.resource.nkПосле успешного завершения, дождитесь репликации ( проверить Get-CsManagementStoreReplicationStatus)
7. Перенести базы данных сервисов Front End
Теперь центральное хранилище данных находится в новом пуле, и можно переключить базы данных в основном пуле на новый сервер.Загрузите топологию в Topology Builder и измените ассоциацию базы данных в вашем пуле на новое расположение. Теперь кнопка выбора базы данных для пула будет доступна.
Запустите поочередно(!) на каждом сервере основного пула локальную установку для принятия изменений ассоциации базы данных. После установки перезагрузите сервер и когда он запустится, переходите к следующему в пуле FE. Если есть чат сервер, то на нем также необходимо запустить локальную установку, после чего перезагрузить.
Проверьте работоспособность.
Теперь можно переносить центральное хранилище на новый сервер SQL
Запустите установку пустой базы данных на новом сервере
Install-CsDatabase -CentralManagementDatabase -SqlServerFqdn data.resource.nk -SqlInstanceName rtc2 -Clean -UseDefaultSqlPathОпубликуйте топологию (запустите Enable-CsTopology)
Перенесите центральное хранилище
Move-CsManagementServerЕсли дать команду без параметров, то Lync Server сам подставит данные взятые из последнего переноса, если подставил не так как нужно, то придется указать целевой пул в параметрах. После переноса центрального хранилища, промежуточный сервер нам больше не нужен.
8. Восстановить данные
Теперь можно импортировать данные..
Import-CsPersistentChatData-DBInstance "data.resource.nk\rtc2" -FileName "C:\PersistentChatData.zip"
Import-CsRgsConfiguration -Destibation "ApplicationServer:ls-pool2.resource.nk" -FileName "C:\Rgs.zip"Import-CsUserData -PoolFqdn "ls-pool2.resource.nk" -FileName "C:\ExportedUserData.zip"
9. Очистка топологии от старых данных
После этого можно из Topology Builder удалить все упоминания о старом SQL Server, А также удалить промежуточный сервер Standard и опубликовать топологию.
Правда перед удалением, пришлось подчистить каталоги конференций
Get-CsConferencingDirectory
Remove-CsConferenceDirectory -Identity 13
Готово, теперь Lync Server работает c новым SQL сервером.