PosgreSQLっていいよね(´・ω・)b
Centos6上にある既存のプロジェクトをCentos7上に構築することになったので
移管作業をしていたんだけど、PosgreSQLでそこそこハマったから書きだめしとくよ。
環境条件
条件はこんな感じ(´・ω・)b
yum使ってPostgresqlをインストールした人だったら対象者かもです。
- CentOS7
- yumでPostgreSQLをインストール
- ポートは5433を使う
- sudo service postgresql initdb を実行済み
- systemctl start postgresql も実行済み
既存DB論理データをリストアしたかった。
使用するのは、psqlです。
最終的に下記コマンドが成功するようにしたい。
1 |
psql -p 5433 -U "my-project" -d "my-project" < db-data |
まずは、yum installしたpostgresqlはlocalhostからアクセスできないかも。
IdentErrorが発生した場合は
/var/lib/pgsql/data/pg_hba.conf
を書き換える必要があります。
1 2 3 4 5 6 7 |
local all all trust # IPv4 local connections: #host all all 127.0.0.1/32 ident <- これをコメントアウト host all all 127.0.0.1/32 trust # <- trust に書き換え # IPv6 local connections: #host all all ::1/128 ident <- これをコメントアウト host all all ::1/128 trust # <- trust に書き換え |
これでIndentErrorは解決します。
しかし、ポート変更時はエラーが発生します。
次に、
/var/lib/pgsql/data/postgresql.conf
を変更します。
ここでは使用するポートが設定されているので書き換えたらオッケー!!
port = のところです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
listen_addresses = '*' port = 5433 ############ <- これを変更したよ!! max_connections = 100- logging_collector = on # Enable capturing of stderr and csvlog log_filename = 'postgresql-%a.log' # log file name pattern, log_destination = 'syslog' # Valid values are combinations of log_rotation_age = 1d # Automatic rotation of logfiles will log_min_error_statement = error # values in order of decreasing detail: log_min_duration_statement = 5 # -1 is disabled, 0 logs all statements log_line_prefix = '%t ' autovacuum = on # Enable autovacuum subprocess? 'on' log_autovacuum_min_duration = 20-- #log_timezone = 'UTC' datestyle = 'iso, ymd' lc_messages = 'C' # locale for system error message lc_monetary = 'ja_JP.UTF-8' # locale for monetary formatting lc_numeric = 'ja_JP.UTF-8' # locale for number formatting lc_time = 'ja_JP.UTF-8' default_text_search_config = 'pg_catalog.simple' |
なんて思ったら大間違い!!!
僕はここでやられたwwwwww
port書き換えたらオッケーなんかじゃなくて
service側でもべた書きされているのでした(笑)
いや、なんで2つ!!ってなっちゃった(´・ω・`)
書き換えるのはこのファイル。
/usr/lib/systemd/system/postgresql.service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[Unit] Description=PostgreSQL database server After=network.target [Service] Type=forking User=postgres Group=postgres Environment=PGPORT=5433 ######<= これを忘れずに書き換え!! Environment=PGDATA=/var/lib/pgsql/data OOMScoreAdjust=-1000 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300 ExecStop=/usr/bin/pg_ctl stop -D ${PGDATA} -s -m fast ExecReload=/usr/bin/pg_ctl reload -D ${PGDATA} -s TimeoutSec=300 [Install] WantedBy=multi-user.target |
これでオッケー(*´ω`*)
demonをリロードする必要があるので、
daemon-reloadを忘れないようにね(´・ω・`)
1 2 |
sudo systemctl daemon-reload sudo systemctl restart posgresql |
ここまでやってやっと、リストアが実行できました。
やられたね(笑)
らんさいわさんからコメントもらったよ(´・ω・`)
==============
/etc/systemd/system
の下に
「postgresql.service」
といったファイルを作成して
—–
.include /lib/systemd/system/postgresql.service
[Service]
Environment=PGPORT=5433
—–
といった記述をした方がコア部分のシステムファイルを弄らなくて済むので良いかと思いますよ。
==============
確かに(´・ω・`)
ありがたいね(´・ω・`)
じゃあね〜〜〜。
コメント
はじめまして、ふと通りがかったのでお節介とは思いますが…
ポートの変更などはシステムの中のファイルを弄るよりは
/etc/systemd/system
の下に
「postgresql.service」
といったファイルを作成して
-----
.include /lib/systemd/system/postgresql.service
[Service]
Environment=PGPORT=5433
-----
といった記述をした方がコア部分のシステムファイルを弄らなくて済むので良いかと思いますよ。
それではお邪魔しました(_ _)
知識の伝播に協力くださりありがとうございます(´・ω・`)
ありがたく追記しちゃいます。
お礼にモナコインいりますか(´・ω・`)?