【PostgreSQL】ソースファイルからPostgreSQLを正しくインストールする手順:データベースサポート最前線の現場から(2)(2/2 ページ)
データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は「PostgreSQLをソースファイルからインストールする手順」を解説します。
【4】「gmake」「gmake install」の実行
gmakeコマンドを実行することにより、configureスクリプトで作成された「GNUmakefile」が読み込まれます。そして、各種ソースファイルのコンパイルやリンクが実行されます。
gmake installコマンドによって、configureスクリプトの--prefixオプションに指定したディレクトリ配下へ、実行モジュールを格納するbinディレクトリやライブラリファイルを格納するlibディレクトリなどがコピーされます。
$ su - p940 $ gmake $ gmake install
【5】環境変数の設定を行う
続いて環境変数を設定します。ここでは、最低限設定しておきたい「PATH」「PGDATABASE」「PGDATA」の設定例を紹介します。
PATHは、PostgreSQLのコマンドを絶対パスで指定せずに実行できるように、「configureスクリプト実行時に--prefixオプションに指定したディレクトリから/binディレクトリまでのパスを、現在のPATH環境変数の先頭に追加しておくとよいでしょう。
$ export PATH=$HOME/posgrehome/bin:$PATH:.:
PostgreSQLのコマンドラインツールである「psql」を用いた接続では、デフォルトでインストール時のOSユーザー名と同じ名前のデータベースに接続を試みます。OSユーザー名がデータベースクラスタの作成時点から存在しているのであれば、PGDATABASE環境変数を気にする必要はありません。
しかし前述したように、今回は検証環境で複数のPostgresSQLを使うシーンを想定し、専用ユーザーとして「p940」というOSユーザーを作成して作業をしています。このように、その他のユーザー名でPostgreSQLをインストールする場合には、psqlを用いた接続時に、毎回「-d」オプションで接続先データベース名を指定しなければエラーになってしまいます。作業効率を高めるために、あらかじめ頻繁に接続するデータベース名(例では、「postgres」)を指定しておける、PGDATABASE環境変数を設定しておきます。
export PGDATABASE=postgres
続いて、データベースクラスタのパスをPGDATA環境変数で指定します。
PGDATA環境変数を指定する理由も、PGDATABASE環境変数の場合と同じです。initdbコマンドの実行時やpg_ctlコマンドでPostgreSQLの起動/停止を行う際に、毎回「-D」オプションを付けてデータクラスタのパスを指定する必要があります。PGDATABASE環境変数と同様に、その後の作業効率が大きく変わるので、あらかじめ設定しておくとよいでしょう。
$ export PGDATA=$HOME/posgrehome/datadir
(参考ドキュメント)第31章-14 環境変数(postgresql.org)
【6】initdbの実行
initdbコマンドで、データベースクラスタを作成します。
データベースクラスタ内には、初期データベースとして「template0」「template1」「postgres」の計3つのデータベースが作成されます。なお、特別な理由がなければ、ロケールは「無効」にします。その理由は後述します。
$ initdb --encoding=UTF8 --no-locale
データベースクラスタを作成できたら、それを起動します。そして、任意のデータベースに正しく接続できるか確認します。以下は、「postgres」データベースに対して接続確認を行った例です。
-- DBクラスタの起動 $ pg_ctl start -- psqlでpostgresデータベースに接続 $ psql postgres=#
「postgres=#」のプロンプトを確認できれば、PostgreSQLのインストールは完了です。
「ロケール」について
ロケールとは、言語や文化に応じた処理をするOSの機構を指します。ロケールを利用したプログラムは実行環境におけるロケール指定に応じた結果が得られ、それはライブラリの実装に依存します。例えば、ロケールを「日本語」に設定した場合、平仮名/片仮名(カナ)の並び順が辞書順になることや、全角のアルファベット文字列が半角アルファベットと混同して識別されることがあります。
このことは、ロケールの処理を余計に行う分だけ性能の低下を招く可能性があり、また、LIKE演算子による前方一致検索で設定を行わないとインデックスが使用されないといった弊害が生じます。
このため、ロケールを利用する特別な理由がないならば、極力ロケールを無効にすることを勧めています。
筆者紹介
家島拓也
2007年アシスト入社。オラクル製品やPostgreSQL/EDB Postgres製品のサポートに従事。最前線のサポート対応で得た知識や知見を元に、顧客が困ることの多い問題/課題や各製品の新機能に関する検証結果に関する情報発信も行っている
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 障害発生! 問題切り分けはスピード勝負
Oracleデータベースの運用管理者は、突発的に直面するパフォーマンス障害にどうやって対処したらよいか。本連載は、非常に複雑なOracleのアーキテクチャに頭を悩ます管理者に向け、短時間で問題を切り分け、対処法を見つけるノウハウを紹介する。対象とするバージョンはOracle8から9iまでを基本とし、10gの情報は随時加えていく。(編集局) - それでは“ダメ”な「トラブル対応例」
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、「SQL Serverで起こりがちなトラブル」を厳選して、具体的な対処方法を紹介していきます。第1回目は「トラブルを適切に対処するための考え方」を解説します。 - パフォーマンス向上の最短コースを知る
本連載では、Oracleデータベースのパフォーマンス・チューニングの中から、特にSQLのチューニングに注目して、実践レベルの手法を解説する。読者はOracleデータベースのアーキテクチャを理解し、運用管理の実務経験を積んでいることが望ましい。対象とするバージョンは現状広く使われているOracle9iの機能を基本とするが、Oracle 10gで有効な情報も随時紹介していく。(編集局) - そもそも、リレーショナルデータベースとは何か?
データベースを基礎から勉強し理解を深めていくことは簡単なことではありません。本連載では、データベースに対するハードルを少しでも低くするために、初心者の方に必要なデータベースの基本から、障害対策やチューニングといった実践に即した内容までを幅広く解説していきます。今回は、データベースの役割と、それを管理するソフトウェアであるDBMSの基本機能について解説します。【更新】