23. RDBシステム管理に関する知識

Ⅰ.概要

OSSのデータストアとしてのデータベースの運用管理機能とその方法に関して、実際の開発・運用の際に必要な管理知識・手法の種類と特徴、内容を理解し、データベースを運用するために必要なノウハウを実務レベルとして学ぶ。

Ⅱ.対象専門分野

職種共通

Ⅲ.受講対象者、受講前提

本カリキュラムの「RDBに関するスキル」を受講済みであること。または、同等の知識を有すること。

システム開発経験及びプログラミング経験を有していること。

Ⅳ.学習目標

・オープンソースデータベースシステムを運用管理する際に必要となる基本的な知識を習得し、効果的なデータベース運用を行うことができる。

・RDBMS運用の特徴、方法とその注意点を理解する。

・RDBMSのチューニングの方法と手順を理解する。

Ⅴ.使用教科書、教材等

『現場で使えるMySQL』松信嘉範著、翔泳社刊

『Firebird―オープンソースデータベースの導入と運用の実際』

加藤大受著、毎日コミュニケーションズ刊

上記に加えてオリジナル教材を作成

Ⅵ.習得スキルの評価方法

講義終了後の受講レポート、定量アンケート、知識確認ミニテスト、演習問題の取り組み状況を総合的に判断して評価を行う。

Ⅶ.カリキュラムの構成

レベル1(基本) 第1回~第5回

レベル2(応用) 第6回~第15回

第1回 データベース運用管理の目的と項目(講義 90分)

データベース運用の必要性、方針、主要な問題点と内容とその理由、運用管理の基本的な項目、作業内容を理解する。

(1)データベース運用管理の目的

  1. 運用管理の必要シーン

・ データベースの運用特性

・ データベース運用の必要性

・ オープンソースデータベースの運用リスク

(2)データベースの運用と管理

  1. 定期的に行わなければならない運用作業や管理

・ データのバックアップ

・ 各種運用状況の監視

・ 稼動状況の監視

・ 利用状況の監視

・ 性能監視

・ 不正なアクセスがないかどうかなどを監視

  1. 使い続けていくうちに発生する可能性がある問題に対する対策

・ DBMSの再調整

・ チューニング

・ データベースの再編成

・ データベースの再構成

・ ユーザの登録

・ 権限の登録、設定

・ 障害時障害復旧処理

  1. データベース運用の役割

・ データ管理者 (DA:Data Administrator)

・ データベース管理者 (DBA:Database Administrator) 

・ データベース運用管理者

第2回 データベースの運用作業と障害回復(講義 90分)

一般的なデータベースの運用作業の種類とその内容、障害時の回復手順とその措置を理解する。

(1)障害回復

  1. バックアップ

・ フルバックアップ

・ インクリメンタルバックアップ

・ 部分バックアップ

  1. ログファイル
  2. 障害の種類と対策

・ トランザクション障害

・ 論理的な誤動作によるプログラム障害

・ システム障害

・ 物理的な誤動作によるコンピュータシステム障害

・ 媒体障害

  1. 障害の原因追求と回復方法

・ データベースの更新の仕組み

・ チェックポイント

・ チェックポイント時の処理

・ 障害からの回復処理

第3回 データベース運用設計(講義 90分)

データベースの運用設計作業の種類とその内容、検討項目、システム開発作業の中での実施手順と含まれているべき項目、内容を理解する。

(1)最適なデータベース運用設計のアプローチ

  1. システムライフサイクルにおけるデータベース運用設計の時期と方法
  2. アプリケーション設計への反映
  3. データベース運用計画への反映

(2)運用設計の検討項目

  1. データ型の検討と選択
  2. 冗長化のデメリット
  3. データ量の見積り
  4. インデックスの評価
  5. オプティマイザの動作計画
  6. Joinの種類とその適用場所
  7. SQL文の書き方
  8. リカバリ設計

・ システムの運用時間の把握

・ ハードウェアでの対策(RAID、SAN等)

(3)監視計画

  1. データ容量
  2. メモリ使用率
  3. 時間の経過によるインデックスの変化

第4回 データベースセキュリティ(講義 90分)

データベースセキュリティの内容、運用作業の中で実施しなければならないこと、実際のセキュリティ侵害発生時の対処方法などを理解する。

(1)データベースセキュリティの概要

  1. データベース不正アクセスの手口
  2. データベースセキュリティ対策の概要
  3. SQLインジェクションの手口と影響

(2)基本的な対策

  1. DB監査ログの取得

・ 不正な動作パターン

・ 対処法

・ 運用上の問題点と対策パターン

  1. 不正アクセスからの防御
  2. アプリケーションの脆弱性改善
  3. RDBMSのデフォルト設定の検証
  4. アクセス制御の検討
  5. データベースのアカウント調査
  6. RDBMSから抽出したデータ保護

・ データの暗号化

・ シンクライアントの導入

(3)システム構成の問題

  1. 3階層Webシステムの問題
  2. アプリケーションのログ出力
  3. 権限の分割

第5回 データベースリカバリ設計(講義 90分)

データベースリカバリ作業の内容、運用作業の中で実施しなければならないこと、実際の障害発生時の対処方法などを理解する。

(1)リカバリのためのバックアッププラン

  1. 設計時のリカバリプランの策定

・ 発生する障害を想定

・ CPUやメモリの障害

・ ユーザミスによるテーブル削除

・ OSの障害

・ DBMSのバグ

・ アプリケーションのバグ

・ マシンダウン

  1. リカバリレベルの検討

・ 復旧までに要する時間

・ システムの停止が許される時間

・ トランザクションの回復範囲の決定

・ リカバリ許容時間の決定

・ 自動/手動リカバリの切り分け

(2)リカバリ方法の決定

  1. オフラインリカバリ
  2. バックアップテープからデータベースごとにリストア
  3. ディスク障害への対応

・ ファイル二重化

・ バックアップディスクからのロード

  1. ユーザの操作ミス
  2. リカバリ計画

・ リストアできる単位

・ ファイル単位のリストア

・ エクスポート

(3)データベース動作環境の監視

  1. テーブルとインデックス
  2. ユーザ数の増加
  3. OS負荷
  4. データやログ用の空き領域
  5. データの見積りと実際の増量の比較
  6. テーブルやレコードの削除サイクル
  7. ディスクI/Oの効率
  8. 更新の回数と頻度
  9. インデックス更新
  10. テーブルアクセスビューの使用

第6回 データベースの最適化(講義 90分)

データベース性能向上施策、クライアントアプリケーションからの最適なアクセス方法、最適化、性能管理等のチューニングテクニックを学ぶ。

(1)アプリケーション性能向上施策

  1. テーブル設計とデータ量
  2. アクセスパス
  3. 大規模分散処理
  4. 大量データの一括更新
  5. 同期更新処理

(2)オプティマイザの動作

  1. 最適化テクニック

・ インデックスのチューニング

・ SQLのチューニング

・ テーブル配置のチューニング

  1. RDBMSのチューニング
  2. オプティマイザの動作要件

・ ルールベース

・ コストベース

第7回 データベースのトラブル(講義 90分)

データベーストラブルの種類と原因、特徴、対策の内容と手順、結果評価方法などの内容を理解する。

(1)トラブルから見たRDBMSの運用ポイント

  1. 関係データベースに関する設計や運用の基本的な情報
  2. 障害発生の6つの着眼点

・ アプリケーションが突然止まる

・ 運用開始一定期間後、性能が劣化する

・ 本番の直前、直後に性能不足が発覚する

・ 更新・入力処理で期待した性能が発揮されない

・ バックアップまたはリカバリのミス

・ データ形式のエラー

・ リソース不足

(2)トラブル対応の内容

  1. リソースの追加、拡張

・ データのフラグメンテーション対応

・ オプティマイザが選択するテーブルのアクセス経路の変化への対応

・ データ件数の大幅な増加への対応

・ インデックスがメモリ上からあふれてディスク入出力多発への対応

・ ログ領域の不足への対応

  1. ログのバックアップ
  2. テーブルの再構成
  3. ブロックの断片化
  4. インデックスの問題

・ インデックスの再構成

・ 最適なインデックスの選び方

・ テーブルスキャン(全件検索)の問題

  1. SQLの異常
  2. DBMS自体の不良
  3. インデックスの張り過ぎ
  4. ロック競合の回避

第8回 データベースチューニング(講義 90分)

データベース性能向上のためのチューニングの方針、検討項目、実施手順、評価方法などの内容を理解する。

(1)RDBMS性能設計のポイント

  1. 性能設計の考え方
  2. データベース設計における留意点

・ データベース正規化

・ 論理設計

・ 物理設計

  1. ネットワーク設計
  2. マルチスレッド/分散データベース

(2)設計とその実装時の留意点

  1. SQL高速化テクニック
  2. 物理配置とインデックス

第9回 データベース構築(ワークショップ 90分)

データベースの構築からアプリケーション実装までをオープンソースデータベースMySQLを用いて実習でその手順や内容、注意点を理解する。

(1)MySQLの概要と環境構築

  1. 環境構築
  2. インストール方法
  3. MySQLインスタンスの実行OSユーザ
  4. インスタンスの起動と初期化パラメータファイル
  5. MySQLの起動

(2)アプリケーションの実装

  1. データ型とSQL

・ データ型

・ MySQLの独自構文

・ 演算子について

・ SQL関数

・ MySQLにおけるSQL関連の制約事項

  1. テーブル定義

・ MySQLにおけるデータベースとテーブルの関係

・ HEAPのインデックス

・ 一意インデックスとNULL値

・ シーケンス

  1. トランザクションの基礎知識とSQL構文

第10回 データベースインデックスを用いた性能改善 (ワークショップ 90分)

関係データベースアクセス高速化のための必須技術であるインデックスの物理構造やその意味、性能やリカバリ特性への影響について、その具体的な考え方、手順を理解する。

(1)データベース要件の検討

  1. ビジネス要件とテーブル構成
  2. データベースの物理構成
  3. アクセスパスの検討
  4. CRUDマトリックスの作成
  5. アクセスタイミング

(2)改善プランの作成

  1. アクセス方法とインデックスの関係の検討
  2. インデックスの物理配置の検討
  3. インデックスの適用と効果の確認

・ B-Tree索引

・ ビットマップインデックス

・ ハッシュクラスタ(ハッシュインデックス)

第11回 MySQLの導入と運用(ワークショップ 90分)

代表的なオープンソースデータベースであるMySQLの運用/管理上必要な知識について、サンプルデータベースを用いて実習で理解する。

(1)mysql 上での運用コマンドとSQL

  1. help
  2. show databases
  3. show tables
  4. show variables

(2)ユーザの管理

  1. ユーザ追加

・ GRANT文の使用

・ MySQLの権限テーブルの構造と運用

・ パスワードなしの接続

・ パスワードの設定

・ rootのパスワードの運用

(3)バックアップ

  1. mysqldumpコマンド
  2. 圧縮オプション
  3. インポート:Mysqlimportコマンド
  4. エクスポート

(4)バッチ処理

  1. 複数のSQL文を一度に発行する方法

(5)my.cnfファイル

第12回 データベーストラブルシューティング(ワークショップ 90分)

データベースの障害に対して調査、問題の解明、対処を行い、トラブルシューティングの方法をマスターする。PostgreSQLを用いたワークショップ形式で実施する。

(1)障害の発生と原因の調査

*障害の発生

  1. 表領域の容量調査
  2. データベースブロック容量の調査
  3. ログバッファ容量の調査
  4. サーバのメモリ容量の調査
  5. スワップの状況の調査

(2)アプリケーション要件の調査

  1. アクセスパス(インデックス、キー制約の関連)
  2. トリガやストアドプロシージャ(STP)の動作

(3)インデックスの設定状況と十分性の検証

(4)原因の解明と対処

  1. データ分布統計情報の調査
  2. オプティマイザの機能調査

・ ルールベース

・ コストベース

  1. 解決策の検討と実施

第13回 データベース運用環境構築(ワークショップ 90分)

データベースの運用環境の構築・設定について、オープンソースデータベースMySQLを用いて実習でその手順や内容、注意点を理解する。

(1)日本語処理環境の実装

  1. 文字コード関連の基礎知識
  2. デフォルト文字コードlatin1での日本語の扱い
  3. 文字コード関連の構文
  4. 格納できる文字の範囲
  5. コマンドラインツールmysqlと0x5C問題

(2)GUIツールによるデータベース操作

  1. GUIツールの種類
  2. ODBCの設定
  3. Accessからのデータ操作
  4. モデリングツール「MySQL Workbench」
  5. 管理ツール「MySQL Administrator」

(3)分散データベース設計

  1. テーブル位置の決定
  2. 結合仕様の決定
  3. レプリケーション

・ MySQLのレプリケーション概要 

・ レプリケーションのセットアップ

・ レプリケーションで知っておきたいトピック

  1. ストアドプロシージャ

・ ストアドのデバッグ機能

・ ストアドファンクション

  1. トリガ

第14回 データベース運用(ワークショップ 90分)

データベースの運用仕様の決定、運用機能の実装やバックアップリカバリ機能の実装方法についてオープンソースデータベースMySQLを用いて実習でその手順や内容、注意点を理解する。

(1)バックアップリカバリ

  1. MySQLのバックアップ

・ バックアップリカバリの流れ

・ トランザクションログの内容

・ InnoDBログの機能

  1. ロールフォワードリカバリ
  2. バックアップリカバリの注意点

(2)バックアップリカバリの実施手順

  1. Mysqldumpによるバックアップリカバリ
  2. 部分バックアップ
  3. InnoDB Hot Backupによるバックアップリカバリ
  4. FLUSH TABLES WITH READ LOCK文によるオンラインバックアップ
  5. スタンバイデータベース

第15回 データベースチューニング(ワークショップ 90分)

データベースチューニング作業の実践として、オープンソースデータベースMySQLを用いて実習でその手順や内容、注意点を理解する。

(1)パフォーマンスチューニング

  1. 単体チューニングとシステムチューニングの違い
  2. 単体チューニング(問題のあるSQL文の発見と改善)
  3. Perlモジュールのインストール
  4. InnoDBのクラスタインデックス
  5. 作成したインデックスの確認方法

(2)システムチューニング

  1. テーブル定義に関するチューニング
  2. ストレージエンジンの選択
  3. ロード/INSERTのチューニング

・ INSERT文のチューニング

・ バルクINSERT文

・ LOAD DATA文

  1. 更新処理のチューニング
  2. 削除処理のチューニング
  3. ベンチマークツールを使った性能測定
  4. ロック関連のチューニング
  5. チューニングの効果測定

以上