2018/06/04

postgresql 初期化と接続 外部からのdump

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に書いて終了。

0 件のコメント:

コメントを投稿