Create system service of AgensGraph on Ubuntu(Linux)

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
$

[끝.]

댓글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중