스케일 아웃 복제본 동기화
이 문서에서는 명령줄 또는 스크립트에서 PowerShell을 사용하여 의미 체계 모델 스케일 아웃 복제본을 동기화하는 방법을 설명합니다.
기본 읽기-쓰기 의미 체계 모델에 대해 작업하고 의미 체계 모델 사용자가 읽기 전용 복제본을 사용하는 경우 의미 체계 모델 메타데이터 업데이트 및 새로 고침을 어떤 영향도 미치지 않고 수행할 수 있습니다. 그러나 의미 체계 모델 및 새로 고침에 대한 변경은 기본 의미 체계 모델에서 수행됩니다. 읽기 전용 복제본에 변경 내용을 복사하려면 읽기-쓰기 의미 체계 모델과 동기화해야 합니다.
기본적으로 autoSyncReadOnlyReplicas
매개 변수는 true
로 설정되어 있으며 Power BI는 복제본을 자동으로 동기화합니다. autoSyncReadOnlyReplicas
에서 false
로 설정하여 자동 동기화를 사용하지 않도록 설정할 수 있습니다. 그러나 syncStatus
및 sync
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가 "사용할 수 없음"으로 설정된 경우 의미 체계 모델의 읽기-쓰기 복제본을 로드하거나 모델을 새로 고쳐 최신 동기화 상태를 가져옵니다.
자세한 내용은 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/datasets/$datasetId/queryScaleOut/syncStatus" -Method Get | ConvertFrom-Json
}
Write-Host 'Completed'
$response
자세한 내용은 Power BI REST API 참조에서 데이터 세트 - 그룹 내 동기화 스케일 아웃 쿼리 트리거를 참조하세요.
수동 복제본 동기화 수행(명령줄)
다음 단계에 따라 Windows PowerShell 복제본을 동기화합니다.
PowerShell을 열고 다음 명령을 실행하여 Power BI에 로그인합니다.
Login-PowerBI
아래 명령을 실행하여 작업 영역 ID를 가져옵니다.
<WorkspaceName>
을 작업 영역 이름으로 바꿉니다.Get-PowerBIWorkspace -Name "<WorkspaceName>" # Replace <WorkspaceName> with the name of your workspace
아래 명령을 실행하여 의미 체계 모델 ID를 가져옵니다.
<WorkspaceId>
를 작업 영역의 ID로 바꿉니다.Get-PowerBIDataset -WorkspaceId "<WorkspaceId>" # Replace <WorkspaceId> with the Id of your workspace
아래 명령을 사용하여 의미 체계 모델의 동기화 상태를 확인합니다.
<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
출력에서
minActiveReadVersion
및minActiveReadTimestamp
값은 읽기 전용 데이터 세트 복사본을 나타냅니다.commitVersion
및commitTimestamp
값은 읽기-쓰기 의미 체계 모델을 나타냅니다. 이들 간의 차이점은 읽기 전용 복제본이 이전 버전의 의미 체계 모델을 나타내는 것입니다.다음 명령을 사용하여 읽기-쓰기 의미 체계 모델과 읽기 전용 복제본을 동기화합니다.
<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
출력의 동기화 상태 정보는 방금 동기화를 트리거했기 때문에 읽기-쓰기 의미 체계 모델 및 읽기 전용 복제본이 동기화되지 않았음을 나타냅니다.
동기화가 완료되었는지 확인하려면 4단계에서
syncStatus
명령을 다시 실행합니다. 의미 체계 모델 복사본을 동기화하는 데 필요한 시간에 따라 명령을 몇 번 실행해야 할 수도 있습니다. 동기화가 완료되면syncStartTime
및syncEndTime
의 값을 확인하여 동기화에 걸린 시간을 확인합니다.
자세한 내용은 Power BI REST API 참조에서 데이터 세트 - 그룹 내 동기화 스케일 아웃 쿼리 트리거를 참조하세요.