PosgreSQLのインストール
概要:PosgreSQL(ポスグレエスキューエル)は、オープンソースのリレーショナル型データベースの一つです。 1. PosgreSQL用ユーザーの作成 †yumでPosgreSQLをインストールするとPosgreSQL用のユーザーpostgresが自動的に作成されますが、ログインディレクトリーが/var/lib/pgsqlに設定され、/homeの下にホームディレクトリーが作成されません。バックアップの設定など運用上不便なので予めユーザーpostgresを作成しておきます。意味はないと思いますがyumでインストールするとgid=26 uid=26でユーザーが作成されるので、それに合わせておきます。 # groupadd -g 26 postgres ← グループの作成 # useradd -g postgres -u 26 postgres -c 'PostgreSQL Server' ← ユーザーの作成 作成したユーザーの.bash_profileにyumでインストールした時に作成されるユーザーの.bash_profileの記述を追加します。 # vi /home/postgres/.bash_profile # .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
PGDATA=/var/lib/pgsql/data ← 2でデータベース用のディレクトリーを作成する場合はそれに合わせます
export PGDATA
SELinuxを有効にしている場合は、ディレクトリーの再構成をします。 2. データベース用ディレクトリーの作成 †PosgreSQLを最初に起動する前にデータベースの初期化(initdb)をしますが、データベースが作成されるDefaultのディレクトリーは/var/lib/pgsql/dataです。データベースのディレクトリーを変更したい場合は、以下のようにしてinitdbを実行する前に作成します。後で忘れないようにここで作成しておきます。 # mkdir -p /data/pgsql ← データベース用のディレクトリーの作成 # chown postgres. /data/pgsql ← 権限の変更 SELinuxを有効にしている場合は、ディレクトリーの再構成をします。 3. PosgreSQLのインストール †# yum -y install postgresql postgresql-server ← postgresqlのインストール
Loaded plugins: downloadonly, fastestmirror, priorities Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package postgresql.x86_64 0:8.4.20-1.el6_5 will be installed ---> Package postgresql-server.x86_64 0:8.4.20-1.el6_5 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================================== Package Arch Version Repository Size ========================================================================================== Installing: postgresql x86_64 8.4.20-1.el6_5 updates 2.6 M postgresql-server x86_64 8.4.20-1.el6_5 updates 3.4 M Transaction Summary ========================================================================================== Install 2 Package(s) Total download size: 6.0 M Installed size: 28 M Downloading Packages: (1/2): postgresql-8.4.20-1.el6_5.x86_64.rpm | 2.6 MB 00:00 (2/2): postgresql-server-8.4.20-1.el6_5.x86_64.rpm | 3.4 MB 00:00 ------------------------------------------------------------------------------------------ Total 19 MB/s | 6.0 MB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : postgresql-8.4.20-1.el6_5.x86_64 1/2 Installing : postgresql-server-8.4.20-1.el6_5.x86_64 2/2 Verifying : postgresql-server-8.4.20-1.el6_5.x86_64 1/2 Verifying : postgresql-8.4.20-1.el6_5.x86_64 2/2 Installed: postgresql.x86_64 0:8.4.20-1.el6_5 postgresql-server.x86_64 0:8.4.20-1.el6_5 Complete! 4. postgresqlの修正 †データベースの初期化(initdb)をする前にサービスコマンドpostgresqlを修正します。修正個所は以下のデータベースのディレクトリーとログファイルとinitdbの3箇所です。 # ls -l /etc/init.d/postgresql
# cp -p /etc/init.d/postgresql /etc/init.d/postgresql.yyyymmdd
# vi /etc/init.d/postgresql
: : # Set defaults for configuration variables PGENGINE=/usr/bin PGPORT=5432 ← 外部からの接続ポートを変更する場合は変更 PGDATA=/var/lib/pgsql/data ↓ 以下のように修正 PGDATA=/data/pgsql PGLOG=/var/lib/pgsql/pgstartup.log ↓ 以下のように修正 PGLOG=/home/postgres/pgstartup.log : : # Initialize the database $SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null ↓ --no-locale -E UTF-8を追加します。 $SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --no-locale -E UTF-8 --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null : : -E(--encoding) オプションでテンプレートデータベースのエンコードをUTF-8にします。 5. データベースの初期化(initdb) †initdbコマンドの実行はroot以外のデータベースオーナーとなるユーザー(通常postgres)で実行しなければなりませんが、サービスコマンドでは上記のようにpostgresにsu(SELinuxを使用している場合はrunuser)して実行するのでrootでサービスコマンドpostgresqlを実行します。サービスコマンドでinitdbを実行すると、SELinuxのファイルタイプの再構成も行ってくれます。 # service postgresql initdb
Initializing database: [ OK ]
結果のログを確認します。 # view /home/postgres/pgstartup.log The database cluster will be initialized with locale C. The default text search configuration will be set to "english". fixing permissions on existing directory /var/data/pgsql ... ok creating subdirectories ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 32MB creating configuration files ... ok creating template1 database in /var/data/pgsql/base/1 ... ok initializing pg_authid ... ok initializing dependencies ... ok creating system views ... ok loading system objects' descriptions ... ok creating conversions ... ok creating dictionaries ... ok setting privileges on built-in objects ... ok creating information schema ... ok vacuuming database template1 ... ok copying template1 to template0 ... ok copying template1 to postgres ... ok Success. You can now start the database server using: /usr/bin/postgres -D /var/data/pgsql or /usr/bin/pg_ctl -D /var/data/pgsql -l logfile start 6. データベースの起動 †データベースの起動とシステム起動時の自動起動設定をします。 # service postgresql start ← PostgreSQLの起動 Starting postgresql service: [ OK ] # service postgresql status ← PostgreSQLの起動確認 postmaster (pid 861) is running... # chkconfig --list postgresql ← PostgreSQLの自動起動設定の確認 postgresql 0:off 1:off 2:off 3:off 4:off 5:off 6:off # chkconfig postgresql on ← PostgreSQLの自動起動の設定 # chkconfig --list postgresql postgresql 0:off 1:off 2:on 3:on 4:on 5:on 6:off psコマンドで起動の確認を行います。 # ps ax |grep post 20851 ? S 0:00 /usr/pgsql-9.1/bin/postmaster -p 5432 -D /var/lib/pgsql/9.1/data 20853 ? Ss 0:00 postgres: logger process 20857 ? Ss 0:00 postgres: writer process 20858 ? Ss 0:00 postgres: wal writer process 20859 ? Ss 0:00 postgres: autovacuum launcher process 20860 ? Ss 0:00 postgres: archiver process 20861 ? Ss 0:00 postgres: stats collector process
7. データベースの動作確認 †ユーザーpostresでデータベースにアクセスしてみます。 # su - postgres $ psql psql (8.4.18) Type "help" for help. postgres=# \l ← \lと入力してエンター List of databases Name | Owner | Encoding | Collation | Ctype | Access privileges -----------+----------+----------+-----------+-------+----------------------- postgres | postgres | UTF8 | C | C | template0 | postgres | UTF8 | C | C | =c/postgres : postgres=CTc/postgres template1 | postgres | UTF8 | C | C | =c/postgres : postgres=CTc/postgres (3 rows) postgres=# select * from pg_settings; データベースの設定情報が表示されればOKです。 表示の途中で q で表示を中止できます。 postgres=# \q psqlをquitします。 $ 8. データベースのパラメータの初期設定 †データベースの設定値がデフォルトのままだと小さすぎるのである程度大きく設定し、稼働状況により調整します。 1.メモリ(バッファ)関連 †
2.ログ先行書き込み(WAL)関連 † PostgreSQLでは、データベースへの更新記録は、WALログ(Write Ahead Log,トランザクションログ)というファイルに同期書き込みを使って行われます。その代わり、テーブルやインデックス本体への書き込みは、同期書き込みではなく、通常のバッファリングを使ったより効率的な方法を使います。コンピュータ/PostgreSQLがクラッシュしても共有バッファ内の更新データは、WALログからリカバリできます。
3.プランナコスト関連 †
4.サーバログ関連 †
9.設定の反映(PostgreSQL再起動) †PostgreSQLを再起動します。 # service postgresql restart Stopping postgresql service: [ OK ] Starting postgresql service: [ OK ] 再起動の必要のない変更の場合は、以下のように設定の再読み込みだけでも設定の反映ができます。 # service postgresql reload 10.データベースの削除 †インストール時や練習などで一旦作成したデータベースを削除する場合はPostgreSQLを停止してディレクトリーごと削除します。 # service postgesql stop ← PostgeSQLの停止 # chkconfig postgesql off ← PostgeSQL自動起動の停止 # rm -rf /data/pgsql ← データベースの削除 Last-modified: 2014-05-05 (月) 15:02:13 (3614d)
|