다음을 통해 공유


스케일 아웃 복제본 동기화

이 문서에서는 명령줄 또는 스크립트에서 PowerShell을 사용하여 의미 체계 모델 스케일 아웃 복제본을 동기화하는 방법을 설명합니다.

기본 읽기-쓰기 의미 체계 모델에 대해 작업하고 의미 체계 모델 사용자가 읽기 전용 복제본을 사용하는 경우 의미 체계 모델 메타데이터 업데이트 및 새로 고침을 어떤 영향도 미치지 않고 수행할 수 있습니다. 그러나 의미 체계 모델 및 새로 고침에 대한 변경은 기본 의미 체계 모델에서 수행됩니다. 읽기 전용 복제본에 변경 내용을 복사하려면 읽기-쓰기 의미 체계 모델과 동기화해야 합니다.

기본적으로 autoSyncReadOnlyReplicas 매개 변수는 true로 설정되어 있으며 Power BI는 복제본을 자동으로 동기화합니다. autoSyncReadOnlyReplicas에서 false로 설정하여 자동 동기화를 사용하지 않도록 설정할 수 있습니다. 그러나 syncStatussync REST API를 사용하여 수동으로 동기화하도록 선택할 수 있습니다.

복제본의 동기화 상태를 확인하려면 SyncStatus REST API 사용합니다. 이 문서에서는 이 API를 사용하기 위한 PowerShell 명령에 대해 설명합니다.

복제본 동기화 상태 확인

###
# Check the scale-out replica sync status
###
Login-PowerBI | Out-Null

$workspaceId = '<enter workspaceId>'

$datasetId = Get-PowerBIDataset -WorkspaceId $workspaceId `
    | Where{$_.Name -match "<enter semantic model name>"} `
    | Select-Object -ExpandProperty Id -First 1 `
    | ForEach-Object {$_.Guid}

$response = Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId/queryScaleOut/syncStatus" -Method Get | ConvertFrom-Json 
$response | Format-List

if ($response.commitVersion -eq $response.minActiveReadVersion)
{
    Write-Host "Semantic model read-write and read-only replicas are in sync."
}
else
{
    Write-Host "Semantic model read-write and read-only replicas are not in sync." -ForegroundColor Red
}

동기화 상태 API가 빈 응답을 반환하거나 scaleOutStatus가 "사용할 수 없음"으로 설정된 경우 의미 체계 모델의 읽기-쓰기 복제본(replica) 로드하거나 모델에서 새로 고침을 수행하여 최신 동기화 상태 가져옵니다.

자세한 내용은 Power BI REST API 참조에서 데이터 세트 - 그룹 내 쿼리 스케일 아웃 동기화 상태 가져오기를 참조하세요.

자동 복제본 동기화 사용 안 함

###
# Disable automatic scale-out replica sync
###
Login-PowerBI | Out-Null

$workspaceId = '<enter workspaceId>'

$datasetId = Get-PowerBIDataset -WorkspaceId $workspaceId `
    | Where{$_.Name -match "<enter semantic model name>"} `
    | Select-Object -ExpandProperty Id -First 1 `
    | ForEach-Object {$_.Guid}

Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId" `
    -Method Patch -Body '{ "queryScaleOutSettings": { "autoSyncReadOnlyReplicas": false }}'

Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId" -Method Get `
    | ConvertFrom-Json | Select-Object -ExpandProperty queryScaleOutSettings `
    | ForEach { 
        if($_.autoSyncReadOnlyReplicas -eq $false)
        { 
            Write-Host "Success! Automatic replica synchronization has been disabled."
        } else
        {
            Write-Host "Something went wrong! Automatic replica synchronization is still enabled." -ForegroundColor Red
        }
     }

수동 복제본 동기화 수행(스크립트)

###
# Perform a manual replica sync
###
Login-PowerBI | Out-Null

$workspaceId = '<enter workspaceId>'

$datasetId = Get-PowerBIDataset -WorkspaceId $workspaceId `
    | Where{$_.Name -match "<enter semantic model name>"} `
    | Select-Object -ExpandProperty Id -First 1 `
    | ForEach-Object {$_.Guid}

$response = Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId/queryScaleOut/sync" -Method Post -Body "" | ConvertFrom-Json

Write-Host 'Synchronizing the scale-out replicas...' -NoNewLine

while ($response.commitVersion -ne $response.minActiveReadVersion)
{
    Write-Host '.' -NoNewLine
    Start-Sleep -Seconds 10

    $response = Invoke-PowerBIRestMethod -Url "groups/$workspaceId/dataset/$datasetId/queryScaleOut/syncStatus" -Method Get | ConvertFrom-Json 
}

Write-Host 'Completed'
$response

자세한 내용은 Power BI REST API 참조에서 데이터 세트 - 그룹 내 동기화 스케일 아웃 쿼리 트리거를 참조하세요.

수동 복제본 동기화 수행(명령줄)

다음 단계에 따라 Windows PowerShell 복제본을 동기화합니다.

  1. PowerShell을 열고 다음 명령을 실행하여 Power BI에 로그인합니다.

    Login-PowerBI
    
  2. 아래 명령을 실행하여 작업 영역 ID를 가져옵니다. <WorkspaceName>을 작업 영역 이름으로 바꿉니다.

    Get-PowerBIWorkspace -Name "<WorkspaceName>"  # Replace <WorkspaceName> with the name of your workspace
    
  3. 아래 명령을 실행하여 의미 체계 모델 ID를 가져옵니다. <WorkspaceId>를 작업 영역의 ID로 바꿉니다.

    Get-PowerBIDataset -WorkspaceId "<WorkspaceId>"  # Replace <WorkspaceId> with the Id of your workspace
    
  4. 아래 명령을 사용하여 의미 체계 모델의 동기화 상태를 확인합니다. <WorkspaceId><DatasetId>의 값을 적절하게 바꿉니다.

    Invoke-PowerBIRestMethod -Url 'groups/<WorkspaceId>/datasets/<DatasetId>/queryScaleOut/syncStatus' -Method Get | ConvertFrom-Json | Format-List  # Replace <WorkspaceId> with the Id of your workspace and <DatasetId> with the Id of your semantic model
    

    출력에서 minActiveReadVersionminActiveReadTimestamp 값은 읽기 전용 데이터 세트 복사본을 나타냅니다. commitVersioncommitTimestamp 값은 읽기-쓰기 의미 체계 모델을 나타냅니다. 이들 간의 차이점은 읽기 전용 복제본이 이전 버전의 의미 체계 모델을 나타내는 것입니다.

  5. 다음 명령을 사용하여 읽기-쓰기 의미 체계 모델과 읽기 전용 복제본을 동기화합니다. <WorkspaceId><DatasetId>의 값을 적절하게 바꿉니다.

    Invoke-PowerBIRestMethod -Url 'groups/<WorkspaceId>/datasets/<DatasetId>/queryScaleOut/sync' -Method Post -Body "" | ConvertFrom-Json | Format-List  # Replace <WorkspaceId> with the Id of your workspace and <DatasetId> with the Id of your semantic model
    

    출력의 동기화 상태 정보는 방금 동기화를 트리거했기 때문에 읽기-쓰기 의미 체계 모델 및 읽기 전용 복제본이 동기화되지 않았음을 나타냅니다.

  6. 동기화가 완료되었는지 확인하려면 4단계에서 syncStatus 명령을 다시 실행합니다. 의미 체계 모델 복사본을 동기화하는 데 필요한 시간에 따라 명령을 몇 번 실행해야 할 수도 있습니다. 동기화가 완료되면 syncStartTimesyncEndTime 의 값을 확인하여 동기화에 걸린 시간을 확인합니다.

자세한 내용은 Power BI REST API 참조에서 데이터 세트 - 그룹 내 동기화 스케일 아웃 쿼리 트리거를 참조하세요.