📙

データベース管理システムの運用について(超基礎)

に公開

データベースの運用方法を浅く広く

こんにちは!わいわわです。
現在就職活動中です、必要としてくれる場所に決まるとすごく嬉しいです。
頑張ります!

今日はデータベースの運用について、浅く広くまとめます。
専門的な用語がでるわけでも、技術がでてくるわけでもなく、
超基礎的なことを記述します!!

データベースを置く場所

データベースを運用する方法は
オンプレミス...自社の設備でデータベースを運用する方法
サーバや回線を社内で調達してシステムを構築します。
当初はこの運用方法が主流でしたが、
後に登場したクラウドと区別するためにオンプレミスという言葉が使われるようになりました。

クラウド...インターネットを介して外部のデータベースシステムを利用する方法
自社で設備を抱える必要がなく、外部の事業者によってあらかじめ用意されているシステムを利用します。

コストやセキュリティ面での違い

オンプレミス
オンプレミスの場合は自社内で設備を調達し、運用を行います。
そのため機器を選んで購入したり、セットアップを行ったり、
障害対応をしたりと何から何まで自分たちで必要な作業を行わなければいけません。

また、導入時には設備を購入するための費用や運用時の電気代、保守費用がかかるため、
コストがかさみやすいという特徴があります。

ただ、メリットとしては自由にカスタマイズできるため、要望にあわせてシステムを柔軟に変更することができます。
また、自社内で使うシステムは外部と接続する必要がないためセキュリティ面で有利です。

クラウド
クラウドの場合は事業者によって提供されているシステムを利用するため、
運用にかかる手間を最小限に減らすことができます。

また、設備を自社で用意する必要がなく、
費用は利用した分だけを支払うので、初期費用や運用面のコストを減らせることもあります。

ただ、ネットワークを介するためセキュリティ面を考慮する必要があり、
カスタマイズはサービスの範囲内でしかできないというデメリットもあります。

オンプレミスでの注意点

オンプレミスの方式で運用する場合はシステムの導入や運用をすべて自社で行います。
そのため、物理的脅威に備えるために注意しておくこととして以下のような点があげられます。

停電でシステムが止まる → 非常時のための電源対策を行う
無停電電源装置(UPS)、非常用の自家発電装置などを検討する

外部からの攻撃 → 最新のプログラムやパッチを適用しておく
ウイルスによる不正な攻撃が行わるケースを防ぐため、
最新の修正プログラムやパッチを適用する

コストが多岐にわたる → あらかじめ整理しておく
サーバやソフトウェア、ライセンスの購入費用や
運用を行う技術者の採用、セキュリティ費用や電気代など
あらかじめ整理しておく必要がある

データベース運用にかかるコスト

コストは大きく分けて2つあります。

イニシャルコスト...データベースを導入するときにかかる初期費用
設備の購入費や適用データベース、クラウドサービスを利用する際に最初に支払う必要のある費用のこと

ランニングコスト...毎月かかる費用
電気代やデータベース、クラウドの事業者への利用料、人件費など

イニシャルコストが安いという理由で判断しても
後々ランニングコストがかさむことがあるので注意が必要です。

ユーザーと権限

データベースではユーザーを作成して、
そのユーザーがデータベースに対してどのような操作を行えるようにするかといった
権限を割り当てられる機能があります。

権限にはすべての操作や、編集と閲覧、閲覧のみなど様々な種類があります。
データベースごと、テーブルごと、カラムごとのように範囲を指定することもできます。

このように権限を付与することで、内容を熟知していないメンバーが触るなどのリスクを管理しています。
例)あるレストランでのパソコン操作の例です。

店長 社員 アルバイト
商品テーブル 追加・編集・閲覧 編集・閲覧 閲覧
購入履歴テーブル 追加・編集・閲覧 編集・閲覧 閲覧
売上集計テーブル 追加・編集・閲覧 編集・閲覧 なし
このようなイメージです。

(何気にmarkdown方式でテーブルを記述したのは初めてで勉強になりました)

データベースの監視

異常が発生したり動作が停止したりすると、
データベースを利用している業務やサービスを停止しなければならなくなってしまいます。
データベースを日頃から監視しておくことで、問題に素早く気づき、迅速な対応ができるようになります。

肝心な監視の方法ですが、データベース管理システムに標準で用意されている機能を使う他、
市販の監視ツールや自前での作成といった手段もあげられます。

監視する対象

・操作履歴
・クエリのログ
・サーバーのリソース

クエリのログに関して、データベースによっては
実行に時間のかかるSQLを出力するスローログ
発生したエラーを出力するエラーログもあります。

リソースに関してはCPUやメモリ、ネットワーク帯域、ディスクの空きなど
異常がないかチェックしておくことが大切です。

データ破損に備えて

データベースは常にデータ破損の危険と隣り合わせです。
操作するロジックのバグでデータに矛盾が生じたり、
操作ミスでデータが消えてしまうことがあります。
このような場合に備えてバックアップを複製しておくことが大事です。

バックアップ方式の分類

フルバックアップ
すべてのデータのバックアップを取る方法で、
その時点のデータを後から完全に復旧することができます。
ただし、大量のデータを取得するため処理に時間がかかる場合が多いです。

差分バックアップ
フルバックアップ後に追加された変更分をバックアップします。
データ復旧の際は最初のフルバックアップと最新の差分バックアップの2つのファイルを使って復旧します。
処理の時間が短く、システムへの負担が少なく済みます。

増分バックアップ
フルバックアップ後の変更分をバックアップする方法で、差分バックアップと似ています。
が、さらにバックアップを行うときは、前回のバックアップ以降の変更分のみを行うやり方です。
よりシステムに負担をかけませんが、データ復旧時にこれまでのすべてのファイルが必要になるため
1つでもファイルが欠けていると復旧できません。

個人的な話ですがこれはITパスポートの過去問を解いていた時に出てきました。。
先日テストが終わりましたが、先にやっていれば、、!笑

データの移行

データベースの内容を出力することをダンプと呼びます。
ダンプを行うと、データベースの内容を反映したダンプファイルを作成することができます。
このファイルを使用して別のデータベースにリストアという作業を実行することで、
ダンプをとったデータベースと同じ内容のデータベースを作成することができます。

この機能を用いると、テストや開発環境用に同一のデータベースを作成したり、
古いデータベースから新しいデータベースへデータ移行を行ったり、
バックアップとしてデータを取っておくことができます。

ダンプファイルの中身

ダンプファイルの中身はSQLの羅列です。
テーブルを作成する「CREATE TABLE」や
レコードを作成する「INSERT INTO」などのコマンドが羅列されていて、
この通り実行するとダンプをとったデータベースの内容と同じデータベースを作成できるというものです。

ダンプはデータベース管理システムで標準の機能として使える場合が多いです。
MySQLの場合は「mysqldump」、PostgreSQLの場合は「pg_dump」というコマンドを使って行います。

機密データを変換して保存する

データベース内の機密情報が流出してしまう事故はたびたび話題になりますが
情報漏洩を防ぐために必要な対策の1つとしてデータベースの情報を暗号化することがあげられます。

暗号化はデー�������を他人が読めない情報に変換する技術です。
暗号化されたデータは特別な処理でもとにもどしますが、これを複合化といいます。
例)
東京都 → 暗号化 → ○△□× → 複合化 → 東京都

暗号化の方式

データを保存するときの暗号化を行うタイミングによって以下のような方式があります。

  • アプリケーションでの暗号化
    データを格納する前にアプリケーションで暗号化してから保存する方法です。
    データベースで保存されたときには暗号化されているので、アプリケーション側で複合化を行います。
  • データベースの機能による暗号化
    データベース管理システムの多くに暗号化の機能があり、
    管理システム側でデータの格納・取得時に暗号化や複合処理を行います。
  • ストレージの機能による暗号化
    データを格納しているストレージの機器やOSの機能を使う方法で、
    ストレージにデータを格納するときに自動的に暗号化されます。

バージョンアップ

データベース管理システムやOSは日々、改善が加えられ進化しています。
バージョンアップによってセキュリティの強化や性能の向上が見込めるため、
重要な更新が含まれていることもあります。
古いバージョンのままにしておくと最新の機能が使えなかったり、
他のソフトウェアとの連携が取れなくなったり、不都合が発生するので
日々適切なバージョンになっているか気を配っておく必要があります。

バージョンアップの手順

もとのバージョンや設定などの環境を記録しておく
 ↓
データのバックアップを行う
 ↓
OS、ソフトウェアのバージョンアップを行う
 ↓
正常に動作しているかテストする

万が一、問題が発生した時のために元に戻せるようにしておくことが大事ですね。

所感

今回はデータベースに関して、運用の注意点を学習していきました。
どこの職種についてもSQLやデータベースは使用するので
今回流れを学習したり、連日SQLを学習できているのはよいことです。
引き続き頑張ります!

Discussion