■SQL Database と SQL Server
- Azure の SQL Server オプションの選択: Azure SQL Database (PaaS) と Azure VM 上の SQL Server (IaaS)
https://azure.microsoft.com/ja-jp/documentation/articles/data-management-azure-sql-database-and-sql-server-iaas/
■SQL Server を Azure VM で実行
Azure の制限
- Azure サブスクリプションとサービスの制限、クォータ、制約
https://azure.microsoft.com/ja-jp/documentation/articles/azure-subscription-service-limits/
セキュリティ設定
-
ネットワークセキュリティグループ (NSG) を使用して、ネットワークのセキュリティ制御を実施
ストレージアカウント
-
Geo 冗長を無効にする
- データファイルとログファイルを同一のディスクに配置し、1 仮想ディスクに完結している場合のみ、有効にすることができる
- データファイルとログファイルを同一のディスクに配置し、1 仮想ディスクに完結している場合のみ、有効にすることができる
-
Standard ストレージを使用する場合
- HDD が使用されている
- サブスクリプションあたり 100 ストレージアカウントが上限
- 1 ストレージアカウントあたり、20,000 IOPS が上限
- 1 ディスクあたり、500 IOPS / 60MB/sec が上限
- 使用量で課金される
- HDD が使用されている
-
Premium ストレージを使用する場合
-
SSD が使用されている
-
DS / GS シリーズで利用可能
- Standard ストレージも利用することが可能
- 仮想マシンのサイズによって、各仮想マシンから発生させられるスループットが変わる
- Standard ストレージも利用することが可能
-
-
ディスクサイズによってスループットが変わる
- 128 GB : 500IOPS / 100MB/sec
- 512 GB : 2,300 IOPS / 150MB/sec
-
1024 GB : 5,000 IOPS / 200 MB/sec
- IOPS 換算では 512 ×2 より、1024 × 1 の方がスループットがよい
- IOPS 換算では 512 ×2 より、1024 × 1 の方がスループットがよい
- 128 GB : 500IOPS / 100MB/sec
- プロビジョンしたサイズで課金される
-
Premium Storage: Azure 仮想マシン ワークロード向けの高パフォーマンス ストレージ
https://azure.microsoft.com/ja-jp/documentation/articles/storage-premium-storage-preview-portal/
-
-
仮想マシンのサイズと IOPS の関係
ディスクの構成
- システムドライブは使用しない
-
キャッシュは無効にする
- 書き込みキャッシュはデータ整合性保持のため利用しない
- 読み込みキャッシュは必要に応じて有効にするが、読み込みキャッシュが有効にできるディスク数の上限には注意する
- 書き込みキャッシュはデータ整合性保持のため利用しない
-
複数のディスクを束ねるときには OS のストレージプール (記憶域スペース) の利用を検討する
-
GUI から作成する場合、列数の上限が 8 となっているため、接続するディスク数によっては PowerShell による作成を検討する
- Azure Premium Storage: 高パフォーマンスのための設計
https://azure.microsoft.com/ja-jp/documentation/articles/storage-premium-storage-performance/#-8
- Azure Premium Storage: 高パフォーマンスのための設計
- データ用 / ログ用のプールの作成を検討する
-
-
D / DS / G シリーズを使用する場合の D ドライブ (SSD) を tempdb で利用
-
Buffer Pool Extension (BPE) は 8KB ランダム IO 用途で主に使用されるため、I/O の傾向によっては効果が出ないことがあることを意識する
- I/O パターンによっては、BPE のデータが使われず、設定なしの方が早いケースがある
- I/O パターンによっては、BPE のデータが使われず、設定なしの方が早いケースがある
- Using SSDs in Azure VMs to store SQL Server TempDB and Buffer Pool Extensions
http://blogs.technet.com/b/dataplatforminsider/archive/2014/09/25/using-ssds-in-azure-vms-to-store-sql-server-tempdb-and-buffer-pool-extensions.aspx
-
-
SQL Server 2012 SP1 CU2 以降であれば、バックアップを Azure ストレージに取得することを検討
-
Azure ストレージに取得する場合、バックアップファイルのストライピングができないため、処理速度には注意する
- SQL Server 2016 から Azure ストレージへのストライピングしたバックアップを取得可能
- SQL Server 2016 から Azure ストレージに配意したデータベースは BACKUP ステートメントでスナップショットによるバックアップを取得可能
- SQL Server 2016 から Azure ストレージへのストライピングしたバックアップを取得可能
-
- SQL Server 2014 以降であれば、データファイル / ログファイルを Azure ストレージに直接配置することも可能
権限の設定
-
以下の権限の有効化の検討
- ボリュームの保守タスクを実行の有効化 (瞬時初期化)
- メモリ内のページのロックの有効化
- ボリュームの保守タスクを実行の有効化 (瞬時初期化)
仮想マシンのサイズ変更
-
最初に、A シリーズで作成した環境は、D シリーズに変更できないため、将来的に D シリーズに変更する可能性がある場合は、作成時の仮想マシンのサイズに注意する
- D シリーズの仮想マシンにサイズ変更できない事象について
http://blogs.msdn.com/b/dsazurejp/archive/2015/09/29/10644536.aspx
- D シリーズの仮想マシンにサイズ変更できない事象について
可用性設定
-
同一の可用性セットで 2 インスタンスを構築する
- AlwaysOn 可用性グループでデータベースの冗長化を実施する
- AlwaysOn 可用性グループでデータベースの冗長化を実施する
-
ハートビートの間隔調整
-
同一のサブネットの場合
- SameSubnetDelay (デフォルト : 1,000 (1 秒) )
https://msdn.microsoft.com/en-us/library/windows/desktop/jj151938(v=vs.85).aspx
-
SameSubnetThreshold (デフォルト : 5 回)
https://msdn.microsoft.com/en-us/library/windows/desktop/jj151939(v=vs.85).aspx
- 余裕のあるハートビートの間隔とする場合、10 程度への変更を検討
- 余裕のあるハートビートの間隔とする場合、10 程度への変更を検討
- SameSubnetDelay (デフォルト : 1,000 (1 秒) )
-
異なるサブネットの場合 (AWS の Multi-AZ も該当)
- CrossSubnetDelay (1,000 (1 秒))
https://msdn.microsoft.com/en-us/library/windows/desktop/jj151927(v=vs.85).aspx
- CrossSubnetThreshold (デフォルト : 5 回)
https://msdn.microsoft.com/en-us/library/windows/desktop/jj151928(v=vs.85).aspx
- CrossSubnetDelay (1,000 (1 秒))
-
-
2016/1/23 時点では、Azure File は WSFC の監視用共有フォルダーとしてはサポートされていないため、ノードまたはノード内の共有フォルダーを用いたクラスター構成とする
- Windows で Azure File ストレージを使用する方法
https://azure.microsoft.com/ja-jp/documentation/articles/storage-dotnet-how-to-use-files/
- Windows で Azure File ストレージを使用する方法
-
AlwaysOn 可用性グループのリスナー向けのエンドポイントの設定
- 監視ポート (Probe ポート) の設定 : 一般的なものは 59999
-
Direct Server Return を有効化
- 内部ロードバランサーでは、同一の VNET 内のクライアントのみをサポート
- 内部ロードバランサーでは、同一の VNET 内のクライアントのみをサポート
- Azure Virtual Machines における SQL Server の高可用性と障害復旧
https://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-sql-server-high-availability-and-disaster-recovery-solutions/
- 監視ポート (Probe ポート) の設定 : 一般的なものは 59999
管理作業
-
以下は管理作業の例
-
週次
- 完全バックアップ
- インデックスメンテナンス
- データベース整合性チェック
- 完全バックアップ
-
日次
差分バクアップ
-
毎時
- トランザクションログバックアップ
- トランザクションログバックアップ
-
ワークロード監視
- Operational Insights の利用の検討
Data Warehouse (DW) / OLTP 向けに最適化されたイメージの構成
-
15 のデータディスクを使用
- 12 データディスクでデータファイル用のディスクを構成
- 2 データディスクでログファイル用のディスクを構成
- 12 データディスクでデータファイル用のディスクを構成
-
起動パラメーター
- -E オプション : 2MB エクステント)
- -T 1117 : 自動拡張発生時のファイルグループ内のデータファイルの同時拡張
- -T 1118 : 混合エクステントの使用の抑制
- -E オプション : 2MB エクステント)
-
権限の設定
- ボリュームの保守タスクを実行の有効化 (瞬時初期化)
- メモリ内のページのロックの有効化
- ボリュームの保守タスクを実行の有効化 (瞬時初期化)
-
ストレージプールのストライプサイズ
-
DW : 256 KB
- model データベースの復旧モデルが SIMPLE になっている
- model データベースの復旧モデルが SIMPLE になっている
- OLTP : 64 KB
-
参考
- Deploying SQL Server With Microsoft Azure Virtual Machine
https://sqlbits.com/Sessions/Event14/Deploying_SQL_Server_with_Microsoft_Azure_Virtual_Machine
https://snapboardcontent.blob.core.windows.net/accounts/devintersectionfall14/content/Ward%20-%20SQL%20Azure%20VM%20.pdf
http://www.sqltran.org/sqlintersection-session-deploying-sql-server-with-microsoft-azure-virtual-machine/
- Azure 上でフェールオーバー クラスターを構築する際の留意事項について
http://blogs.technet.com/b/askcorejp/archive/2016/01/07/azure.aspx
- IaaS with SQL AlwaysOn – Tuning Failover Cluster Network Thresholds
http://blogs.msdn.com/b/alwaysonpro/archive/2014/06/02/iass-with-sql-alwayson-tuning-failover-cluster-network-thresholds.aspx
- Tuning Failover Cluster Network Thresholds
http://blogs.msdn.com/b/clustering/archive/2012/11/21/10370765.aspx