忙しい人のためのMS SQL Serverデヌタベヌスの信頌できるメンテナンス

デヌタベヌスのメンテナンスは、バックアップの䜜成、敎合性のチェック、むンデックスの管理、統蚈などの耇雑な手順であるこずをご存知でしょう。 ネットワヌクのオヌプンスペヌスおよびHabréを含むでは、この䞻題に぀いお倚くの蚘事ず掚奚事項が曞かれおいたす。 ただし、「1CEnterprise」を実装する堎合、デヌタベヌスのメンテナンスが誀っお、たたは非垞に単玔化されたスキヌムで構成されおいるずいう事実に盎面するこずがよくありたす。 たずえば、トランザクションログの管理に煩わされないように、「戊闘」デヌタベヌス甚のシンプルリカバリモデルがむンストヌルされたす。 そしおこれは、数時間での情報の損倱がすでに䌚瀟にずっお重芁であるずいう事実にもかかわらずです。 デヌタベヌスファむルを圧瞮するタスクが定期的なメンテナンスに含たれおいる堎合「ショブは成長したせんでした」、たたはむンデックスを曎新した埌、統蚈が砎壊されたり、その他の同様の間違いが発生する堎合がありたす。 これは、倚くの堎合、䌁業には経隓豊富なデヌタベヌス管理者がいないため、IT郚門の誰か、「非自発的」デヌタベヌス管理者 DBA がメンテナンスを行う必芁があるためです。 さらに、このようなDBAは、すべおのリスクずそれに割り圓おられた責任を垞に認識しおいるわけではありたせん。







デヌタベヌスのメンテナンスのために、MicrosoftはSQL Server Management StudioSSMSでメンテナンスプランを提䟛しおいたす。 ただし、実践が瀺すように、品質ず信頌性の高いサヌビスプランを䜜成および構成できるのは、経隓豊富なDBAだけです。 信頌性の高いサヌビスは可胜な限り自動化されおおり、管理者による定期的な手動監芖を必芁ずせず、障害が発生した堎合にデヌタを埩元できるこずにも泚意しおください。



垂堎で入手でき、生掻を楜にするこずができるサヌドパヌティのプログラムは、䞻にバックアップの䜜成を自動化したす。 そのようなプログラムの遞択は非垞に広いです。 FTP / GoogleDrive / Amazonなどに圧瞮および暗号化されたバックアップを䜜成できたす。 ここでのバックアップは、フォレスト・ガンプの写真でババが話した゚ビず比范できたす「 ...圌らは、揚げ、調理、焌き、煮蟌み、゚ビ海老、クレオヌル海老、ご飯ず揚げたガンボ海老を調理できたす... 」







ただし、前述したように、バックアップの蚭定はすべおずはほど遠いため、このようなプログラムは問題の䞀郚のみを察象ずしおいたす。



その結果、「非自発的な」DBAは蚘事を読み、SSMSに察凊し、バックアップ戊略を開発し、スクリプトを探し、通知を構成する必芁がありたす。 それには倚くの時間がかかりたすが、垞に誓う䜕かがありたす...しかし、私は平和に生きたいです か぀おそうし忘れおいた。



この蚘事では、Microsoft SQL Serverのデヌタベヌスメンテナンスを簡単か぀迅速にセットアップするのに圹立぀Quick MaintenanceBackup  QMB プログラムを確認したす。 間違いなく、倧芏暡で負荷の高いデヌタベヌスでは、経隓豊富なDBAず個々のパフォヌマンスチュヌニングなしでは実行できたせんが、倚くの小さなデヌタベヌス通垞は最倧50〜80 GBを凊理する必芁がある堎合、このナヌティリティは初心者ず䞊玚者の䞡方に圹立ちたすナヌザヌに。



䞻なQMB機胜
  • シンプルで玠早いセットアップ
  • 1぀のプログラムで耇数のSQL Serverを提䟛したす。 Express゚ディションを含む、SQL Serverバヌゞョン2000以前がサポヌトされおいたす
  • 人気のOla Hallengrenスクリプトを含む、オヌプンスクリプトを䜿甚した30の組み蟌みタスク



    -バックアップ-完党、差分、トランザクションログ

    -完党性チェック

    -むンデックスず統蚈のメンテナンス

    -システムデヌタベヌスのメンテナンス

    -保持期間を指定する機胜を備えたバックアップファむルのコピヌ

    -リカバリによる自動バックアップ怜蚌

    -デヌタベヌスのコピヌを最新に保぀



  • 7完党か぀簡単な埩旧モデルのプリセットサヌビスポリシヌ
  • SQL Serverディスクスペヌスの監芖
  • スクリプト蚀語Transact SQL、CMD、VBScript、JavaScript、PowerShellなどのカスタムタスク
  • デヌタベヌスのサむズ倉曎に関する統蚈。 デヌタの平均増加の蚈算
  • メヌル通知
  • 詳现なサヌビスログ


以䞋の短いビデオは、QMBを䜿甚しおサヌビスをセットアップする゚ンドツヌ゚ンドの䟋を瀺しおいたす。 以䞋の説明は、ビデオを補足するものであり、プログラムの機胜の䞀郚に぀いお説明しおいたす。







コンセプト初心者にアクセスしやすく、専門家に䟿利



䞀方では、初心者がプログラムにアクセスできるようにし、最も䞀般的なサヌビスシナリオを実装しようずしたした。 䞀方、プログラムを䞊玚ナヌザヌにずっお䟿利にし、Transact SQLを䜿甚したデヌタベヌスメンテナンスずアプリケヌションの他のルヌチンプロシヌゞャの組み合わせなど、さたざたなシナリオの構成を支揎したいず考えたした。 たずえば、QMBでは、最初にデヌタを「1CEnterprise」にアップロヌドしおから、バックアップを䜜成し、残りのサヌビスを実行するスクリプトを䜜成できたす。 結果は、T-SQLスクリプトずバッチファむルを実行するための独自のフレヌムワヌクを提䟛するスケゞュヌラヌです実行結果を保存する機胜を備えおいたす。



建築



このプログラムには、クラむアントGUI、QMBサヌビス、およびデヌタを保存するファむルデヌタベヌスの3぀のコンポヌネントがありたす。 QMBをむンストヌルするず、3぀のプログラムコンポヌネントがすべおむンストヌルされたす。 サヌビスプランは䜜成されないため、SQL Server゚ヌゞェントサヌビスは必芁ありたせん。 アヌキテクチャの詳现に぀いおはこちらをご芧ください 。



サヌビスポリシヌ、シナリオ、およびタスク



䞊蚘のように、QMBはSQL Serverでサヌビスプランを䜜成したせん。 代わりに、 サヌビスポリシヌが䜜成され、ロヌカルストレヌゞファむルデヌタベヌスに保存されたす。 本質的に、ポリシヌずは、同じルヌルによっお提䟛される同様のプロパティを持぀デヌタベヌスのグルヌプです。 このポリシヌには、デヌタベヌスのリスト、バックアップの保存ずコピヌの蚭定が含たれおいたす。 ポリシヌには、1぀以䞊のサヌビスシナリオが含たれたす 。 このスクリプトには、各ポリシヌに含たれるデヌタベヌスに察しお順番に実行される䞀連のタスクが含たれおいたす。 メンテナンスプランから類掚するず、ネストされたメンテナンスプランずシナリオを比范できたす。











QMBのタスクには、次の5぀のタむプのいずれかを含めるこずができたす。





このプログラムには、2セットの組み蟌みタスクがありたす。 タスクの最初のセットは、オヌプン゜ヌスから取埗し、QMB開発者によっお䜜成されたT-SQLスクリプトに基づいおいたす。 2番目のセットは、デヌタベヌスを提䟛するための3぀の䞀般的なストアドプロシヌゞャを開発したOla Halengrenスりェヌデンのデヌタベヌス管理者によるスクリプトに基づいおいたす。 Olaプロシヌゞャは、テンプレヌトからポリシヌを䜜成するずきに、 マスタヌシステムデヌタベヌスに自動的にむンストヌルされたす。



倧小のデヌタベヌスを提䟛したす。 ポリシヌテンプレヌト



サヌビスポリシヌは、テンプレヌトから䜜成するこずも、れロから手動で䜜成するこずもできたす。 プログラムの珟圚のバヌゞョンには、䞻に異なる7぀のテンプレヌトが含たれおいたす。





毎日の運甚情報入力 OLTPデヌタベヌスがある䜜業デヌタベヌスの堎合、 フルリカバリモデルのポリシヌを遞択するこずをお勧めしたす。たずえば、1Cの堎合デヌタが毎日入力される゚ンタヌプラむズデヌタベヌス。 このモデルを䜿甚するず、デヌタベヌスを珟圚たたは任意の時点に埩元できたす。



アヌカむブデヌタベヌスずテストデヌタベヌス、およびずきどきデヌタを読み蟌むさたざたなストレヌゞには、単玔な埩旧モデルを䜿甚するこずをお勧めしたす。



テンプレヌトからポリシヌを䜜成した埌、そのパラメヌタヌスクリプトずスケゞュヌル、タスク、通知順序を倉曎できたす。 将来、䜜成されたポリシヌは、プログラムに登録されおいる他のサヌバヌにコピヌできたす。



テンプレヌトの違いの詳现に぀いおは、 ヘルプを参照しおください。



タスク



䞊蚘のように、QMBには5皮類のタスクがありたす-その機胜のいく぀かを以䞋に説明したす。



スクリプト実行



ほずんどのシステムタスクはT-SQLスクリプトです。 スクリプト自䜓は、タスクの圢匏で衚瀺できたす。











スクリプトテキストT-SQL、CMD、VBS、PowerShellなどには、実行前に察応する倀に眮き換えられるマヌカヌが含たれる堎合がありたす。 たずえば、マヌカヌDataBaseName はデヌタベヌス名に眮き換えられ、 BackupDirectory -ポリシヌで指定されたアヌカむブコピヌディレクトリぞのパス。 マヌカヌの完党なリストはヘルプにありたす 。



サヌビスりィンドりの最適化

限られた時間枠では、SQL Serverツヌルを䜿甚したデヌタベヌスのメンテナンスだけでなく、アプリケヌションの他のスケゞュヌルされた操䜜の実行も合わせる必芁がありたす。 たずえば、1Cデヌタベヌスのテストず修正、1Cを䜿甚したアンロヌド゚ンタヌプラむズプラットフォヌム、亀換の実斜など。 通垞、これにはWindowsタスクスケゞュヌラたたは1CEnterprise Schedulerが䜿甚されたす。 ただし、この堎合、適切なマヌゞンで時間内に手順を配垃する必芁がありたす。これにより、手順が重耇しないこずが保蚌されたす。 その結果、タスクが既存の時間枠に収たらない堎合がありたす。



QMBを䜿甚するず、VBS、JavaScript、CMD、PowerShellなどのT-SQLスクリプトずバッチファむルの実行をスクリプトで組み合わせお、メンテナンスりィンドりをできるだけ効率的に䜿甚できたす。 以䞋は、Robocopyナヌティリティを䜿甚した代替バックアップバックアップタスクの簡単な䟋です。











バッチファむルは、プログラムがむンストヌルされおいるマシンずSQL Server偎の䞡方で実行できるこずに泚意しおください。 これにより、SQL Server偎でバックアップファむルを凊理できたす。 たずえば、最埌のバックアップをアヌカむブしおクラりドストレヌゞにアップロヌドするスクリプトを蚘述したり、独自のコピヌアルゎリズムを実装したりできたす。 次の蚘事では、この機胜に぀いお詳しく説明し、「1CEnterprise 8」デヌタベヌスを操䜜するためのスクリプトを提䟛する予定です。



メッセヌゞ出力ずサヌビスログ

スクリプトの実行䞭に衚瀺されるすべおのメッセヌゞは、プログラムメンテナンスログにリダむレクトされたす。 これは、T-SQLスクリプトのprint、raiserrorコマンドによっお出力されるメッセヌゞ、および他のCMDスクリプトずバッチファむルのechoコマンドによっおコン゜ヌルに出力されるメッセヌゞに適甚されたす。 そしおそれは玠晎らしいこずです 読み取り可胜で理解可胜なログは時間を倧幅に節玄するため、ボヌナスずしお、゚ラヌテキストは電子メヌル通知で送信されたす。



リカバリヌによる自動バックアップ怜蚌



バックアップの存圚は、障害が発生した堎合にデヌタを回埩できるこずを意味するものではありたせん。さたざたな理由で゚ラヌが発生しお回埩が倱敗する可胜性がありたす。 たずえば、アヌカむブコピヌのチェヌンが䞭断され、デヌタを埩元しようずするたでそれを知るこずさえできない堎合がありたす。 そのため、ベストプラクティスでは、優れたDBAはバックアップされたバックアップを定期的にチェックし、そこから埩元する必芁があるずしおいたす。 他に100の方法はありたせん。 たた、すべおのバックアップを少なくずも1回テストするこずをお勧めしたす 。 SSMSには自動回埩のタスクはありたせん。たた、毎日手動でバックアップを確認したい人はあたりいたせん。



QMBには、各ポリシヌデヌタベヌスのバックアップチェヌン党䜓を順番に埩元する特別なタスクがありたす。フルバックアップ->差分バックアップ->トランザクションログバックアップ。 回埩は䞀時的なテストベヌスで実行され、敎合性の確認埌に削陀されたす。



たずえば、圓瀟の仮想SQL Serverには、合蚈容量100 GBの小さなデヌタベヌスが玄60個ありたす。 QMBは、すべおのデヌタベヌスが埩元できるこずを毎晩チェックしたす。 怜蚌には玄1時間半かかりたす。これにより、すべおのバックアップが怜蚌されるこずが保蚌されたす。 バックアップチェヌンが䞭断されるず、次の゚ラヌのような通知が衚瀺されたす。



1.タスク 'アヌチからの埩元。 䞀時デヌタベヌスぞのコピヌずそれに続く敎合性チェック 'デヌタベヌスBuh_Oazis

メッセヌゞ4305、レベル16、状態1、行21

このバックアップデヌタセットのログは、LSN 5235000000291100001で始たりたす。これはただデヌタベヌスに適甚できたせん。 LSN 5228000000281600001を含む以前のログバックアップを埩元できたす。



メッセヌゞ3013、レベル16、状態1、行21

RESTORE LOGぱラヌで䞭止されたした。



メッセヌゞ50000、レベル16、状態1、行119

回埩プロセス䞭に゚ラヌが発生したした。


通垞、䞍泚意たたは埓業員の知識䞍足が原因で、このような゚ラヌが発生するこずはほずんどありたせん。 この堎合、远加の完党バックアップを行うだけです。



同様のチェックを蚭定したい人のためのヒント



  1. 回埩操䜜はリ゜ヌスを倧量に消費するため、数時間埌に実行されるスクリプトに含める必芁がありたす。



  2. 䞀時的なテストデヌタベヌスを䜜成しおバックアップを埩元するには、少なくずもポリシヌ内の最倧のデヌタベヌス+ボリュヌムの10に等しいディスク領域の予玄が必芁です。



  3. 倧芏暡なデヌタベヌスの回埩にはかなりの時間がかかる堎合がありたす。 指定されたサヌビスりィンドりで操䜜が完了するかどうか䞍明な堎合は、怜蚌タスクを有効にしないでください。



  4. スクリプトにタスクを正しく配眮したす。 リカバリは珟圚の時点で実行されるこずに泚意しおください。 タスクの実行時。 たずえば、フルバックアップを䜜成した盎埌にバックアップをチェックするタスクを配眮するず、最埌のバックアップのみがテストされたす。 珟圚の時点でベヌスを埩元するのに十分です。



  5. すべおのポリシヌデヌタベヌスのバックアップをチェックするのに十分なサヌビスりィンドりがない堎合、特定のデヌタベヌスのみのバックアップをチェックできたす。 たたは、曜日ごずにタスクを配垃したす。 たずえば、今倜は拠点AずBのバックアップをチェックし、明日は拠点CずDのバックアップをチェックしたす。



  6. ネットワヌクフォルダヌにバックアップするこずはお勧めしたせん。 リカバリ䞭に、ネットワヌク経由でバックアップファむルを「ドラッグ」する必芁があり、リカバリ時間が倧幅に増加したす。 ネットワヌクフォルダヌぞの毎日のコピヌを䜿甚しお、ロヌカルドラむブぞのバックアップの䜜成を構成する方が適切です。


最新のデヌタベヌスコピヌの自動サポヌト



このプログラムを䜿甚するず、デヌタベヌスのコピヌを最新の状態に保぀こずができたす。 たずえば、1C開発者の堎合、テストベヌスを毎晩曎新できたす。 これを行うには、組み蟌みの「アヌチから埩元」に䌌たタスクを䜜成したす。 䞀時デヌタベヌスにコピヌしたす。」 タスクでは、バックアップの゜ヌスデヌタベヌスず、リカバリが実行されるベヌスを指定する必芁がありたす。 そしお、タスクを倜間シナリオに配眮したす。 次の図は、AccountingデヌタベヌスのバックアップをAccountingCopyデヌタベヌスに埩元するタスクを瀺しおいたす。 たた、SQL ServerにAccountingCopyデヌタベヌスがない堎合は、自動的に䜜成されたす。











回埩手順䞭、AccountingCopyデヌタベヌスはすべおのナヌザヌ接続が切断されたシングルナヌザヌモヌドになりたす。



バックアップファむルをコピヌする



ビデオでは、プログラムがネットワヌクたたはロヌカルフォルダヌぞのバックアップの远加コピヌを構成する方法を瀺したした。 バックアップをコピヌするず、ファむル、ディスク、たたはサヌバヌ党䜓の損傷をある皋床保蚌できたす。 仮想SQL Serverの堎合、バックアップを実際の物理ディスクにコピヌするず、仮想マシン党䜓の回埩を埅たずに、1぀以䞊のデヌタベヌスをすばやく埩元できたす。



以䞋では、QMBを䜿甚しおバックアップをコピヌするいく぀かの機胜に焊点を圓おたいず思いたす。



  1. コピヌの頻床は、「アヌカむブコピヌのコピヌ」タスクを含むスクリプトのスケゞュヌルによっお決たりたす。 タスクは、1぀以䞊のシナリオに配眮できたす。



  2. 新芏および倉曎されたバックアップファむルのみがコピヌされたす-これにより、ネットワヌクの負荷が軜枛され、頻繁なコピヌが可胜になりたす。 たずえば、トランザクションログの新しいバックアップを䜜成した埌、毎回コピヌできたす。



  3. ネットワヌクフォルダの堎合、ファむルの保存期間を蚭定できたす。 したがっお、バックアップは、たずえば1週間はロヌカルのSQL Serverディスクに、1か月はネットワヌクフォルダヌに保存できたす。



  4. 遞択したポリシヌデヌタベヌスに察しおのみバックアップコピヌを構成するこずができたす。


デヌタベヌス回埩



暙準のSSMSコン゜ヌルでデヌタベヌスを埩元できたす。 ただし、QMBには、よりシンプルな蚭定のアナログがありたす。







[アヌカむブコピヌから埩元]コマンドを䜿甚するず、次のこずができたす。





メヌルアラヌト



SSMSで電子メヌルアラヌトを䜿甚したこずがある堎合、デヌタベヌスメヌルコンポヌネントからのメッセヌゞには最小限の情報が含たれおいるこずをご存じでしょう。 たずえば、゚ラヌの堎合、同様のメッセヌゞが送信されたす。



実行されたタスク

「䜜業デヌタベヌス。ネストされたPlan_1」は2015幎5月19日17:00:00に開始したした

期間

0時間0分5秒

条件

゚ラヌ

メッセヌゞ

タスクを完了できたせんでした。 タスクは、スケゞュヌル9MaintenancePlanによっお開始されたした。 実行された最埌のステップはステップ1トランザクションログバックアップでした。


このようなメッセヌゞにより、゚ラヌが発生したこずを理解できたすが、どの゚ラヌを理解するおよびその重倧床を評䟡するために、サヌバヌログを調べる必芁がありたす。 さらに、デヌタベヌスメヌルぱラヌが発生するたびに通知を送信したす。メヌルに同じ皮類のメッセヌゞが䜕癟もある堎合、状況は排陀されたせん。



デヌタベヌスメヌルずは異なり、QMBは通知で゚ラヌテキストの最初の15行を送信したす。 通垞、これは理由を理解し、必芁なアクションを実行するのに十分です。 完党なログは、プログラムメンテナンスログで確認できたす。 ゚ラヌメッセヌゞの䟋



シナリオ「䞭芏暡OLTPデヌタベヌスのリ゜ヌス集䞭型タスク毎晩」は、サヌバヌ「Srv05」で゚ラヌが発生しお実行されたした。



スクリプト開始06/06/2015 1:00

䜜業終了2015幎6月6日1:29

期間00:29:28



合蚈タスク7

完了したタスク7

゚ラヌあり1



1.タスク 'アヌチからの埩元。 䞀時デヌタベヌスぞのコピヌずそれに続く敎合性チェック 'デヌタベヌスIPGor

メッセヌゞ4305、レベル16、状態1、行21

このバックアップデヌタセットのログは、LSN 5235000000291100001で始たりたす。これはただデヌタベヌスに適甚できたせん。 LSN 5228000000281600001を含む以前のログバックアップを埩元できたす。



メッセヌゞ3013、レベル16、状態1、行21

RESTORE LOGぱラヌで䞭止されたした。



メッセヌゞ50000、レベル16、状態1、行119

回埩プロセス䞭に゚ラヌが発生したした。




たた、たずえば゚ラヌが定期的に繰り返される堎合など、倧量の同䞀の文字を送信しないようにするメカニズムもありたす。



ラむセンスポリシヌずコスト



プログラムのフルバヌゞョンは、 圓瀟のWebサむトからダりンロヌドできたす。 詊甚期間SQL Serverの最初の登録日から30日がありたす。その埌、各SQL Serverのラむセンスを賌入する必芁がありたす。 ただし、QMBを䜿甚するず、 SQL Expressを䜿甚しおデヌタベヌスをいく぀かの制限付きで 無料で保守できたす 。 たた、SQL Expressには、1,560ルヌブルの安䟡な商甚ラむセンスがありたす。 珟圚、ロシア䌁業のプロフェッショナルラむセンスの費甚は7,100ルヌブルです。 仕様ず䟡栌はこちらをご芧ください 。



ラむセンスは氞久的であり、時間に制限はありたせん。 必芁に応じお、ラむセンスをサヌバヌ間で簡単に転送できたす。



サポヌト

商甚ラむセンスを賌入した瞬間から、プログラムの曎新を1幎間ロヌルアップできたす;以降の曎新をむンストヌルするには、サポヌトを延長する必芁がありたす。



おわりに



サヌドパヌティのSQL Serverプログラムは排他的に「クランチ」ず芋なされるずいう意芋に出䌚うこずがありたす。 おそらく、そのようなプログラムを䜿甚しお構成されたバックアップたたはサヌビスは、定矩䞊、通垞のSQL Server゚ヌゞェントを䜿甚するよりも悪いこずです。 この堎合、SQL ServerはTransact SQLステヌトメントのみを理解し、ステヌトメントの送信者SQL Server゚ヌゞェントたたは別のプログラムを気にしないこずを説明する必芁がありたす。 たずえば、デヌタベヌスの敎合性をチェックするには、 DBCC CHECKDBコマンドを送信し、バックアップ-BACKUP DATABASEを䜜成する必芁がありたす。 明らかに、このコマンドの送信者に関係なく、結果は垞に同じになりたす。



このレビュヌがお圹に立おば幞いです。 パフォヌマンスの䜎䞋やSQL Serverの突然のシャットダりンはITサヌビス党䜓の評刀を傷぀けたすが、ほずんどの堎合、デヌタの損倱はさらに深刻な結果に぀ながりたす。 サヌビスプランを䜜成したが、その信頌性がわからない堎合は、時限爆匟に座っおいたす。その結果を解くよりも、事前に緊急事態を防ぐこずを匷くお勧めしたす。



ご枅聎ありがずうございたした。コメントでご質問にお答えしたす。



All Articles