AgensGraph 는 Postgresql 10 기반으로 개발되었습니다.
그래서 systemctl start/stop/restart 등의 명령어도 postgres service 파일과 유사하게 만들면 됩니다.
참고문서: CentOS 7 에 Postgresql Service 설정하기
[Unit]
Description=AgensGraph database server (PG10)
After=syslog.target
After=network.target
#Documentation=man:postgres(1)
[Service]
Type=forking
User=postgres
Environment=PG_DATA=<pgdata_path>/agensgraph
ExecStart=/usr/local/pgsql/bin/pg_ctl start -D "${PG_DATA}" -s -w -t 300
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D "${PG_DATA}" -s -m fast
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D "${PG_DATA}" -s
TimeoutSec=300
OOMScoreAdjust=-1000
[Install]
WantedBy=multi-user.target
Alias=postgresql.service
Ubuntu(Linux) 의 경우 service 정의 파일의 위치는 /etc/systemd/system 입니다.
앞에 agensgraph.service 파일을 /etc/systemd/system 위치에 생성합니다.
sudo touch /etc/systemd/system/agensgraph.service
sudo vi /etc/systemd/system/agensgraph.service
# 내용 작성 후 저장
이후 systemctl 을 통해 service 를 enable 시키고, start/stop 를 테스트합니다.
참고문서: Ubuntu 16.04 System Service 등록하기
(** Ubuntu 20.04 에서도 정상 작동됩니다)
$ vi agensgraph.service
$ sudo vi agensgraph.service
$ sudo systemctl daemon-reload
$ sudo systemctl enable agensgraph
$ sudo systemctl is-enabled agensgraph
enabled
$ sudo systemctl start agensgraph
$ sudo systemctl status agensgraph
● agensgraph.service - AgensGraph database server (PG10)
Loaded: loaded (/etc/systemd/system/agensgraph.service; enabled; vendor preset: en>
Active: active (running) since Tue 2020-12-29 22:48:42 KST; 6s ago
Process: 7312 ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PG_DATA} -s -w -t 30>
Main PID: 7315 (postgres)
Tasks: 7 (limit: 38385)
Memory: 14.9M
CGroup: /system.slice/agensgraph.service
├─7315 /usr/local/pgsql/bin/postgres -D <PGDATA_PATH>
├─7334 postgres: checkpointer process
├─7335 postgres: writer process
├─7336 postgres: wal writer process
├─7337 postgres: autovacuum launcher process
├─7338 postgres: stats collector process
└─7339 postgres: bgworker: logical replication launcher
12월 29 22:48:42 minubt systemd[1]: Starting AgensGraph database server (PG10)...
12월 29 22:48:42 minubt pg_ctl[7315]: 2020-12-29 22:48:42.577 KST [7315] LOG: listenin>
12월 29 22:48:42 minubt pg_ctl[7315]: 2020-12-29 22:48:42.577 KST [7315] LOG: listenin>
12월 29 22:48:42 minubt pg_ctl[7315]: 2020-12-29 22:48:42.612 KST [7315] LOG: listenin>
12월 29 22:48:42 minubt pg_ctl[7333]: 2020-12-29 22:48:42.754 KST [7333] LOG: database>
12월 29 22:48:42 minubt pg_ctl[7315]: 2020-12-29 22:48:42.797 KST [7315] LOG: database>
12월 29 22:48:42 minubt systemd[1]: Started AgensGraph database server (PG10).
저의 경우엔, 별도의 postgres 계정이 필요치 않아 개인 개정으로 설치하였고 service 실행 사용자도 개인 개정으로 등록하였습니다.
## git clone https://github.com/bitnine-oss/agensgraph
## cd agensgraph
$ ./configure
$ make
$ sudo make install
## postgres 계정 생성 안함!!
$ mkdir $PG_DATA
$ /usr/local/pgsql/bin/initdb -D $PG_DATA
$ /usr/local/pgsql/bin/postgres -D $PG_DATA >logfile 2>&1 &
$ /usr/local/pgsql/bin/createdb test
$ /usr/local/pgsql/bin/psql test
psql (10.4)
Type "help" for help.
test=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
bgmin | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
test=# create role agens login superuser createdb password '****';
CREATE ROLE
test=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
agens | Superuser, Create DB | {}
bgmin | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
test=# \q
$ /usr/local/pgsql/bin/pg_ctl -D $PG_DATA stop
waiting for server to shut down....[1] + 4861 done postgres -D $PG_DATA > logfile 2>&1
done
server stopped
$
[끝.]