<PostgreSQL 9.4.4のインストール>
最初、yumでインストールしようとしたが失敗した。PGDATAを2枚目のSSD(/pgdataとしてmount)したいのだが、createdb時にデータの場所(/pgdata)を指定すると、
$ createdb nhs -D "/pgdata" -E UTF-8 -l ja_JP.UTF-8 -T template0
自動起動に失敗する。起動スクリプトにデータの場所を指定しているようで、起動スクリプトの修正の仕方がわからなかった。
PostgreSQLのインストールが終了してからわかったのだが、/lib/systemd/systemにpostgresql-9.4.serviceというスクリプトがあったらしい。それを修正して、
#systemctl disable postgresql-9.4
#systemctl enable postgresql-9.4
と再度設定し直せば、良かったのかもしれない。
いずれにしても、気がついた時にはyumでインストールしたPostgreSQLを削除して、makeしたPostgreSQLをインストールし直した後だったので、手遅れだった。次回インストール時に確認してみたい。
てなわけで、yumでインストールした手順とmake、installした手順、両方記録しておく。
<yumでインストール>
pgdg-centos94-9.4-1.noarch.rpmをダウンロードしてきて、
#rpm -ivh /pub/pgdg-centos94-9.4-1.noarch.rpm
下記を修正。
/etc/yum.repos.d/CentOS-Base.repo
[base]に追記
exclude=postgresql*
[updates]に追記
exclude=postgresql*
http://hkou.hatenablog.com/entry/2015/05/16/162211
#yum install postgresql94-server postgresql94-contrib
.bashrcを編集、下記を追記
PATH="$PATH":/usr/pgsql-9.4/bin
#source ~/.bashrc
#postgresql94-setup initdb
#systemctl start postgresql-9.4
#systemctl status postgresql-9.4
postgresにパスワードを設定する
#passwd postgres
この段階ではpostgresにPostgreSQLのbinがパスが通っていない。root同様.bashrcを編集してパスを追加したいのだが、ホームディレクトリが/var/lib/pgsql/9.4/になっていてデータと同じディレクトリだ。
ホームディレクトリを/home/postgresにしたいので、その設定が必要。「サーバーの更新2」で書いた。
以下、postgresで
#su postgres
$createdb nhs -D "/pgdata" -E UTF-8 -l ja_JP.UTF-8 -T template0
このままrootで
#systemctl enable postgresql-9.4
とやってしまうと、再起動すると、postgresqlの自動起動に失敗する。
起動スクリプトでデータの場所を指定しているらしい。
上記の通り、/lib/systemd/systemにpostgresql-9.4.serviceを編集してから、
#systemctl enable postgresql-9.4
とすること。
yumでインストールすると、initdb時にオプションを指定できないようなのだが、よく分からない。
また、initdbは通常postgresで行うのだが、rootで行う。これで、データディレクトのオーナーはpostgresになるから不思議だ。
initdbはpostgresで
$initdb --no-locale --encoding=UTF8
としたいのだが。この辺がyumだと不安になる。
<ソースからmake、install>
yumで起動スクリプトの修正の仕方がわからなかったので、アンイストールしてしまった後の作業として。
これはこれまでも何回もやっているので、以下、簡単に流れだけ。
下記をダウンロードして解凍。
postgresql-9.4.4.tar.gz
configure前に下記をインストール
#yum install readline readline-devel
#yum install zlib zlib-devel
configureはオプション無し
$ ./configure
$make all
$make install
.bashrcに下記を追加
PATH="$PATH":/usr/local/pgsql/bin
export PGDATA=/pgdata ここでデータの場所を指定する
$source ~/.bashrc
一応、PGDATAが環境変数として設定されているか確認
$printenv
$initdb --no-locale --encoding=UTF8
pg_hba.confの編集。下記を追加
host all all 0.0.0.0/0 trust
postgresql.confの編集(従来これでやってたので)
listen_addresses = '*'
shared_buffers = 160MB
temp_buffers = 40MB
work_mem = 10MB
max_connections = 32 (今回64から変更)
下記は設定がなかった
silent_mode = on
$createdb nhs -D "/pgdata" -E UTF-8 -l ja_JP.UTF-8 -T template0
$psql nhs -e < 150720.nhs データのリストア
$createuser -s tuikasuru_user_mei ユーザーの追加(スーパーユーザーにしないと、Accessでリンクテーブルを作成できなかった)
この後、起動スクリプトをどうするかが問題だった。
ここにサンプルがあったので、データの場所だけ変更して、設定した。
http://maplesystems.co.jp/blog/all/programming/11668.html
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
PIDFile=/pgdata/postmaster.pid
User=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl -s -D /pgdata start
ExecStop=/usr/local/pgsql/bin/pg_ctl -s -D /pgdata stop -m fast
[Install]
WantedBy=multi-user.target
これを、「/lib/systemd/systemディレクトリに作成し"postgresql.service"というファイル名にしました。」
#systemctl enable postgresql.service
として登録。再起動して確認
#systemctl --type service
最初、yumでインストールしようとしたが失敗した。PGDATAを2枚目のSSD(/pgdataとしてmount)したいのだが、createdb時にデータの場所(/pgdata)を指定すると、
$ createdb nhs -D "/pgdata" -E UTF-8 -l ja_JP.UTF-8 -T template0
自動起動に失敗する。起動スクリプトにデータの場所を指定しているようで、起動スクリプトの修正の仕方がわからなかった。
PostgreSQLのインストールが終了してからわかったのだが、/lib/systemd/systemにpostgresql-9.4.serviceというスクリプトがあったらしい。それを修正して、
#systemctl disable postgresql-9.4
#systemctl enable postgresql-9.4
と再度設定し直せば、良かったのかもしれない。
いずれにしても、気がついた時にはyumでインストールしたPostgreSQLを削除して、makeしたPostgreSQLをインストールし直した後だったので、手遅れだった。次回インストール時に確認してみたい。
てなわけで、yumでインストールした手順とmake、installした手順、両方記録しておく。
<yumでインストール>
pgdg-centos94-9.4-1.noarch.rpmをダウンロードしてきて、
#rpm -ivh /pub/pgdg-centos94-9.4-1.noarch.rpm
下記を修正。
/etc/yum.repos.d/CentOS-Base.repo
[base]に追記
exclude=postgresql*
[updates]に追記
exclude=postgresql*
http://hkou.hatenablog.com/entry/2015/05/16/162211
#yum install postgresql94-server postgresql94-contrib
.bashrcを編集、下記を追記
PATH="$PATH":/usr/pgsql-9.4/bin
#source ~/.bashrc
#postgresql94-setup initdb
#systemctl start postgresql-9.4
#systemctl status postgresql-9.4
postgresにパスワードを設定する
#passwd postgres
この段階ではpostgresにPostgreSQLのbinがパスが通っていない。root同様.bashrcを編集してパスを追加したいのだが、ホームディレクトリが/var/lib/pgsql/9.4/になっていてデータと同じディレクトリだ。
ホームディレクトリを/home/postgresにしたいので、その設定が必要。「サーバーの更新2」で書いた。
以下、postgresで
#su postgres
$createdb nhs -D "/pgdata" -E UTF-8 -l ja_JP.UTF-8 -T template0
このままrootで
#systemctl enable postgresql-9.4
とやってしまうと、再起動すると、postgresqlの自動起動に失敗する。
起動スクリプトでデータの場所を指定しているらしい。
上記の通り、/lib/systemd/systemにpostgresql-9.4.serviceを編集してから、
#systemctl enable postgresql-9.4
とすること。
yumでインストールすると、initdb時にオプションを指定できないようなのだが、よく分からない。
また、initdbは通常postgresで行うのだが、rootで行う。これで、データディレクトのオーナーはpostgresになるから不思議だ。
initdbはpostgresで
$initdb --no-locale --encoding=UTF8
としたいのだが。この辺がyumだと不安になる。
<ソースからmake、install>
yumで起動スクリプトの修正の仕方がわからなかったので、アンイストールしてしまった後の作業として。
これはこれまでも何回もやっているので、以下、簡単に流れだけ。
下記をダウンロードして解凍。
postgresql-9.4.4.tar.gz
configure前に下記をインストール
#yum install readline readline-devel
#yum install zlib zlib-devel
configureはオプション無し
$ ./configure
$make all
$make install
.bashrcに下記を追加
PATH="$PATH":/usr/local/pgsql/bin
export PGDATA=/pgdata ここでデータの場所を指定する
$source ~/.bashrc
一応、PGDATAが環境変数として設定されているか確認
$printenv
$initdb --no-locale --encoding=UTF8
pg_hba.confの編集。下記を追加
host all all 0.0.0.0/0 trust
postgresql.confの編集(従来これでやってたので)
listen_addresses = '*'
shared_buffers = 160MB
temp_buffers = 40MB
work_mem = 10MB
max_connections = 32 (今回64から変更)
下記は設定がなかった
silent_mode = on
$createdb nhs -D "/pgdata" -E UTF-8 -l ja_JP.UTF-8 -T template0
$psql nhs -e < 150720.nhs データのリストア
$createuser -s tuikasuru_user_mei ユーザーの追加(スーパーユーザーにしないと、Accessでリンクテーブルを作成できなかった)
この後、起動スクリプトをどうするかが問題だった。
ここにサンプルがあったので、データの場所だけ変更して、設定した。
http://maplesystems.co.jp/blog/all/programming/11668.html
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
PIDFile=/pgdata/postmaster.pid
User=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl -s -D /pgdata start
ExecStop=/usr/local/pgsql/bin/pg_ctl -s -D /pgdata stop -m fast
[Install]
WantedBy=multi-user.target
これを、「/lib/systemd/systemディレクトリに作成し"postgresql.service"というファイル名にしました。」
#systemctl enable postgresql.service
として登録。再起動して確認
#systemctl --type service