この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
PostgreSQL 9.2.2を使ってみたい
Amazon RDSには対応していないPostgreSQLではありますが、毎年のバージョンアップと高速化、さらには、GIS対応やレプリケーションなど、気になる機能がたくさんあります。そこで、今回はソースからビルドして使ってみたいと思います。
まずはダウンロードして解凍
$ wget http://ftp.postgresql.org/pub/source/v9.2.2/postgresql-9.2.2.tar.gz
$ tar zxvf postgresql-9.2.2.tar.gz
関連ライブラリをインストール
$ sudo yum install make gcc -y
$ sudo yum install flex bison -y
$ sudo yum install readline-devel ncurses-devel zlib-devel -y
ビルドしましょう。smallインスタンスで20分程度待ったかかもしれません。気長に待ちましょう。
$ cd postgresql-9.2.2
$ gmake
$ sudo gmake install
contribのインストール
関連ライブラリもインストールします。
$ cd postgresql-9.2.2
$ cd contrib
$ gmake
$ sudo gmake install
<h2 id="toc-">データベース初期設定</h2>
<p>教科書に載っているいつもの手順です。まずはユーザ作成から</p>
$ sudo adduser postgres
$ sudo passwd postgres
$ sudo mkdir /usr/local/pgsql/data
$ sudo chown postgres /usr/local/pgsql/data
$ sudo TH=$PATH:/usr/local/pgsql/bin
postgresユーザになって設定ファイルを編集します
$ su - postgres
> /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data --no-locale
バッファやメモリの設定などを行います。設定値はインスタンスタイプに合わせて調整しましょう。また、インターネットからアクセスするためにIP指定します。VPC内で使っているようでしたら、例えば、10.0.1.100等の指定をします。
> vi /usr/local/pgsql/data/postgresql.conf
shared_buffers = 512MB
work_mem = 4MB
wal_buffers = 64kB
listen_addresses = '10.0.1.100'
次にネットワークの設定です。インターネットからの接続を許可します。今回はサンプルなので緩いですが、実際は特定のサブネットからのアクセスが望ましいと思います。
> vi /usr/local/pgsql/data/pg_hba.conf
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/32 md5
サービス起動の設定です。
$ sudo cp ~/postgresql-9.2.2/contrib/start-scripts/linux /etc/rc.d/init.d/postgresql
$ sudo chmod 755 /etc/rc.d/init.d/postgresql
$ sudo chkconfig --add postgresql
$ sudo chkconfig --level 35 postgresql on
$ sudo chkconfig --list | grep postgresql
起動してみましょう
$ sudo service postgresql start
Restarting PostgreSQL: ok
$ sudo service postgresql status
pg_ctl: server is running (PID: 3669)
/usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data"
コンソールから接続確認
接続確認するためにはpsqlコマンドを用います。
$ su - postgres
> /usr/local/pgsql/bin/psql
テスト接続するためにユーザとデータベースを作成しています。
postgres=# create role test PASSWORD 'testpass' CREATEDB LOGIN;
postgres=# create database test owner test template=template0 encoding='utf-8';
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+-----------+---------+-------+-----------------------
postgres | postgres | SQL_ASCII | C | C |
template0 | postgres | SQL_ASCII | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | SQL_ASCII | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
test | test | UTF8 | C | C |
(4 rows)
postgres-# \q
まとめ
手順を押さえておけば簡単ですね。次回は、GISやレプリケーションについて実験してみたいと思います。余談ですが、もはやこのブログ執筆は自分用のメモ書きとなっていて、1年後にググったら自分のブログが出てくるという状況ですがw、どんどん新しい情報を詰め込みたいと思います。全体を理解するためには「多ドク」と「多ログ」です。