레이블이 Azure Toolkit인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Azure Toolkit인 게시물을 표시합니다. 모든 게시물 표시

2018년 8월 21일 화요일

Sitecore Migration - Data Migration Assistant 사용하기

이전에 포스트 하였던 Sitecore Migration의 두번째로 필자가 경험하였던 문제에 대하여 이야기를 하고자한다.

Sitecore Migration은 사이트코어의 새로운 버전이 나올때마다, 개발자 또는 설계자들은 "어떻게 하면 가장 쉽고 안정적인 방식으로 데이타의 손실없이 Migration을 할수가 있을까?"가 첫번째의 과제이다. 그 다음으로는 기존에 사용하였던 방식 또는 설정들이 얼마나 새로운 버전에서 잘 호환되고 작동되는지를 눈여겨 봐야한다.

이번 포스트는 필자가 생각하는 데이터의 손실없이 가장 손 쉬운 방법으로 Migration하는것에 대하여 알아보도록 하겠다.

먼저, 이전에 사용해보았던, Sitecore Azure ToolKit은 Sitecore Azure Deployment의 목정으로써, Sitecore On-Prem Instance를 Azure Cloud로 Deploy를 할수가 있다. 패키지를 Powershell Script을 통하여 만드는데, 작업 시스템의 환경에 땨라 제한이 있을수 있다. (필자의 경우, 시스템에서 2GB의 패키지 제한이 있어, 기존 데이타를 포함 약 6GB에 해당되는 Sitecore Instance를 패키지하기에는 한계가 있었다.) 이로, 새로운 방법으로 Sitecore에서 추천한 SSMS (SQL Server Management Studio)을 사용하는것이다. SSMS에서 Azure SQL를 컨넥하고, 백업된 DB를 Import하는 방식인데, 이 역시 기존 Master DB의 테이블들을 백업하는데 무리가 있었다.

그래서 결론은 Data Migration Assistant (DMA).

DMA는 Microsoft에서 오피셜로 제공하며, 이는 기존 DB (Source)를 다른 DB (Target)으로 분석 및 검증과 함께 데이타베이스를 Migration할수가 있다. 아래는 필자가 DMA를 사용하여 Sitecore Migration을 한 진행과정을 나열하였다.
  1. 로컬머신에 Azure에 존재하는 같은 버전의 Sitecore Instance를 설치한다.
  2. SSMS에서 Azure SQL의 Master DB를 컨넥하고, 아래의 Statement를 적용하여 해당 테이블의 데이터를 모두 삭제한다. (반드시, 기존의 데이터는 백업을 미리해둔다.)

    truncate table AccessControl;
    truncate table Archive;
    truncate table ArchivedFields;
    truncate table ArchivedVersions;
    truncate table ArchivedItems;
    truncate table Blobs;
    truncate table ClientData;
    truncate table Descendants;
    truncate table EventQueue;
    truncate table History;
    truncate table IDTable;
    truncate table Links;
    truncate table Notifications;
    truncate table Properties;
    truncate table PublishQueue;
    truncate table SharedFields;
    truncate table Tasks;
    truncate table UnversionedFields;
    truncate table VersionedFields;
    truncate table WorkflowHistory;
    truncate table Items;
    
  3. DBA에서 소스/타켓 데이타베이스를 정하고, Migration을 시작한다.





  4. FTP를 통하여 Azure App Service에 연결하고, Custom 어플리케이션 또는 Config 파일들을 매뉴얼로 복사한다. (CMS / CDS if needs)
  5. Azure에서 App Service를 Restart한다.
  6. Sitecore CMS에 로그인하여 잘 작동(?)되는지 확인한다.
  7. Master DB만 Migration을 한 관계로, 혹 Core DB에서 Custom 업데이트가 있다면 사이트코어 CMS에서 패키지를 만들어 인스톨한다.
  8. 사이트코어 컨트롤 패널에서 "Clean up Databases"를 실행한다.
  9. 사이트코어 컨트롤 패널에서 "Rebuild Link DB"를 실행한다.
  10. 사이트코어 컨트롤 패널에서 "Rebuild Indexes"를 실행한다.
  11. 사이트코어 컨트롤 패널에서 "Deploy Marketing Definitions"을 실행한다.
  12. 사이트코어 컨트롤 패널에서 "Rebuild Link DB"를 실행한다.
  13. "Publish the site"를 통하여 Web DB로 컨텐츠를 Publish 한다.

DBA를 통하여 사이트코어 Migration을 하는데 아무런 문제없이 잘 진행될수있었다.



2018년 1월 23일 화요일

Sitecore Migration - Azure Toolkit Error

이전 포스트에 얘기한것 처럼, 회사에서 Sitecore On-Prem을 Azure로 Migration 진행중이다.

먼저, 기존 On-Prem에 사용하던 데이타 (Sitecore 8.0 U5)를 새로운 버전 (Sitecore 9.0.0) 으로 Migration을 해야하는데 서버 및 데이타베이스 환경이 틀리다보니, 기존의 데이타 Deployment Package를 생성하여야한다. Azure Deployment Package는 사이트코어의 Azure Deployment Toolkit를 이용하여 생성할수있는데, 그 이전에 로컬환경에 Sitecore 9.0 (XP0)을 설치하고 기존 데이터를 Sitecore Expression Migration Tool 3.1을 사용하여 로컬 Siteocre 9.0로 Migration 한다. 로컬에서 Migration이 성공적으로 끝나며, Deployment 패키지를 Azure ToolKit을 이용하여 생성하면 되는데, 여기서 하나의 문제점이 생겼다.

아래의 스크린샷에 보이는 것처럼, PowerShell에서 패키지를 생성하는 도중 "The file is too long. This operation is currently limited to supporting files less than 2 gigabytes in size." 라는 오류가 발생하였다. 



Sitecore의 Flash Installtion의 사이즈가 얼마나 될지는 모르겠지만, Migration되어진 데이터는 족히 6GB는 넘는것으로 보인다. 몇일동안의 리서치와 테스팅 결과 솔루션이 찾지 못하였고, Siteocre Support Ticket을 만들어 Auzre ToolKit 이슈에 대하여 보고하였다.

몇일후, 사이트코어로 부터 답변을 받았고 이 이슈는 ToolKit의 오류로 확인되었으며, 사이코어에서 문제를 해결하고 있다고한다. 그리고 그 대안의 방법으로 SQL Server Management Studio을 사용하여 Sitecore의 Azure Database를 컨넥하고 Database를 Migration한다. Configuration 및 Assemblies 파일들은 수동의 옮겨야한다.

  1. Using Sitecore Azure Marketplace, deploy a clean solution to Azure: https://azuremarketplace.microsoft.com/en-us/marketplace/apps/Microsoft.AppSvc_SiteCore_IFrame
  2. Using FTP access, copy custom file-based content to your solution
  3. In the Azure SQL Server firewall, allow access for your IP address, via Azure Portal
  4. Connect to Azure SQL databases using the SQL Server Management Studio and restore your databases on top of clean ones As a result, you should get a customized solution (with all your files) that contains the custom content (your databases).

모든 과정이 끝나면, 반드시 Sitecore.config 파일에서 Temp Folder 경로가 제대로 설정되어있는지 확인 후, "Rebuild Indexes" 와 "Rebuild Link Databases" 작업을 사이트코어 Control Panel에서 수행하여야 한다.