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을 하는데 아무런 문제없이 잘 진행될수있었다.