データベースが正常であることを確認することは、データベース管理者が実行しなければならない重要かつ重要なことの1つです。データベースの保守を怠ると、問題が発生する可能性が高くなります。たとえば、時間の経過とともに変化したワークロードによって引き起こされたデータベースパフォーマンスの問題、またはデータ侵害につながる構成の誤りなどです。
構成、リソース使用率、バックアップと復元の手順、データのセキュリティ、クエリのパフォーマンスを定期的にチェックすることで、データベースの問題を回避できます。データベースがまだ管理されているかどうかを監視できるように、データベース環境の標準的なデータベースチェックを行う必要があります。
データベースヘルスチェックは、データベースの状態をチェックするためのいくつかのタスクで構成されています。なぜヘルスチェックを実行する必要があるのですか?パフォーマンスの問題、構成の問題、または停止の原因となる可能性のある問題であるかどうかにかかわらず、データベース環境の問題や異常を特定して修正する必要があります。
-
セキュリティチェック。データベースへのアクセスをロックダウンし、トラフィックが適切な信頼できるネットワークから送信されていることを確認します。特権。
-
構成チェック。構成が、組織によって定義された標準基準を満たしていることを確認します。
> -
パフォーマンスチェック。データベースがハードウェアリソースを使用しており、アプリケーションに応答していることを確認します。
-
バックアップと復元の手順。データベースから取得したバックアップを確実に復元できるようにします。
>
これらのカテゴリから、データベースでチェックする必要があるものの内訳を作成できます。これは非常に重要なので、あらゆる面で詳細なチェックを行うことができます。例:
-
データベースのセキュリティ
-
データベースのユーザーと権限をユーザーマトリックスアクセスと比較します
-
データベースのホワイトリストIPアドレスを確認し、トラフィックが信頼できるネットワークから送信されているかどうかを確認します
-
データベースの監査ログが有効になっていることを確認してください
-
構成チェック
-
すでに配置されているSSLを確認してください
-
データベース構成が正しいことを確認します(権限と所有権の両方)
-
パフォーマンスチェック
-
データベースのキャッシュヒット率を確認する
-
トラフィックを処理するのに十分なデータベース接続を確保する
-
バックアップと復元の手順
-
合意されたRPOを提供する適切なバックアップスケジュール
-
バックアップをテストして、データが復元可能であることを確認します
上記のリストに基づいて、各タイプのデータベース(MySQL、PostgreSQL、MongoDBなど)でこれらの項目をチェックするスクリプトを作成できます。データベースの種類ごとに、明らかに異なるコマンドがあります。
週単位または月単位で繰り返しタスクを実行する必要はありません。データベースのヘルスチェックは、時間のかかるタスクです。すべてのデータベースノードでスクリプトを実行するため、ヘルスチェックを自動化することで時間を大幅に節約できます。
ヘルスチェックスクリプトのリストに基づいて、タスクを実行し、cronでスケジュールするためのbashスクリプトを作成できます。以下は、単純なデータベースヘルスチェックレポートのサンプルです。
#!/bin/sh
# Simple database check report
username = "audit_user"
password = "pwd001"
hostname = "db01-payment"
mycnf = "/etc/mysql/my.cnf"
dt=$(date '+%d/%m/%Y %H:%M:%S');
audit_name = "MySQL_Healthcheck_audit_report_"$dt
# check the queries
/bin/mysql -h $hostname -u $username -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Queries'" > $audit_name
# check open table cache hit ratio
/bin/mysql -h $hostname -u $username -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Table_open_cache_hits'" >> $audit_name
# check the ssl session mode
/bin/mysql -h $hostname -u $username -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Ssl_session_cache_mode'" >> $audit_name
# check the buffer pool size
cat $mycnf | grep "innodb_buffer_pool_size" >> $audit_name
#check ssl key in my.cnf
cat $mycnf | grep "ssl_key" >> $audit_name
# check permission of my.conf
ls -ltr $mycnf >> $audit_name
ヘルスチェックは、Ansible、Salt、Chef、Puppetなどの構成管理ツールによって自動化することもできます。
ClusterControlを使用したデータベースヘルスチェックの自動化
ClusterControlは、データベース用のopsプラットフォームであり、データベース環境内のサーバーの状態、パフォーマンス、または可用性の問題をすべて中央コンソールから表示します。運用レポートによるデータベースヘルスチェックの自動化をサポートします。運用レポートとインシデントレポートを生成またはスケジュールできます。以下に示すように、レポートにはいくつかの種類があります。
日次システムレポートは、現在のデータベースクラスターに関する洞察を提供します。ノードサービスステータス、バックアップステータス、ノードの稼働時間、上位クエリの概要などのさまざまな情報。
パッケージアップグレードレポートには、からのアップグレードに使用できるパッケージの概要が表示されます。リポジトリマネージャー。
スキーマ変更レポートは、生成された2つの異なるレポート間で発生したテーブル構造のデータベース変更を比較します。
バックアップレポートには、バックアップの概要と詳細(最後に作成されたバックアップ、バックアップのステータス、バックアップの検証ステータス、バックアップの保持期間など)に関する情報が表示されます。
運用レポートとは別に、以下のように、CPU、ディスク、データベース接続などに関する洞察を提供するアドバイザもあります。
電子メールによる通知と、構成されたサードパーティチャネルによるアラートにより、問題が発生した場合(バックアップの失敗、復元不能なバックアップ、ノードの障害など)に関する洞察が得られます。
Schema Analyzerは、重複/冗長インデックス、主キーのないテーブル、およびMyISAMストレージエンジンを使用するテーブルに関する情報を提供します。冗長インデックスはデータベース(およびバックアップ)のサイズを膨らませ、テーブルの更新を遅くする可能性があるため、知っておくと特に便利です。