PostgreSQLフレキシブルサーバーの課金停止(起動停止コマンド纏め)

Azure,Database for PostgreSQL,PowerShell/Azure CLI

Azure Database for PostgreSQL フレキシブルサーバー(Azure Database for PostgreSQL flexible server)はAzureで提供されるマネージドデータベースサービスになります。

フレキシブルサーバーの特徴の1つに停止している間は課金が発生しないというのがあります。
使っていない間サーバーを停止させておくことでコスト削減する事が出来ます。
CLIを使ってAzure Database for PostgreSQL フレキシブルサーバーの起動停止が出来ると色々便利そうです。

Azure Database for PostgreSQL フレキシブルサーバーのリソース情報取得、起動停止に関するAzure CLIコマンドやAzure PowerShellコマンドレットを纏めてみました。

スポンサーリンク

PostgreSQL フレキシブルサーバーの起動停止コマンド纏め

Az.PostgreSqlモジュールが必要

Azure PowerShellでPostgreSQLフレキシブルサーバーのリソースを操作する為にはAz.PostgreSqlモジュールが必要になります。
コマンドレットが見つからない場合は"Install-Module -Name Az.PostgreSql"でモジュールをインストールします。

サーバーリストやリソース情報取得

PostgreSQL フレキシブルサーバーのリスト取得やリソース情報取得時に使うコマンドの纏めです。

やりたい内容 Azure CLI Azure PowerShell
PostgreSQL フレキシブルサーバーのリストを取得する az postgres flexible-server list –output table Get-AzPostgreSqlFlexibleServer
PostgreSQL フレキシブルサーバーのリソース情報を取得する

サブスクリプション内
az postgres flexible-server list

リソースグループ内
az postgres flexible-server list –resource-group “リソースグループ名"

各リソース
az postgres flexible-server show –resource-group “リソースグループ名" –name “サーバー名"

各リソース
Get-AzPostgreSqlFlexibleServer |Format-List

各リソース
Get-AzPostgreSqlFlexibleServer -ResourceGroupName “リソースグループ名" |Format-List

各リソース
Get-AzPostgreSqlFlexibleServer -ResourceGroupName “リソースグループ名" -name “サーバー名" |Format-List

※Azure PowerShellの場合はFormat-Listを利用して一覧出力するようにしています。詳細はこちらを参照ください。

サーバー起動停止

PostgreSQL フレキシブルサーバー起動停止時に使うコマンドの纏めです。

やりたい内容 Azure CLI Azure PowerShell
PostgreSQL フレキシブルサーバーを起動 az postgres flexible-server start –resource-group “リソースグループ名" –name “サーバー名"

Start-AzPostgreSqlFlexibleServer -ResourceGroupName “リソースグループ名" -Name “サーバー名"

PostgreSQL フレキシブルサーバーを停止

az postgres flexible-server stop –resource-group “リソースグループ名" –name “サーバー名"

Stop-AzPostgreSqlFlexibleServer -ResourceGroupName “リソースグループ名" -Name “サーバー名"

PostgreSQL フレキシブルサーバーを再起動

az postgres flexible-server restart –resource-group “リソースグループ名" –name “サーバー名"

Restart-AzPostgreSqlFlexibleServer -ResourceGroupName “リソースグループ名" -Name “サーバー名"

※Azure CLIを使ったサーバー停止時に"–no-wait"オプションを使うと処理を待ちません。Azure PowerShellの場合は"-no-wait"オプションになります。
※Azure CLIを使ったサーバー操作時に"–ids"オプションを使うとリソースIDを利用して操作出来ます。
※Azure PowerShellを使ったサーバー操作時に"-InputObject"オプションを使うとリソースIDを利用して操作出来ます。リソースIDの最後に操作内容の付与が必要な点は注意が必要です。

サーバーのフェイルオーバー

PostgreSQL フレキシブルサーバーフェイルオーバー時に使うコマンドの纏めです。
フェイルオーバー時はRestartを利用します。

やりたい内容 Azure CLI Azure PowerShell
計画フェールオーバー

az postgres flexible-server restart –resource-group “リソースグループ名" –name “サーバー名" –failover Planned

Restart-AzPostgreSqlFlexibleServer -ResourceGroupName “リソースグループ名" -Name “サーバー名" -RestartWithFailover -FailoverMode PlannedFailover

強制フェールオーバー

az postgres flexible-server restart –resource-group “リソースグループ名" –name “サーバー名" –failover Forced

Restart-AzPostgreSqlFlexibleServer -ResourceGroupName “リソースグループ名" -Name “サーバー名" -RestartWithFailover -FailoverMode ForcedFailover

Azure CLIを使ったPostgreSQL フレキシブルサーバー操作

利用したサーバー

今回はこちらで作成したサーバーを利用します。

リソース情報取得結果

az postgres flexible-server showコマンドを使ってPostgreSQLフレキシブルサーバーのリソース情報を取得します。
Azure PowerShellのGet-AzPostgreSqlFlexibleServerコマンドレットで取得出来る情報内容に差異がある点は注意が必要です。

az postgres flexible-server showコマンド

PS C:>az postgres flexible-server show –resource-group “test-rg" –name “test-postgresql-flexible-server"

{
  “administratorLogin": “管理者ユーザー名",
  “administratorLoginPassword": null,
  “availabilityZone": “2",
  “backup": {
    “backupRetentionDays": 7,
    “earliestRestoreDate": “2023-0X-0XT02:22:22.022222+00:00",
    “geoRedundantBackup": “Enabled"
  },
  “createMode": null,
  “fullyQualifiedDomainName": “test-postgresql-flexible-server.postgres.database.azure.com",
  “highAvailability": {
    “mode": “ZoneRedundant",
    “standbyAvailabilityZone": “1",
    “state": “Healthy"
  },
  “id": “/subscriptions/サブスクリプションID/resourceGroups/test-rg/providers/Microsoft.DBforPostgreSQL/flexibleServers/test-postgresql-flexible-server",
  “location": “East US",
  “maintenanceWindow": {
    “customWindow": “Enabled",
    “dayOfWeek": 6,
    “startHour": 19,
    “startMinute": 0
  },
  “minorVersion": “6",
  “name": “test-postgresql-flexible-server",
  “network": {
    “delegatedSubnetResourceId": null,
    “privateDnsZoneArmResourceId": null,
    “publicNetworkAccess": “Enabled"
  },
  “pointInTimeUtc": null,
  “resourceGroup": “test-rg",
  “sku": {
    “name": “Standard_D2ds_v4",
    “tier": “GeneralPurpose"
  },
  “sourceServerResourceId": null,
  “state": “Ready",
  “storage": {
    “storageSizeGb": 32
  },
  “systemData": null,
  “tags": {},
  “tagsPropertiesTags": null,
  “type": “Microsoft.DBforPostgreSQL/flexibleServers",
  “version": “14"
}

Azure CLIコマンドの使用例

Azure CLIコマンドを利用してPostgreSQL フレキシブルサーバーを操作してみます。

やりたい内容 コマンド実行内容
サーバーの電源ステータスを一覧表示

PS C:>az postgres flexible-server list –query “[].{ServerName:name, RGName:resourceGroup, PowerState:state}" -o table

ServerName RGName PowerState
——————————- ————— ————
test-postgresql-flexible-server test-rg Stopped

サーバーのコンピューティング情報を一覧表示

PS C:>az postgres flexible-server list –query “[].{ServerName:name, RGName:resourceGroup, Location:location, ComputeSize:sku.name, StorageSize:storage.storageSizeGb}" -o table

ServerName RGName Location ComputeSize StorageSize
——————————- ————— ———- —————- ————-
test-postgresql-flexible-server test-rg East US Standard_D2ds_v4 32

サブスクリプション内で起動しているサーバーをすべて停止

PS C:\> $PostgreSQL_ids = az postgres flexible-server list –query “[?state==’Ready’].id" –output tsv
PS C:\> az postgres flexible-server stop –ids $PostgreSQL_ids

サブスクリプション内で停止しているサーバーをすべて起動

PS C:\> $PostgreSQL_ids = az postgres flexible-server list –query “[?state==’Stopped’].id" –output tsv
PS C:\> az postgres flexible-server start –ids $PostgreSQL_ids

Azure PowerShellを使ったPostgreSQL フレキシブルサーバー操作

リソース情報取得結果

Get-AzPostgreSqlFlexibleServerコマンドレットを使ってPostgreSQLフレキシブルサーバーのリソース情報を取得します。

Get-AzPostgreSqlFlexibleServerコマンドレット

PS C:>Get-AzPostgreSqlFlexibleServer -ResourceGroupName “test-rg" -name “test-postgresql-flexible-server" |Format-List

SecuredPassword :
FirewallRuleName :
AdministratorLogin : 管理者アカウント名
AdministratorLoginPassword :
AvailabilityZone : 2
BackupEarliestRestoreDate : 2023/02/0X  22:22:22
BackupGeoRedundantBackup : Enabled
BackupRetentionDay : 7
CreateMode :
FullyQualifiedDomainName : test-postgresql-flexible-server.postgres.database.azure.com
HighAvailabilityMode : ZoneRedundant
HighAvailabilityStandbyAvailabilityZone : 1
HighAvailabilityState : Healthy
Id : /subscriptions/サブスクリプションID/resourceGroups/test-rg/providers/Microsoft.DBforPostgreSQL/flexibleServers/test-postgres
ql-flexible-server
IdentityPrincipalId :
IdentityTenantId :
IdentityType :
Location : East US
MaintenanceWindowCustomWindow : Enabled
MaintenanceWindowDayOfWeek : 6
MaintenanceWindowStartHour : 19
MaintenanceWindowStartMinute : 0
MinorVersion : 6
Name : test-postgresql-flexible-server
NetworkDelegatedSubnetResourceId :
NetworkPrivateDnsZoneArmResourceId :
NetworkPublicNetworkAccess : Enabled
PointInTimeUtc :
PropertiesTag : Microsoft.Azure.PowerShell.Cmdlets.PostgreSql.Models.Api20210601.ServerPropertiesTags
SkuName : Standard_D2ds_v4
SkuTier : GeneralPurpose
SourceServerResourceId :
State : Ready
StorageSizeGb : 32
SystemDataCreatedAt :
SystemDataCreatedBy :
SystemDataCreatedByType :
SystemDataLastModifiedAt :
SystemDataLastModifiedBy :
SystemDataLastModifiedByType :
Tag : Microsoft.Azure.PowerShell.Cmdlets.PostgreSql.Models.Api10.TrackedResourceTags
Type : Microsoft.DBforPostgreSQL/flexibleServers
Version : 14

Azure PowerShellコマンドレットの使用例

Azure PowerShellコマンドレットを利用してPostgreSQL フレキシブルサーバーの操作を試します。
Azure CLIのaz postgres flexible-server showコマンドで取得出来る内容と差異がある点は注意が必要です。

やりたい内容 コマンド実行内容

電源ステータスを一覧表示
2つ目では表示タイトルを変更しています。

※"Format-Table"はftと略しています。

PS C:> Get-AzPostgreSqlFlexibleServer |ft Name,State

Name State
—- —–
test-postgresql-flexible-server Ready

PS C:> Get-AzPostgreSqlFlexibleServer |ft @{Name="ServerName"; Expression={$_.Name}} , @{Name="PowerState"; Expression={$_.State}} 

ServerName PowerState
———- ———-
test-postgresql-flexible-server Ready

サーバーのコンピューティング情報を一覧表示

PS C:> Get-AzPostgreSqlFlexibleServer |ft Name, Location, SkuName, StorageSizeGb

Name Location SkuName StorageSizeGb
—- ——– ——- ————-
test-postgresql-flexible-server East US Standard_D2ds_v4 32

サブスクリプション内で起動しているサーバーをすべて停止

※PowerShellのファイルとしてご利用下さい。

$PostgreSQL_list = Get-AzPostgreSqlFlexibleServer | Where-Object {$_.State -like “Stopped"}

for($i = 0; $i -lt $PostgreSQL_list.Count; $i++){
    $PostgreSQLServer = $PostgreSQL_list[$i]
    $PostgreSQL_id = $PostgreSQLServer.id
    $PostgreSQL_id = “$PostgreSQL_id/start"
    Start-AzPostgreSqlFlexibleServer -InputObject $PostgreSQL_id
}

サブスクリプション内で停止しているサーバーをすべて起動

※PowerShellのファイルとしてご利用下さい。

$PostgreSQL_list = Get-AzPostgreSqlFlexibleServer | Where-Object {$_.State -like “Ready"}

for($i = 0; $i -lt $PostgreSQL_list.Count; $i++){
    $PostgreSQLServer = $PostgreSQL_list[$i]
    $PostgreSQL_id = $PostgreSQLServer.id
    $PostgreSQL_id = “$PostgreSQL_id/stop"
    Stop-AzPostgreSqlFlexibleServer -InputObject $PostgreSQL_id
}

最後に

Azure Database for PostgreSQL フレキシブルサーバーのAzure CLIコマンドやAzure PowerShellコマンドレットを纏めてみました。
Azure CLIコマンドやAzure PowerShellで取得出来る情報が異なったり、同じ操作内容でも指定する値が違ったりする点は注意が必要かと思います。
今回はリソース情報取得から起動停止を中心に纏めていますが、ネットワーク設定、データベースの確認、リストア実施と言った事も出来ます。

今後も引き続き色々試していきたいと思います。

Azure CLIやAzure PowerShellのインストールについてはこちらに纏めています。

Rocky LinuxへのAzure PowerShellやAzure CLIのインストール手順についてはこちらに纏めています。

スポンサーリンク