SharePoint 팜의 데이터베이스 서버를 변경 하는 방법

요약

SharePoint 팜에서는 SQL Server를 실행 하는 한 서버에서 다른 서버로 데이터베이스를 마이그레이션해야 할 수 있습니다. SharePoint 설치 중에 SQL Server 클라이언트 별칭을 사용 하지 않거나, 보안 침해 후와 같이 여러 가지 이유로 인해 데이터베이스 서버 이름을 바꿔야 하는 경우이 문서의 단계에 따라 데이터베이스 서버를 변경 합니다.

적절 한 계획과 고가용성을 통해 모든 서비스를 중지 하지 않고도 프로덕션 환경에서 이러한 단계를 수행할 수 있습니다.

데이터베이스 서버 변경

이 문서에서는 모든 SharePoint 데이터베이스가 단일 SQL Server 인스턴스에서 호스트 되는 것으로 가정 합니다. 다음 단계에 따라 환경에 필요한 매개 변수를 조정 합니다.

시작 하기 전에 단계를 수행할 때 SharePoint 팜에 액세스할 수 없는 경우 문제 해결을 위해 구성 데이터베이스의 백업을 만듭니다.

중요

시작 하기 전에이 작업 계획을 이해 하 고 있어야 합니다. SharePoint 팜에 액세스할 수 없거나 구성 데이터베이스가 손상 되 면 최신 팜 백업에서 기능을 복원 해야 합니다.

1 단계: 팜의 모든 SharePoint 서버에 새 SQL 별칭 만들기

이렇게 하려면 다음 단계를 따르세요.

  1. 다음 그룹의 구성원 인 사용자 계정을 사용 하 고 있는지 확인 합니다.
    • Administrators 그룹
    • db_owner 고정 데이터베이스 역할
  2. SQL Server 클라이언트 네트워크 유틸리티 (cliconfg)를 시작 합니다. 이 유틸리티는 일반적으로 C:\Windows\SysWOW64 (32 비트) 또는 유틸리티 \ (64 비트) 폴더에 있습니다.
  3. 일반 탭에서 TCP/IP가 사용되도록 설정되어 있는지 확인합니다.
  4. 별칭 탭에서 추가를 클릭합니다.
    참고 사항 네트워크 라이브러리 구성 추가 창이 나타납니다.
  5. 서버 별칭 상자에 새 SQL Server 별칭의 이름을 입력 합니다.
  6. 네트워크 라이브러리 영역에서 TCP/IP를 클릭합니다.
  7. 연결 매개 변수 영역의 서버 이름 상자에 SQL Server를 실행 중인 새 서버의 Fqdn (정규화 된 도메인 이름)을 입력 하 고 확인을 클릭 합니다.
  8. 데이터베이스를 호스트 하는 SQL Server 인스턴스에 연결 되는 모든 SharePoint 서버에서 2 ~ 7 단계를 반복 합니다.

2 단계: SharePoint 데이터베이스에서 새 SQL 별칭을 가리키도록 지정

이 단계를 통해 모든 SharePoint 데이터베이스에 대 한 SQL Server 인스턴스 포인터가 변경 됩니다. 데이터베이스를 다른 SQL Server 인스턴스에 저장 하려면 그에 따라 스크립트를 수정 합니다.

중요

SharePoint 구성 데이터베이스 및 중앙 관리 콘텐츠 데이터베이스는 동일한 SQL Server 인스턴스에 상주해 야 합니다.
SQL Server 인스턴스 포인터를 변경 하려면 상승 된 SharePoint 관리 셸 창에서 다음 PowerShell 스크립트를 실행 합니다.

$SPDBs = Get-SPDatabase  
 ForEach ($DB in $SPDBs)  
 {  
     $DB.ChangeDatabaseInstance('SPSQLRenamed')  
 }  

변경 내용을 확인 하려면 상승 된 SharePoint 관리 셸 창에서 다음 PowerShell cmdlet을 실행 합니다.

Get-SPDatabase | Select Name,Server  

다음 예제와 비슷한 결과가 표시 됩니다.

DB 출력

3 단계: 웹 응용 프로그램의 기본 데이터베이스 인스턴스를 새 SQL Server 인스턴스에 가리키기

이 단계는 데이터베이스 서버를 지정 하지 않고 데이터베이스를 만들 때 이전 SQL Server 인스턴스에 연결 하지 않도록 하기 위해 필요 합니다.

다음 작업 계획은 모든 데이터베이스를 동일한 SQL Server 인스턴스 (구성 데이터베이스를 사용 하는 것과 동일)로 가리키도록 설정 합니다. 요구 사항에 맞게이 스크립트를 수정 합니다.

관리자 권한 SharePoint 관리 셸 창에서 다음 PowerShell 스크립트를 실행 합니다.

$ConfigDB = Get-SPDatabase | ?{$_.Name -eq 'SharePoint_Config'}  
 $WebApps = Get-SPWebApplication -IncludeCentralAdministration  
 ForEach ($WebApp in $WebApps)  
 {  
     $WebApp.Parent.DefaultDatabaseInstance = $ConfigDB.ServiceInstance  
     $webapp.Parent.Update()  
     $webapp.Update()  
 }  

변경 내용을 확인 하려면 상승 된 SharePoint 관리 셸 창에서 다음 PowerShell cmdlet을 실행 합니다.

$webapps = Get-SPWebApplication -IncludeCentralAdministration  
 foreach ($webapp in $webapps)  
 {  
     Write-host "WebAppUrl: $($webapp.DisplayName)`tDefaultDatabaseInstance: $($webapp.Parent.DefaultDatabaseInstance.DisplayName)"  
 }  

다음 예제와 비슷한 결과가 표시 됩니다.

DB 인스턴스 출력

4 단계: 분산 캐시 클러스터 구성 변경

중요

이 단계에서는 SharePoint 구성 데이터베이스를 직접 수정 하는 방법에 대해 설명 합니다. 일반적으로 대부분의 SharePoint 관련 데이터베이스에서는 데이터베이스를 직접 수정할 수 없습니다. 여기에 지정 된 작업은 특정 용도로만 허용 됩니다. 이러한 단계를 사용 하 여 다른 변경 작업을 수행 하는 권한은 부여 하지 않습니다.

이렇게 하려면 다음 단계를 따르세요.

  1. 다음 SQL 쿼리를 사용 하 여 SQL Server가 실행 되는 서버에서 현재 구성 개체를 가져옵니다.

    SELECT [ID],[Properties]  
    FROM [SharePoint_Config].[dbo].[Objects]  
    WITH (NOLOCK)  
    WHERE Properties like '%_cacheConfigStorageLocation%'  
    
  2. 쿼리는 열이 두 개인 단일 행을 반환 합니다. 한 열은 구성 항목의 GUID에 대 한 것이 고 다른 하나는 다음 예제와 같이 구성 항목의 콘텐츠에 대 한 것입니다.

    <object type="Microsoft.SharePoint.DistributedCaching.Utilities.SPDistributedCacheClusterInfo, Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=Token"><fld type="Microsoft.SharePoint.DistributedCaching.Utilities.SPDistributedCacheClusterConfigStorageLocation, Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=Token" name="_cacheConfigStorageLocation"><object type="Microsoft.SharePoint.DistributedCaching.Utilities.SPDistributedCacheClusterConfigStorageLocation, Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=Token"><sFld type="String" name="_provider">SPDistributedCacheClusterProvider</sFld><sFld type="String" name="_connectionString">Data Source=SPSQLRenamed;Initial Catalog=SharePoint_Config;Integrated Security=True;Persist Security Info=False;Enlist=False;Pooling=True;Min Pool Size=0;Max Pool Size=100;PoolBlockingPeriod=Auto;Asynchronous Processing=False;Connection Reset=True;MultipleActiveResultSets=False;Replication=False;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;Load Balance Timeout=0;Packet Size=8000;Type System Version=Latest;Application Name=".Net SqlClient Data Provider";User Instance=False;Context Connection=False;Transaction Binding="Implicit Unbind";ApplicationIntent=ReadWrite;MultiSubnetFailover=False;TransparentNetworkIPResolution=True;ConnectRetryCount=1;ConnectRetryInterval=10;Column Encryption Setting=Disabled</sFld></object></fld><sFld type="String" name="_clusterSize">medium</sFld><sFld type="Boolean" name="_enableHA">False</sFld><sFld type="Boolean" name="_isInitialized">True</sFld><sFld type="Boolean" name="_isDataCacheSecurityEnabled">False</sFld><sFld type="Boolean" name="m_DeploymentLocked">False</sFld><fld type="System.Collections.Hashtable, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=Token" name="m_UpgradedPersistedFields" /><fld name="m_Properties" type="null" /><sFld type="String" name="m_LastUpdatedUser">SP2016\Administrator</sFld><sFld type="String" name="m_LastUpdatedProcess">psconfigui (3536)</sFld><sFld type="String" name="m_LastUpdatedMachine">SP16APP1</sFld><sFld type="DateTime" name="m_LastUpdatedTime">Time</sFld><fld name="m_LastUpdatedStackTrace" type="null" /><sFld type="Int32" name="m_LastUpdatedThreadId">31</sFld><sFld type="Guid" name="m_LastUpdatedCorrelationId">CorrelationId</sFld></object>.
    
  3. 결과를 메모장에 복사한 후 다음을 새 SQL Server 인스턴스로 바꿉니다.

    Data Source=SPSQLRenamed;Initial Catalog=SharePoint_Config;
    
  4. 다음 SQL 명령을 실행 하 여 구성 개체를 업데이트 합니다.

    UPDATE Objects  
    SET Properties = '[content in Notepad]'  
    WHERE ID = '[GUID of the configuration object in the query result]'  
    

5 단계: 모든 분산 캐시 서버에서 분산 캐시 서비스 다시 구축

이렇게 하려면 다음 단계를 따르세요.

  1. 배포 된 캐시 서버 중 하나에서 관리자 권한 PowerShell 프롬프트에 다음 PowerShell cmdlet을 실행 하 여 서비스를 정상적으로 종료 합니다.

    Use-CacheCluster  
    Stop-CacheHost -Graceful -CachePort 22233 -ComputerName $env:COMPUTERNAME  
    
  2. 서비스가 중지 될 때까지 기다립니다. 다음 PowerShell cmdlet을 사용 하 여 상태를 모니터링할 수 있습니다.

    Get-CacheHost  
    

    서비스가 중지 되 면 다음 예와 비슷한 결과가 표시 됩니다.

    캐시 호스트 출력

  3. 다음 PowerShell cmdlet을 실행 하 여 분산 캐시 클러스터에서 로컬 서버를 제거 합니다.

    Remove-SPDistributedCacheServiceInstance  
    
  4. 다음 PowerShell cmdlet을 실행 하 여 분산 캐시 클러스터로 로컬 서버를 복원 합니다.

    Add-SPDistributedCacheServiceInstance  
    
  5. 레지스트리 편집기를 열고 HKLM\SOFTWARE\Microsoft\AppFabric\V1.0\Configuration 키의 ConnectionString 값이 업데이트 되었는지 확인 합니다. 예를 들면 다음과 같습니다.

    레지스트리의

  6. 분산 캐시 클러스터의 각 서버에서 1 ~ 5 단계를 반복 합니다.

6 단계: 이전 서버에 대 한 참조 제거

이렇게 하려면 관리자 권한 SharePoint 관리 셸 창에서 다음 PowerShell cmdlet을 실행 합니다.

$OldServer = Get-SPServer | ?{$_.Address -eq '<The name of the SQL Server to be removed>'}  
 $OldServer.Delete()  

7 단계: 변경 확인

데이터베이스 서버가 성공적으로 변경 되었는지 확인 하려면 다음 cmdlet을 실행 합니다.

Get-SPServer  

다음 예제와 비슷한 결과가 표시 됩니다.

서버 출력

추가 정보

여전히 도움이 필요하세요? SharePoint 커뮤니티로 이동 합니다.