postgresqlがインストールされているか確認。
pgsql --version
psql (PostgreSQL) 9.2.18
起動テストをしてみる。
# systemctl start postgresql.service
Job for postgresql.service failed because the control process exited with error code. See "systemctl status postgresql.service" and "journalctl -xe" for details.
初期化が必要だった。
# service postgresql initdb
Hint: the preferred way to do this is now "postgresql-setup initdb"
Initializing database ... OK
動かしてみる。
# systemctl start postgresql.service
[root@localhost ~]# systemctl status postgresql.service
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
Active: active (running) since 月 2018-06-04 18:54:47 JST; 12s ago
Process: 1627 ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (code=exited, status=0/SUCCESS)
Process: 1619 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 1630 (postgres)
CGroup: /system.slice/postgresql.service
tq1630 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432
tq1631 postgres: logger process
tq1633 postgres: checkpointer process
tq1634 postgres: writer process
tq1635 postgres: wal writer process
tq1636 postgres: autovacuum launcher process
mq1637 postgres: stats collector process
6月 04 18:54:46 localhost.localdomain systemd[1]: Starting PostgreSQL database server...
6月 04 18:54:47 localhost.localdomain systemd[1]: Started PostgreSQL database server.
動いた。
一旦停止して、外部からのアクセスが出来るようにする。
# nano /var/lib/pgsql/data/postgresql.conf
L60位のlisten_addressを許容
listen_addresses = '*' # what IP address(es) to listen on;
# nano /var/lib/pgsql/data/pg_hba.conf
末尾にIPアドレスの設定
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres trust
#host replication postgres 127.0.0.1/32 trust
#host replication postgres ::1/128 trust
# for server
host all all 192.168.xxx.0/24 password
host all all 192.168.xxx.0/24 password
host all all 192.168.xxx.0/24 password
# for vendor
host all all xxx.xxx.xxx.xxx/28 password
firewallを開放
# firewall-cmd --add-service=postgresql --permanent
success
# systemctl restart firewalld.service
再度起動
恐らく問題なく接続できている。
pg_dumpで外部サーバに接続する場合は、同じユーザを作成し、ルートに .pgpass を作成
書き方は
192.168.0.XXX:5432:DB名:ユーザ名:パスワード
複数のDBがある時は、
192.168.0.xxx:5432:*:user:password でOK
$ chmod 600 .pgpass パーミッションは600指定
パーミッション600にしないと、エラーになった。
$ pg_dump -Ft -h 192.168.0.xxx -p 5432 -U user -w dbName > /home/user/dbName_`date '+%y%m%d%H%M'`
-wがパスワード請求無しのオプション
こんな感じでdump出来るので、これをシェルスクリプトにして、crontabに書いて終了。
chattr [option] [property] FILE...
option
property
option
-R | 変更を再帰的に適用する |
-V | 詳細に出力する |
FILE | ファイルを指定する |
property
a | 追記のみ可能とする |
c | ファイルを圧縮する |
d | dumpの対象外とする |
e | 拡張フォーマットを使用する |
i | 変更できなくする |
j | データのジャーナリングを行う |
s | 安全な削除(データブロック内を消去) |
t | 末尾のマージをできなくする |
u | 削除できなくする |
A | atime(アクセス時刻)を更新しない |
D | ディレクトリを同期的に更新する |
S | 同期的に更新する |