Azure SQL Databaseのバックアップとは?復元方法も紹介
- システム
エンジニア - Azure SQL Databaseのバックアップと復旧ってどのように行うんですか?
- プロジェクト
リーダー - いくつか設定や注意点があるので、そこを抑えながら概要を見ていきましょう。
Azure SQL Databaseの自動バックアップ方法
Azure SQL Databaseにおいては、デフォルトの設定で自動的なバックアップジョブが稼働しています。データベースが作成された時点で、初回のバックアップから定期バックアップまですべてスケジューリングされているので、バックアップに関しては保有期間の設定を行うのみになります。
バックアップが実行される間隔は完全バックアップが1週間、差分バックアップが12時間、トランザクションログのバックアップは5~10分間隔で実行されるようです。バックアップの実行時間は30分以内で終了すると されていますが、データベースのサイズによってはそれ以上かかることもあります。
Azure SQL Databaseのバックアップにおける設定値の変更方法
自動バックアップに関する設定変更は、バックアップの保有期間の変更のみ明示されており、7日から35日の間で変更することができます(規定値は7日)。長期的な保持設定においては最長10年までバックアップが可能です。
変更方法は、Azure Portalを利用してサーバーの概要からナビゲーションメニューの [バックアップの管理] → [保有期間の構成]をクリックすることでサーバー単位でのバックアップの保有期間を変更できます。このほか、マネージドインスタンス(データベース全体)での変更や、PowerShell、Rest APIなどを利用して変更することも可能です。
Azure SQL Databaseのバックアップにおける注意点
Azure SQL Databaseのバックアップを行うにあたり、データベースが利用するデータ容量はバックアップと合算したものになります。そのため、多くのバックアップを保有すると、その分データ容量も多く必要になってしまいます。バックアップを行う時点で契約しているデータ容量を超えてしまった場合は、その分の追加料金が発生してしまうことがあるので注意しなければなりません。
Azure SQL Databaseのバックアップを利用してできること
Azure SQL Databaseのバックアップでは、自動的にバックアップが行われます。取得サイクルは完全バックアップなら毎週、差分バックアップなら数時間に1度、トランザクションログバックアップなら数分に1度となっており、取得タイミングもAzureによって決定されます。
Azure のバックアップからSQL Databaseを復元する方法4種と手順
Azure SQL Databaseのデータを復旧するには、Azure PortalやPowerShellなどを利用する方法があります。Azure Portalで行う場合は、データベース概要のページを開いてツールバーの[復元]を選択すると、バックアップリソースから復元ポイントを選べるようになるので、任意のバックアップから復元を実行できます。また、削除されたデータベースの復元もバックアップが残っていれば実行することが可能です。
1:ポイントインタイムリストアの特徴
ポイントインタイムリストアとは、同一のサーバー内に新規データベースとしてデータベースを復元するものです。保存期間に合わせてユーザー側が任意の時間に復元できます。主に不具合が発生した場合、データベースを過去にさかのぼって検証することができます。
PowerShellを使用した手順
PowerShellを使用する場合はAzure Cloud Shellを利用し、下記のようなスクリプトを使用します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
Restore-AzSqlDatabase
[-FromPointInTimeBackup]
-PointInTime
-ResourceId
-ServerName
-TargetDatabaseName
[-Edition ]
[-ServiceObjectiveName ]
[-ElasticPoolName ]
[-AsJob]
[-LicenseType ]
[-BackupStorageRedundancy ]
[-ResourceGroupName]
[-DefaultProfile ]
[-WhatIf]
[-Confirm]
[]
|
Azure portalを使用した手順
Azure portalのデータベースの概要ページのツールバーにある「復元」を選択します。さらにバックアップソースを選択し、新しく作成するデータベースのバックアップポイントを選択しましょう。
2:データベースコピーの特徴
データベースコピーとは、最新のデータベースをコピーするものです。任意の時点を指定することはできませんが、異なるサーバーやリージョンにコピーすることもできます。主に最新の本番データを検証用サーバーで使用するといった目的で利用されます。
PowerShellを使用した手順
PowerShellを使用する場合はNew-AzSqlDatabaseCopyコマンドレットを使用します。
1
2
|
New-AzSqlDatabaseCopy -ResourceGroupName "" -ServerName $sourceserver -DatabaseName "" `
-CopyResourceGroupName "myResourceGroup" -CopyServerName $targetserver -CopyDatabaseName "CopyOfMySampleDatabase"
|
Azure portalを使用した手順
Azure Portalを使ってデータベースコピーを行う場合は、データベースのページにある「コピー」をクリックしましょう。ただし、別のサブスクリプションへのデータベースコピーはサポートしていません。
3:削除されたデータベース復元の特徴
削除されたデータベースを同一サーバー上や同一マネージドインスタンス上に、削除時点やそれ以外の時点の状態で復元することができます。削除されたデータベース復元を行う場合は、バックアップから新しいデータベースの作成を行います。
PowerShellを使用した手順
PowerShellを使用する場合は、下記のようなスクリプトを使用します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# Connect-AzAccount
$SubscriptionId = ''
# Set the resource group name and location for your server
$resourceGroupName = "myResourceGroup-$(Get-Random)"
$location = "westus2"
# Set an admin login and password for your server
$adminSqlLogin = "SqlAdmin"
$password = "ChangeYourAdminPassword1"
# Set server name - the logical server name has to be unique in the system
$serverName = "server-$(Get-Random)"
# The sample database name
$databaseName = "mySampleDatabase"
# The restored database names
$pointInTimeRestoreDatabaseName = "MySampleDatabase_10MinutesAgo"
# The ip address range that you want to allow to access your server
$startIp = "0.0.0.0"
$endIp = "0.0.0.0"
# Set subscription
Set-AzContext -SubscriptionId $subscriptionId
# Create a resource group
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location
# Create a server with a system wide unique server name
$server = New-AzSqlServer -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-Location $location `
-SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
# Create a server firewall rule that allows access from the specified IP range
$firewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-FirewallRuleName "AllowedIPs" -StartIpAddress $startIp -EndIpAddress $endIp
# Create a blank database with an S0 performance level
$database = New-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-RequestedServiceObjectiveName "S0"
Start-Sleep -second 600
# Restore database to its state 7 minutes ago
# Note: Point-in-time restore requires database to be at least 5 minutes old
Restore-AzSqlDatabase `
-FromPointInTimeBackup `
-PointInTime (Get-Date).AddMinutes(-7) `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-TargetDatabaseName $pointInTimeRestoreDatabaseName `
-ResourceId $database.ResourceID `
-Edition "Standard" `
-ServiceObjectiveName "S0"
# Note: For performing geo-restore for a managed instance database, use -FromGeoBackup parameter with restore.
# Sample script: Restore-AzSqlDatabase -FromGeoBackup -ResourceGroupName "TargetResourceGroup" -ServerName "TargetServer" -TargetDatabaseName "RestoredDatabase" -ResourceId $GeoBackup.ResourceID -Edition "Standard" -RequestedServiceObjectiveName "S2"
# Clean up deployment
# Remove-AzResourceGroup -ResourceGroupName $resourcegroupname
|
Azure portalを使用した手順
Azure portalのサーバー概要ページにある「削除済みデータベース」を選択し、復元したい削除済みデータベースを選択します。さらに、復元して新しく作成するデータベースの名前を入力しましょう。
4:geoリストアの特徴
geoリストアはgeo冗長バックアップストレージによって構成されたSQLデータベースやマネージドインスタンスで利用できるもので、geoレプリケートされたバックアップからデータベースを復元します。
PowerShellを使用した手順
PowerShellを使用する場合は、下記のようなスクリプトを使用します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# Connect-AzAccount
$SubscriptionId = ''
# Set the resource group name and location for your server
$resourceGroupName = "myResourceGroup-$(Get-Random)"
$location = "westus2"
# Set an admin login and password for your server
$adminSqlLogin = "SqlAdmin"
$password = "ChangeYourAdminPassword1"
# Set server name - the logical server name has to be unique in the system
$serverName = "server-$(Get-Random)"
# The sample database name
$databaseName = "mySampleDatabase"
# The restored database names
$pointInTimeRestoreDatabaseName = "MySampleDatabase_10MinutesAgo"
# The ip address range that you want to allow to access your server
$startIp = "0.0.0.0"
$endIp = "0.0.0.0"
# Set subscription
Set-AzContext -SubscriptionId $subscriptionId
# Create a resource group
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location
# Create a server with a system wide unique server name
$server = New-AzSqlServer -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-Location $location `
-SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
# Create a server firewall rule that allows access from the specified IP range
$firewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-FirewallRuleName "AllowedIPs" -StartIpAddress $startIp -EndIpAddress $endIp
# Create a blank database with an S0 performance level
$database = New-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-RequestedServiceObjectiveName "S0"
Start-Sleep -second 600
# Restore database to its state 7 minutes ago
# Note: Point-in-time restore requires database to be at least 5 minutes old
Restore-AzSqlDatabase `
-FromPointInTimeBackup `
-PointInTime (Get-Date).AddMinutes(-7) `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-TargetDatabaseName $pointInTimeRestoreDatabaseName `
-ResourceId $database.ResourceID `
-Edition "Standard" `
-ServiceObjectiveName "S0"
# Note: For performing geo-restore for a managed instance database, use -FromGeoBackup parameter with restore.
# Sample script: Restore-AzSqlDatabase -FromGeoBackup -ResourceGroupName "TargetResourceGroup" -ServerName "TargetServer" -TargetDatabaseName "RestoredDatabase" -ResourceId $GeoBackup.ResourceID -Edition "Standard" -RequestedServiceObjectiveName "S2"
# Clean up deployment
# Remove-AzResourceGroup -ResourceGroupName $resourcegroupname
|
Azure portalを使用した手順
ダッシュボードの「追加」から「SQL データベースの作成」を選択し、基本タブで情報を入力します。さらに「追加設定」を選択し、「既存のデータを使用します」、「バックアップ」を選択し、geoリストアバックアップの中からバックアップを選択しましょう。
Azure SQL Databaseにおけるバックアップ復元にかかる時間
バックアップからの復元には膨大な量のデータを読み書きするため、実行に時間がかかります。多くの場合は12時間以内に終了するとありますが、データ容量やネットワーク環境などの影響により、それ以上に時間がかかることもあるようです。
Azure SQL Databaseで長期バックアップをする方法
長期保存ポリシーを構成することで、バックアップを最長10年間保存できるようになります。Azure Portalで設定する場合は、サーバーに移動して「バックアップ」を選択し、「保持ポリシー」タブを選択して保持設定の変更を行います。
「保持ポリシー」タブで長期バックアップ保持ポリシーを設定したいデータベースを選択し、「ポリシーの構成」ウィンドウで保存期間を指定し、「適用」を選択しましょう。
- システム
エンジニア - これだけしっかり自動でバックアップしてくれるなら、管理はすごく楽ですね!
- プロジェクト
リーダー - 注意点はありますが、GUIで簡単に操作できるので管理者の労力は確実に減るでしょう。
Azure SQL Databaseのバックアップを理解しよう
こまめにバックアップを取っておけば、障害が発生した時の復旧も楽になります。ただし、その分利用するデータ容量は増えてしまうので、無駄なコストを出したくないならば適切な間隔で設定することが重要です。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
Azure新着案件New Job
-
クラウドサービスを利用したインフラ基盤構築/Azure/東京都大田区/【WEB面談可】
月給60万~70万円東京都大田区(大森駅) -
クラウドサービスを利用したインフラ基盤の運用保守/Azure/東京都大田区/【WEB面談可】
月給50万~60万円東京都大田区(大森駅) -
決済システム保守開発/東京都渋谷区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】
月給45万~50万円東京都渋谷区(渋谷駅) -
決済システム保守開発/東京都渋谷区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】
月給31万~34万円東京都渋谷区(渋谷駅) -
資格試験用システム開発/Azure/東京都渋谷区/【WEB面談可】/テレワーク
月給45万~60万円東京都渋谷区(渋谷駅) -
Azure開発サポート/神奈川県横浜市/【WEB面談可】/テレワーク
月給33万~48万円神奈川県横浜市(横浜駅)