株式会社ラクス  ITエンジニア総合支援サイト スタックアスタリスク フルマネージド専用サーバー エクスユニット
ITエンジニアとして 知る 学ぶ
 
Java
.NET
PHP
プログラミング一般
DataBase
システム/サーバ構築
システム/サーバ運用
技術系一般知識
 
 
IT技術情報 >データベース >PostgreSQL 入門:PostgreSQL 有効活用術
データベース(DataBase) 〜スキルアップ 技術情報〜
【連載 】PostgreSQL 入門

第2回:PostgreSQL 有効活用術

 

【 ページ 】 | 1 | 2 | 3 | 4 | 5 |

<<前のページへ

3.PostgreSQLの運用

3_1.バックアップ

データベースのバックアップは pg_dump というコマンドを使って行います。pg_dump では、データベースの内容をテキスト形式にしていきます。実際には画面に表示されますので、
 
pg_dump dbname > /tmp/DBbackupfile

のような形でファイルに落としてやる必要があります。また、テキストのままではディスクの無駄遣いになるので、gzip などのツールで圧縮するのが望ましいです。

バックアップした内容を復元(リストア)するには、psql コマンドを利用します。元のデータベースを dropdb で削除しておき、
 
psql dbname < /tmp/DBbackupfile

とします。


▼Java や Linux を体系的に学びましょう!▼
Stack*のラクスが、
新学習方式のカリキュラムを開発しました!
14700円から(*1)、Java や Linux を体系的に学べます!!
(*1 テキスト代のみの税込料金です)




3_2.VACUUM

PostgreSQL は、その構造上の理由から VACUUM という作業が必要です。これは、データベースの中のゴミをすべて削除するための作業です。

PostgreSQL では、DELETE された行は実際に消えているわけではなく、他から見えなくなっているだけです。UPDATE に関しても、更新後の値を持つ行を INSERT してから、更新前の行を削除(したようにみえる状態に)しています。従って、DELETE や UPDATE が大量に行われた場合、psql で一行しか存在しないように見える場合でも、実際は何十メガバイトものデータがある場合もあるのです。

そういったゴミデータを削除するのが VACUUM です。コマンドとしても用意されていますし(vacuumdb)、psql から VACUUM とすることもできます。

VACUUM の処理をしている間、データベースに対する変更はできないようになります。VACUUM にかかる時間は一概には言えませんが、一瞬で終わる場合もありますし、何時間単位でかかる場合もあります。前回 VACUUM をしてから DELETE/UPDATE された行数が多いほど VACUUM にかかる時間も長くなります。頻繁に VACUUM をしたほうがデータベースを更新できない時間が短くなりますので、運用上は望ましいといえます。

3_3.データのインポート/エクスポート(copy を使った方法)

psql のプロンプトから、copy という SQL を発行することにより、データベース内のデータだけ(pg_dump は、データベースの構造も含まれています)をファイルに落とすことができます。
 
COPY tablename TO '/tmp/datafile';

これで、/tmp/datafile にデータが書き出されます。標準ではタブ区切りテキストになりますが、DELIMITERS を指定することで、区切り文字を指定することができます。

COPY で書き出されたファイルをテーブルに INSERT するには、
 
COPY tablename FROM '/tmp/datafile';

とします。ファイルの形式に合わせて DELIMITERS を指定しなければなりません。省略時はタブです。

3_4.データベースファイルの生成場所

データベースのデータは、デフォルトで /usr/local/pgsql/data/base/ 以下にファイルとして作成されます。通常の利用だとこれで問題はないのですが、大規模なデータベースの場合、ディスク領域が足りなくなることが懸念されます。そういった場合、大容量のパーティションにデータを配置すれば、問題は回避できます。

方法ですが、シンボリックリンクという機構を使います。シンボリックリンクを用いると、ファイルやディレクトリへのリンクを、実体とは別のところに配置することが可能になります。例えば、/tmp/hoge というファイルがあったとして、/home/hoge/link に /tmp/hoge へのシンボリックリンクを作れば、cat /home/hoge/link とすれば、/tmp/hoge の内容が表示されるようになります。

シンボリックリンクを作るためのコマンドは ln (エルエヌ)です。上記の例の場合だと
 
ln -s /tmp/hoge /home/hoge/link

のように、-s オプションをつけて、実体、リンクの名前 という順番で記述します。

PostgreSQL のデータを他の場所に移す場合の説明をします。データは /usr/local/pgsql/data/base/ の下にデータベース名のディレクトリが作られていて、その中にすべてのファイルが存在します。ですから、まずそのディレクトリを希望の位置に移動させます。その後、/usr/local/pgsql/data/base の下にデータベース名と同じ名前のシンボリックリンクを作ります。

上記の処理はデータベースの運用が始まる前に行うべきなのですが、運用中にしなければならないときは、postmaster をとめて、データベースへのアクセスが無い状態にしてから移動作業を行います。
 
pg_ctl stop
mv /usr/local/pgsql/data/base/yourdbname /ext/dbdir/
ln -s /ext/dbdir/yourdbname /usr/local/pgsql/data/base/yourdbname

yourdbname はデータベース名です。最後に postmaster を起動して完了です。


>>次のページへ

【 目次 】

1.はじめに
2.基本操作
2_1.データベースの作成
2_2.データベースへの接続
2_3.テーブルの作成
2_4.データの挿入
2_5.データの抽出
2_6.データの更新
2_7.データの削除
2_8.集約関数
2_9.psql のコマンド
2_10.トランザクション
3.PostgreSQLの運用
3_1.バックアップ
3_2.VACUUM
3_3.データのインポート/エクスポート(copy を使った方法)
3_4.データベースファイルの生成場所
4.高速化手法
4_1.無駄なデータの削除
4_2.インデックスの利用
4_3.postmaster 起動オプションによるチューニング
5.ユーザ定義関数、ユーザ定義オペレータ追加手順
5_1.ユーザ定義関数の実体の作成
5_2.ユーザ定義関数の作成
5_3.ユーザ定義オペレータの作成
6.おわりに

【 関連記事 】
【連載】PostgreSQL 入門
第1回:PostgreSQL のインストール & 設定
第2回:PostgreSQL 有効活用術(PostgreSQL Tips)

サイト内全文検索
スタックアスタリスクのサイトを検索します。検索には、Googleを利用しています。そのため、最新の情報で検索されない可能性があります。


簡単レンタルメールフォーム
300メガ1000円〜 XBitのレンタルサーバー
500メガ1995円〜 電話サポート/PostgreSQL/専用SSLなどにも対応!お客様のニーズを網羅したレンタルサーバ
ホームページ制作のアシストウェブ
STACK* 執筆の講師陣から習得する!! ITエンジニアスクール アイティブースト
統合メールサポートシステム 〜MailDealer(メールディーラー)〜
システム開発,IT教育 〜株式会社アイティーブースト(ITBoost)〜
簡単 営業支援/顧客管理ツール Easy Sales
  利用規約 お問い合わせ・ご意見 スタックアスタリスクについて 運営会社について 
  レンタルサーバー ホスティング 専用サーバー メールフォーム ショッピングカート メール共有 ITエンジニア派遣 Linux講座 Java講座 メール配信 レンタルサーバー Webデータベース 検索サービス
CopyrightcRAKUS Co.,Ltd. All Rights Reserved.  メール管理・共有 顧客管理(CRM)もできるメール対応サポートシステム JAVA LINUX CISCO 技術者派遣 育成事業 株式会社ラクス