{#tools-server-side-tools} # 서버 측 도구 AgensGraph에 딸려 오는 도구는 PostgreSQL의 것이므로 [PostgreSQL의 해당 레퍼런스](https://www.postgresql.org/docs/18/reference-server.html)가 그대로 적용되며 여기서 되풀이하지 않습니다. 이 페이지는 다른 점, 그리고 가장 많이 쓰는 도구에 그래프가 더하는 것을 다룹니다. 대화형 클라이언트와 그 그래프 메타 명령은 [agens 클라이언트](../reference/agens.md)를 참고하십시오. {#tools-what-agensgraph-adds-to-the-tool-set} ## AgensGraph가 도구 모음에 더하는 것 도구 두 개가 두 번째 이름으로도 배포됩니다: | AgensGraph 이름 | PostgreSQL 이름 | 차이 | | --- | --- | --- | | `agens` | `psql` | 브랜딩뿐입니다. 둘 다 설치되며, 그래프 메타 명령은 어느 쪽에서도 동작합니다. | | `ag_ctl` | `pg_ctl` | 브랜딩뿐입니다. 둘 다 설치됩니다. | ```shell agens --version ``` ``` agens (AgensGraph) 2.18.6.0 ``` ```{note} 개발 브랜치에서 빌드한 것은 대신 `-devel` 접미사를 붙여 알려 줍니다. ``` ```shell psql --version ``` ``` psql (PostgreSQL) 18.6 ``` 그 밖의 모든 것 — `initdb`·`pg_dump`·`pg_dumpall`·`pg_restore`·`pg_upgrade`· `pg_basebackup`·`pg_controldata`·`pg_checksums`·`vacuumdb`·`reindexdb`·`createdb`와 나머지 — 은 PostgreSQL 이름과 PostgreSQL 동작을 그대로 지닙니다. `AGDATA`는 기본 데이터 디렉터리로서 `PGDATA`와 나란히 동작하므로, `export AGDATA=/path/to/data` 를 해 두면 `-D`를 생략할 수 있습니다. 이것을 읽는 바이너리는 정확히 셋 — `initdb`·`pg_ctl`·`ag_ctl` — 이고, 우선순위가 서로 다릅니다. `initdb`는 `PGDATA`보다 `AGDATA`를 앞세우고, `pg_ctl`과 `ag_ctl`은 `PGDATA`를 앞세웁니다. 그 밖의 모든 도구는 `PGDATA`만 받습니다. {#tools-starting-and-stopping} ## 기동과 정지 ```shell ag_ctl -D /path/to/data -l /path/to/data/server.log start ag_ctl -D /path/to/data status ag_ctl -D /path/to/data reload ag_ctl -D /path/to/data stop -m fast ``` systemd에서는 PostgreSQL 자신의 유닛 관례를 쓰고 그것이 AgensGraph 바이너리를 가리키게 하십시오. 여기에 그래프에만 해당하는 것은 없습니다. [배포](deployment.md)를 참고하십시오. {#tools-dumping-a-graph} ## 그래프 덤프하기 그래프는 스키마이고 그 레이블은 테이블이므로, `pg_dump`와 `pg_dumpall`은 특별한 옵션 없이 그래프를 다룹니다. 따라서 덤프에는 `CREATE GRAPH`·`CREATE VLABEL`·`CREATE ELABEL` 문장과 레이블 데이터가 담깁니다. ```shell pg_dump -d mydb -f mydb.sql pg_dump -d mydb -Fc -f mydb.dump ``` 그래프 하나만 덤프하려면 그 스키마를 지정하십시오: ```shell pg_dump -d mydb --schema=moviekb -f moviekb.sql ``` 그래프에만 해당하는 알아 둘 것 네 가지입니다: * **두 도구 모두 AgensGraph 버전을 검사하지 않습니다.** PostgreSQL 자신의 `server_version` 범위 검사만 적용되므로, 더 새 덤프를 더 낡은 서버에 복원하면 앞에서 거부되는 대신 도중에 파싱 실패로 드러납니다. * **평범한 컬럼을 지닌 레이블의 덤프는 그 `ALTER TABLE` 문장을 `SET enable_graph_ddl = on`으로 감쌉니다.** 그 설정은 어느 롤이든 쓸 수 있으므로 평범한 사용자도 복원할 수 있습니다. 그 롤에 `ALTER ROLE … SET`으로 강제로 꺼 두지 않았다면 말입니다. * **어떤 그래프든 [승격된 컬럼](../querying/typed-columns.md)을 쓰고 있으면 2.18 덤프는 2.17에 복원되지 않습니다.** 내보내진 `CREATE VLABEL` 형태를 2.17 파서가 받아들이지 못하며, 평문 스트림에서는 그 문장 뒤의 모든 것이 유실됩니다. * **Cypher 쿼리로 정의한 뷰는 그 Cypher가 컴파일된 SQL로 덤프됩니다.** 사용자가 쓴 Cypher가 아닙니다. 복원되고 동작하지만, 되돌려 받는 정의는 사용자가 쓴 정의가 아닙니다. [SQL과 Cypher 섞어 쓰기](../querying/combining-sql-and-cypher.md)를 참고하십시오. 복원한 뒤에는 그래프 메타데이터를 다시 만들고 다시 `ANALYZE` 하십시오. 정확한 명령은 [2.18로 업그레이드하기](#upgrade-to-218-step-6-post-upgrade-tasks)에 있으며, 업그레이드뿐 아니라 모든 복원에 적용됩니다. {#tools-upgrading-between-major-versions} ## 메이저 버전 간 업그레이드 `pg_upgrade`는 특별한 처리 없이 그래프에서 동작하며, AgensGraph에만 해당하는 조건이 둘 있습니다: * 레이블이 `id`·`start`·`end`·`properties` 말고 다른 컬럼을 지닌 그래프는, 물리적 컬럼 배치를 망가뜨리는 대신 거부합니다. * 끝난 뒤에는 `ag_graphmeta`가 비어 있고 그래프가 무효로 표시되므로, `regather_graphmeta()`를 실행하기 전까지 플래너의 스캔 쳐내기가 꺼져 있습니다. 전체 절차는 [2.18로 업그레이드하기](../release_notes/upgrade-to-2.18.md)에 있고, [업그레이드 실습](../release_notes/upgrade-walkthrough.md)은 실제 출력을 곁들인 예제입니다. {#tools-base-backups-and-wal} ## 베이스 백업과 WAL `pg_basebackup`·WAL 아카이빙·`pg_receivewal`·`pg_verifybackup`·`pg_rewind`는 모두 그래프를 있는 그대로 — 같은 클러스터 안의 스키마와 테이블로 — 다루므로, 물리 백업은 그래프 데이터와 관계형 데이터를 같은 시점에 함께 담습니다. [백업과 복구](backup.md)를 참고하십시오.