SQL DB


The presented resiliency recommendations in this guidance include Azure Database Services

Summary of Recommendations

Recommendations Details

SQLDB-1 - アクティブ geo レプリケーションを使用して、別のリージョンに読み取り可能なセカンダリを作成します

Category: Disaster Recovery

Impact: High

Guidance

プライマリ データベースに障害が発生した場合は、セカンダリ データベースへの手動フェールオーバーを実行します。フェールオーバーするまで、セカンダリ データベースは読み取り専用のままです。アクティブ geo レプリケーションを使用すると、読み取り可能なレプリカを作成し、データセンターの停止やアプリケーションのアップグレードが発生した場合に、任意のレプリカに手動でフェールオーバーできます。同じリージョンまたは異なるリージョンで最大 4 つのセカンダリがサポートされ、セカンダリは読み取り専用アクセス クエリにも使用できます。フェールオーバーは、アプリケーションまたはユーザーが手動で開始する必要があります。フェイルオーバー後、新しいプライマリーの接続エンドポイントは異なります。

Resources

Resource Graph Query

// Azure Resource Graph Query
// Provides a list of SQL databases that are not configured for Geo-redundant storage.
resources
| where type == "microsoft.sql/servers/databases"
| where  (properties['currentBackupStorageRedundancy'] ) <> 'Geo'
| project recommendationId = "sqldb-1", name, id, tags, param1=strcat("CurrentGeoRedudancy=", properties['currentBackupStorageRedundancy'] )



SQLDB-2 - 1 つまたは複数のデータベース (通常は同じアプリケーションで使用) を含めることができる自動フェールオーバー グループを使用します

Category: Disaster Recovery

Impact: High

Guidance

読み取り可能なセカンダリ データベースを使用して、読み取り専用クエリ ワークロードをオフロードできます。自動フェールオーバー グループには複数のデータベースが含まれるため、これらのデータベースはプライマリ サーバー上で構成する必要があります。自動フェールオーバー グループでは、グループ内のすべてのデータベースを、別のリージョン内の 1 つのセカンダリ サーバーまたはインスタンスにのみレプリケーションできます。

Resources

Resource Graph Query

// Azure Resource Graph Query
// Provides a list of SQL databases that are not configured to use a failover-group.
resources
| where type =~'microsoft.sql/servers/databases'
| where isnull(properties['failoverGroupId'])
| project recommendationId = "sqldb-2", name, id, tags, param1= strcat("databaseId=", properties['databaseId'])



SQLDB-3 - ゾーン冗長データベースを使用します

Category: Availability

Impact: Medium

Guidance

既定では、Premium 可用性モデルのノードのクラスターは、同じデータセンターに作成されます。Azure Availability Zones の導入により、SQL Database では、Business Critical データベースの異なるレプリカを同じリージョン内の異なる可用性ゾーンに配置できます。単一障害点を排除するために、制御リングは 3 つのゲートウェイ リング(GW)として複数のゾーンに複製されます。特定のゲートウェイ リングへのルーティングは、Azure Traffic Manager (ATM) によって制御されます。Premium または Business Critical サービス レベルのゾーン冗長構成では、追加のデータベース冗長性は作成されないため、追加コストなしで有効にできます。

Resources

-Zone Redundant Databases

Resource Graph Query

Resources
| where type =~ 'microsoft.sql/servers/databases'
| where tolower(tostring(properties.zoneRedundant))=~'false'
|project recommendationId = "sqldb-3", name, id, tags



SQLDB-4 - 再試行ロジックを実装します

Category: Application Resilience

Impact: High

Guidance

Azure SQL Database は、推移的なインフラストラクチャの障害に関しては回復性がありますが、これらの障害は接続に影響を与える可能性があります。SQL Database の操作中に一時的なエラーが発生した場合は、コードで呼び出しを再試行できることを確認します。

Resources

Resource Graph Query

// under-development



SQLDB-5 - Azure SQL Database をほぼリアルタイムで監視して信頼性インシデントを検出します

Category: Monitoring

Impact: High

Guidance

利用可能なソリューションの 1 つを使用して SQL DB を監視し、潜在的な信頼性インシデントを早期に検出し、データベースの信頼性を高めます。ほぼリアルタイムの監視ソリューションを選択して、インシデントに迅速に対応します。

Resources

Resource Graph Query

// Azure Resource Graph Query
// Provides a list of SQL databases that are not configured for monitoring.
resources
| where type == "microsoft.insights/metricalerts"
| mv-expand properties.scopes
| mv-expand properties.criteria.allOf
| project databaseid = properties_scopes, monitoredMetric = properties_criteria_allOf.metricName
| where databaseid contains 'databases'
| summarize monitoredMetrics=make_list(monitoredMetric) by tostring(databaseid)
| join kind=fullouter  (
   resources
  | where type =~ 'microsoft.sql/servers/databases'
  | project databaseid = tolower(id), name, tags
) on databaseid
|where isnull(monitoredMetrics)
|project recommendationId = "sqldb-5", name, id=databaseid1, tags, param1=strcat("MonitoringMetrics=false" )



SQLDB-6 - キーをバックアップします

Category: Disaster Recovery

Impact: Medium

Guidance

Azure Key Vault (AKV) を使用して、Always Encrypted 構成に関連する暗号化キーを格納することを強くお勧めしますが、必須ではありません。AKV を使用していない場合は、キーが適切にバックアップされていることを確認します。

Resources

Resource Graph Query

// under-development