sql server 構築 運用 tips

34
SQL Server 構築/運用 Tips Masayuki Ozawa

Upload: masayuki-ozawa

Post on 29-Jul-2015

172 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sql server 構築 運用 tips

SQL Server 構築/運用 Tips

Masayuki Ozawa

Page 2: Sql server 構築 運用 tips

自己紹介

System Center User Group Japan 12第 回勉強会2

フリーランスエンジニアとして SQL Server の案件を中心に従事しています 案件等で協力できることがありましたらお声掛けいただけると幸いです

「SQL Server 現状診断」による SQL Server 稼働状況の報告書作成 SQL Server に関してのオンサイト / オフサイトでの技術支援

コミュニティやブログで SQL Server の情報を発信 コミュニティ活動 SQL Server : SQLTO (http://sqlto.net)Azure : JAZUG (http://r.jazug.jp/)

ブログ : SE の雑記 (http://blog.engineer-memo.com) Twitter : @Masayuki_Ozawa

2015/04/18

Page 3: Sql server 構築 運用 tips

本日の Agenda

2015/04/18System Center User Group Japan 12第 回勉強会3

シングルインスタンスの基本的な構成を例とした Tipsクラスター等の環境は対象外です

SQL Server 構築 TipsSQL Server 運用 Tips

Page 4: Sql server 構築 運用 tips

SQL Server 構築 Tips

2015/04/18System Center User Group Japan 12第 回勉強会4

Page 5: Sql server 構築 運用 tips

使用する SQL Server の言語

2015/04/18System Center User Group Japan 12第 回勉強会5

インストールする SQL Server の言語 英語版はすべての言語でインストールが可能 それ以外の言語ローカライズされた OS (例 : 日本語版) MUI (例 : 日本語言語パック)をインストールした英語版 OS

SQL Server の言語の差による機能差は基本的にないが… CU で追加された SSMSの機能が英語版でないと動作しないケースが稀にある 例 : SQL Server 2014 CU5 の SQL Database v12 の GUI 対応

SQL Server のローカル言語版https://msdn.microsoft.com/ja-jp/library/ee210665.aspx

Page 6: Sql server 構築 運用 tips

インストールパラメーター

2015/04/18System Center User Group Japan 12第 回勉強会6

インストール時には構成ファイル (ConfigurationFile.ini)が内部で自動作成されている C:¥Program Files¥Microsoft SQL Server¥120¥Setup Bootstrap¥Log

無応答セットアップ / 他の環境でどのようにインストールされたかを確認する場合に利用できる

Page 7: Sql server 構築 運用 tips

インストール時に意識しておきたいポイント

2015/04/18System Center User Group Japan 12第 回勉強会7

.NET Framework 3.5 インターネット非接続環境では、OS インストールメディアを代替ソースパスに指定

インストールパス インスタンスルートディレクトリ : SQL Server のバイナリをインストールするディレクトリ

バージョンによっては、ベアメタル回復用のバックアップで上記ディレクトリが含まれる 共有機能ディレクトリ : SSMS 等の共有機能のバイナリをインストールするディレクトリ データルートディレクトリ : システムデータベース / ERRORLOG / SQL Server Agent ログが出力される

インスタンス 既定のインスタンス (TCP:1433) 名前付きインスタンス (動的ポート)

SQL Server Browser サービスは動的ポートを解決するためのサービス (UDP:1434)

照合順序 製品のよっては特定の照合順序を使用する必要がある

日本語版 OS (システムロケール : 日本語) のデフォルトは Japanese_CI_AS 英語版 OS のデフォルトは SQL_Latin1_General_CP1_CI_AS

Page 8: Sql server 構築 運用 tips

照合順序

2015/04/18System Center User Group Japan 12第 回勉強会8

内容の照合 (文字列の比較 / ソート)や非 Unicode データの文字コードを指定する設定 照合順序が異なると列の評価 (結合等)でエラーとなるケースがある

サーバー (インスタンス) レベルの照合順序 インストール時にのみ設定可能

変更するためにはシステムデータベースの再構築が必要 システムデータベース (master/model/msdb/tempdb) の照合順序に利用される

サーバーの照合順序の設定または変更 https://technet.microsoft.com/ja-jp/library/ms179254(v=sql.120).aspx

データベースレベルの照合順序 ユーザーデータベース個別に設定が可能 SQL Server 2012 以降は包含データベースにより、一時オブジェクトを tempdb の照合順序ではなくユーザーデータベースの照合順序で利用可能

列レベルの照合順序 特定の列のみ大文字 / 小文字を区別するというような指定が可能

Page 9: Sql server 構築 運用 tips

照合順序の影響の解消

2015/04/18System Center User Group Japan 12第 回勉強会9

SQL Server 2012 以降では、包含データベースを利用することで、インストール時の照合順序の影響を緩和 包含データベースの照合順序 https://msdn.microsoft.com/ja-jp/library/ff929080.aspx

アイテム 非包含データベース 包含データベースユーザー データ (既定値) DATABASE_DEFAULT DATABASE_DEFAULT 一時データ (既定値) TempDB の照合順序 DATABASE_DEFAULT メタデータ DATABASE_DEFAULT / CATALOG_DEFAULT CATALOG_DEFAULT 一時的なメタデータ tempdb の照合順序 CATALOG_DEFAULT 変数 インスタンスの照合順序 CATALOG_DEFAULT Goto ラベル インスタンスの照合順序 CATALOG_DEFAULT カーソル名 インスタンスの照合順序 CATALOG_DEFAULT

Page 10: Sql server 構築 運用 tips

累積修正プログラム

2015/04/18System Center User Group Japan 12第 回勉強会10

2 か月単位で累積修正プログラム (Cumulative Update) が提供されている 構築時に、最新の CU を適用するかを検討する (4/16 時点の最新)

SQL Server 2014 SP1 ( Non SP の CU1 ~ CU5 の修正含む) SQL Server 2014 CU6 SQL Server 2012 SP2 CU5

SQL Release Services Blog http://blogs.msdn.com/b/sqlreleaseservices/

技術情報 SQL Server 2012

Non SP : KB2692828 / SP1 : KB2772858 / SP2 : 2983249 SQL Server 2014

Non SP / SP1 : KB2936603 英語版で確認しないと最新の修正プログラムが記載されていないことがあるので注意

Page 11: Sql server 構築 運用 tips

ディスク構成

2015/04/18System Center User Group Japan 12第 回勉強会11

高負荷な SQL Serverではディスク構成も検討する パターン 1

E ドライブ : システムデータベース + ユーザーデータベース (データファイル) F ドライブ : ユーザーデータベース (ログファイル)

パターン 2 F ドライブ : システムデータベース F ドライブ : ユーザーデータベース (データファイル) G ドライブ : ユーザーデータベース (ログファイル)

パターン 3 E ドライブ : システムデータベース F ドライブ : tempdb G ドライブ : ユーザーデータベース (データファイル) H ドライブ : ユーザーデータベース (ログファイル)

Page 12: Sql server 構築 運用 tips

ディスク性能の考慮の例

2015/04/18System Center User Group Japan 12第 回勉強会12

SQL Database を例とした性能の考慮 1 セッションで、連続した 10,000 件の単純 INSERT この時のトランザクションログの書き込み待ちの状態

DTU waiting_tasks_count wait_time_ms max_wait_time_ms signal_wait_time_ms 平均 処理時間

Basic 5 10,010 70,845 6,144 449 7.1 ミリ秒 1:13

S0 10 10,028 58,606 452 495 5.8 ミリ秒 1:03

S1 20 10,116 62,560 4,504 842 6.1 ミリ秒 1:03

S2 50 10,039 74,650 1,107 1838 7.4 ミリ秒 1:16

S3 100 10,010 65,998 1,513 414 6.6 ミリ秒 1:08

P1 100 47 146 268 4 - 0:18

P2 200 127 194 125 38 - 0:26

P3 1,000 31 98 8 2 - 0:22

Page 13: Sql server 構築 運用 tips

ディスクの設定

2015/04/18System Center User Group Japan 12第 回勉強会13

アロケーションユニットサイズの推奨は 64KB fsutil fsinfo ntfsinfo <ドライブレター>

OLTP ではストライプサイズ 64KB / DWH 256KB を推奨

Azure Virtual Machines における SQL Server のパフォーマンスに関するベストプラクティス https://msdn.microsoft.com/ja-jp/library/azure/dn133149.aspx

Page 14: Sql server 構築 運用 tips

SQL Server の設定

2015/04/18System Center User Group Japan 12第 回勉強会14

細かなパラメーターチューニングをしなくても、ある程度動作するそういう製品思想なので細かなパラメーター設定をしなくてもある程度の性能で動作する

一般的に変更する設定ローカルセキュリティーポリシー (secpol.msc)ユーザー権利の割り当て

SQL Server サーバー構成オプショントレースフラグ

Page 15: Sql server 構築 運用 tips

DEMO

2015/04/18System Center User Group Japan 12第 回勉強会15

ローカルセキュリティポリシートレーフラグの設定

Page 16: Sql server 構築 運用 tips

サービスアカウントの変更

2015/04/18System Center User Group Japan 12第 回勉強会16

サービスアカウントは必ずSQL Server 構成マネージャーから変更 MMCのサービス (Services.msc) からは実施しない

SQL Server構成マネージャーから変更しないと、サービスアカウントに適切な権限が付与されず、サービスが正常に起動しない恐れがある

SQL Server のサービス開始アカウントの変更 (SQL Server 構成マネージャー) https://msdn.microsoft.com/ja-jp/library/ms345578.aspx

SQL Server 2000 の SQL Enterprise Manager または SQL Server 2005 の SQL Server 構成マネージャを使用せずに SQL Server または SQL Server エージェントサービスのアカウントを変更する方法 https://support.microsoft.com/en-us/kb/283811/ja

Page 17: Sql server 構築 運用 tips

サーバー名の変更

2015/04/18System Center User Group Japan 12第 回勉強会17

SQL Serverでは内部にサーバー名を保持しており、OSのサーバー名を変更する場合は SQL Serverとしてもサーバー名を変更する必要があるsp_dropserver <old_name>;GOsp_addserver <new_name>, local;GO

SQL Server のスタンドアロンインスタンスをホストするコンピューターの名前変更 https://technet.microsoft.com/ja-jp/library/ms143799.aspx

Page 18: Sql server 構築 運用 tips

SQL Server 運用 Tips

2015/04/18System Center User Group Japan 12第 回勉強会18

Page 19: Sql server 構築 運用 tips

通常運用

2015/04/18System Center User Group Japan 12第 回勉強会19

起動

バックアップ

データメンテナンス

監視

Page 20: Sql server 構築 運用 tips

起動

2015/04/18System Center User Group Japan 12第 回勉強会20

正常に起動しない場合は、sqlservr.exeを最小構成オプション (-f) を使用して起動できるかを確認 データベースエンジンサービスのスタートアップオプション

https://msdn.microsoft.com/ja-jp/library/ms190737.aspx SQL Server のインスタンス (sqlservr.exe) を起動する方法

https://technet.microsoft.com/ja-jp/library/ms180965.aspx

ERRORLOGを確認することで起動時のログを確認することができる

Page 21: Sql server 構築 運用 tips

DEMO

2015/04/18System Center User Group Japan 12第 回勉強会21

コマンドラインからの起動

Page 22: Sql server 構築 運用 tips

バックアップ

2015/04/18System Center User Group Japan 12第 回勉強会22

復旧モデルに応じて適切なバックアップを設定する

完全と一括ログを使用する場合、定期的なログバックアップは必須 定期的なログバックアップを行わないとログファイルが肥大化する 初回の完全バックアップ以降にログが蓄積されていくので検証時は注意

本番環境での単純での運用は必ずしも悪いことではない バックアップ取得時点に復元できればよいのであれば単純で運用可能

復旧モデル 完全バックアップ 差分バックアップ ログバックアップ完全 ○ ○ ○一括ログ ○ ○ ○単純 ○ ○ -

Page 23: Sql server 構築 運用 tips

DEMO

2015/04/18System Center User Group Japan 12第 回勉強会23

初回バックアップと復旧モデル

Page 24: Sql server 構築 運用 tips

バックアップ間隔の例

2015/04/18System Center User Group Japan 12第 回勉強会24

パターン 1 完全バックアップ : 毎週 1 回 差分バックアップ : 完全バックアップを取得する曜日以外 ログバックアップ : 1 時間間隔

パターン 2 完全バックアップ : 毎日 1 回 ログバックアップ : 1 時間間隔

パターン 3 完全バックアップ : 毎日 1 回 パターン 3 は単純を使用している場合のみ適用可能

Page 25: Sql server 構築 運用 tips

臨時バックアップの取得

2015/04/18System Center User Group Japan 12第 回勉強会25

バックアップチェーンを崩さないようにバックアップを取得

COPY_ONLY バックアップを使用することで、臨時バックアップを取得 コピーのみのバックアップ (SQL Server)

https://msdn.microsoft.com/ja-jp/library/ms191495.aspx

完全バックアップ差分バックアップ

差分バックアップ

臨時バックアップ

Page 26: Sql server 構築 運用 tips

バックアップ圧縮の利用

2015/04/18System Center User Group Japan 12第 回勉強会26

SQL Server 2008 R2 以降は Standard Edition でバックアップ圧縮を利用することが可能 バックアップファイルのサイズ削減 バックアップ時間の削減 バックアップ中の CPU使用率の上昇

デフォルトの設定では明示的に圧縮を指定する必要がある

Page 27: Sql server 構築 運用 tips

データメンテナンス

2015/04/18System Center User Group Japan 12第 回勉強会27

インデックスの断片化解消 再構成 : REORGANIZE オンラインで実施可能 既存のデータ領域を用いてデータを整列

再構築 : REBUILD Enterprise Edition の場合はオンラインで実施可能それ以外のエディションでは再構築中はオフラインとなる

新規のデータ領域に整列したデータを作成 Extent Scan Fragmentation の解消にもつながる

インデックスがどれくらいの期間で断片化するかを把握 例) 30 分で断片化するインデックスを 1 時間かけて解消する意味はあるか

Page 28: Sql server 構築 運用 tips

データメンテナンス

2015/04/18System Center User Group Japan 12第 回勉強会28

統計情報 適切なクエリの実行プランを生成するためには、最新のデータを使用して十分なデータのサンプリングでの、統計情報の作成が必要となる

インデックスの再構築 (REBUILD) 時には 100% のサンプリングで統計情報が作成される

手動による統計情報の更新時にはWITH FULLSCANを使用しないと一定のサンプリングによる統計情報の作成となるので注意 UPDATE STATISTICS <テーブル名>(<インデックス名>) WITH FULLSCAN EXEC sp_updatestats 統計情報のサンプリングの確認 DBCC SHOW_STATISTICS ('<テーブル名>', '<インデックス名>')

Page 29: Sql server 構築 運用 tips

DEMO

2015/04/18System Center User Group Japan 12第 回勉強会29

断片化の解消と統計情報の更新アプリケーション観点の情報取得 (スロークエリ)

Page 30: Sql server 構築 運用 tips

メモリ使用量についての考慮

2015/04/18System Center User Group Japan 12第 回勉強会30

よくある監視 メモリの使用量が 90% を超えたら、監視でアラートを投げる

その監視、データベースサーバーでも有益ですか?? Max Server Memoryを設定して SQL Serverのメモリ割り当ての上限を指定

サーバーメモリに関するサーバー構成オプション https://msdn.microsoft.com/ja-jp/library/ms178067.aspx

データベースサーバーは可能な限りメモリにキャッシュする これを考慮して、メモリ使用量の監視を行う メモリ使用量が閾値を超えた→ さて、何をしましょう…。

Page 31: Sql server 構築 運用 tips

ポート / サービス監視

2015/04/18System Center User Group Japan 12第 回勉強会31

ポート監視 既定のインスタンス : TCP 1433

TCP 1434 (データベース管理者用の診断接続 :DAC) 名前付きインスタンス : 動的ポート (起動のたびにポートが変わる)

SQL Server Browser (UDP 1434) は名前付きインスタンスのポート番号を解決するためのサービスであるため、既定のインスタンス / 名前付きインスタンスをポートを固定して、ポート番号指定で接続する場合は起動していなくても影響はない

サービス監視 既定のインスタンス : MSSQLSERVER 名前付きインスタンス : MSSQL$<インスタンス名> プロセスとしてはどちらも sqlservr.exe

可能であればサービスの正常起動の確認 例) SELECT 1 を定期的に実行

Page 32: Sql server 構築 運用 tips

ERRORLOG

2015/04/18System Center User Group Japan 12第 回勉強会32

デフォルトでは 6 世代分作成される SQL Serverのサービスの起動時にローテーションされる 長期間起動しているサーバーでは ERRORLOGファイルが肥大化する

世代数は最大で 99 まで変更可能

手動でローテーションすることが可能 sp_cycle_errorlog (Transact-SQL)

https://msdn.microsoft.com/ja-jp/library/ms182512.aspx

SQL Server のエラーログの数を増やす方法 https://support.microsoft.com/en-us/kb/196909/ja

Page 33: Sql server 構築 運用 tips

メンテナンスジョブのクリーンアップ

2015/04/18System Center User Group Japan 12第 回勉強会33

以下の情報のクリーンアップを検討する バックアップ情報 SQL Server エージェントジョブ履歴 メンテナンスタスクのログファイル

メンテナンスプランの履歴クリーンアップタスク / メンテナンスクリーンアップタスクを有効に活用する 履歴クリーンアップタスク

バックアップおよび復元の履歴 SQL Server エージェントジョブ履歴 メンテナンスプランの履歴

メンテナンスクリーンアップタスク バックアップファイル メンテナンスプランテキストレポート

Page 34: Sql server 構築 運用 tips

まとめ

2015/04/18System Center User Group Japan 12第 回勉強会34

構築 構築時にしか設定できない設定できない項目を把握

インスタンスレベルの照合順序 ディスクのアロケーションユニットサイズ

サービスの再起動を伴う設定かどうかを考慮

運用 復旧モデルに応じた適切なバックアップ データメンテナンスの必要性 目的に適した監視が行える設定となっているか