배포
시스템 요구 사항
AgensGraph를 실행하려면 최소 4GB의 RAM과 2.5GB의 디스크 공간이 필요합니다. 일반적인 Unix 호환 플랫폼이라면 어디에서나 실행할 수 있지만, 공식적으로 인증된 플랫폼은 Linux 계열(Centos, Ubuntu, RHEL)과 Windows 계열(Windows Server 2008 64bits, Windows Server 2012 64bits, Windows 7 64bits)입니다.
설치 전 작업
사용자 계정
외부에서 접근 가능한 다른 서버 데몬과 마찬가지로, AgensGraph는 별도의 사용자 계정으로 실행하는 것이 권장됩니다. Unix 호환 플랫폼을 사용하는 경우 useradd 또는 adduser 명령으로 사용자 계정을 추가할 수 있습니다.
useradd agens
커널 리소스 관리
공유 메모리와 세마포어
공유 메모리와 세마포어는 통칭하여 “System V IPC”라고 하며, 이는 AgensGraph를 실행하는 데 필요합니다. AgensGraph가 요청하는 크기가 IPC 제한을 초과하는 경우 서버가 시작되지 않습니다.
이름 |
설명 |
적정 값 |
|---|---|---|
SHMMAX |
공유 메모리 세그먼트의 최대 크기(바이트 단위) |
최소 1kB(서버 복사본이 여러 개 실행 중인 경우 그 이상) |
SHMMIN |
공유 메모리 세그먼트의 최소 크기(바이트 단위) |
1 |
SHMALL |
사용 가능한 공유 메모리 총량(바이트 또는 페이지 단위) |
바이트 단위로는 SHMMAX와 동일. 페이지 단위로는 Ceil (SHMMAX / PAGE_SIZE) |
SHMSEG |
프로세스당 공유 메모리 세그먼트의 최대 개수 |
1개의 세그먼트만 필요하지만 기본값은 훨씬 더 높음 |
SHMMNI |
시스템 전체 공유 메모리 세그먼트의 최대 개수 |
SHMSEG에 다른 애플리케이션을 위한 여유 공간을 더한 값 |
SEMMNI |
세마포어 식별자(예: 세트)의 최대 개수 |
최소 ceil ((max_connections + autovacuum_max_workers + 4) / 16) |
SEMMNS |
시스템 전체 세마포어 |
ceil ((max_connections + autovacuum_max_worker + 4) / 16) * 17의 최대 개수와 다른 애플리케이션의 초과분 |
SEMMSL |
세트당 세마포어의 최대 개수 |
최소 17 |
SEMMAP |
세마포어 맵의 항목 개수 |
본문 참조 |
SEMVMX |
세마포어의 최대 값 |
최소 1000(기본값은 보통 32767이며, 필요하지 않으면 변경하지 마십시오) |
AgensGraph는 서버 복사본당 수 바이트의 System V 공유 메모리를 필요로 합니다(64비트 플랫폼의 경우 일반적으로 48바이트). 이 정도 양은 최신 운영 체제에서 쉽게 할당됩니다. 그러나 서버 복사본을 여러 개 실행하거나 다른 애플리케이션도 System V 공유 메모리를 사용하는 경우에는 SHMMAX(바이트 단위의 최대 공유 메모리 크기) 또는 SHMALL(시스템 전체 System V 공유 메모리)을 늘려야 할 수 있습니다. 대부분의 시스템에서 SHMALL은 바이트 단위가 아니라 페이지 단위로 처리된다는 점에 유의하십시오.
AgensGraph의 경우 공유 메모리 세그먼트의 최소 크기(SHMMIN)는 최대 약 32바이트(일반적으로 1)이며 문제를 일으킬 가능성이 낮습니다. 시스템 전체 세그먼트의 최대 개수(SHMMNI)나 프로세스당 최대 개수(SHMSEG)는 시스템이 0으로 설정되어 있지 않은 한 문제를 일으킬 가능성이 매우 낮습니다.
AgensGraph는 16개의 세트 중에서 연결당 하나의 세마포어(max_connections)와 autovacuum 워커 프로세스당 하나의 세마포어(autovacuum_max_workers)를 사용합니다. 각 세트에는 다른 애플리케이션의 세마포어 세트와의 충돌을 감지하는 “매직 넘버”를 가진 17번째 세마포어가 있습니다. 시스템의 세마포어 최대 개수는 SEMMNS로 설정되며, 최소한 “16개의 허용 연결 + 워커에 max_connections + autovacuum_max_workers + 1을 더한 값”이어야 합니다(표 1-1의 수식 참조). 매개변수 SEMMNI는 시스템에 동시에 존재할 수 있는 세마포어 세트의 개수를 제한합니다. 이 값은 최소 ceil ((max_connections + autovacuum_max_workers + 4) / 16)이어야 합니다. 허용 가능한 연결 수를 줄이는 것이 장애 발생 시 임시 해결책이 될 수 있지만, semget 함수로부터 “No space left on device.”와 같은 모호한 메시지를 받을 수도 있습니다.
경우에 따라서는 SEMMAP을 늘려 적어도 SEMMNS와 비슷하게 만들어야 할 수도 있습니다. 이 매개변수는 세마포어 리소스 맵의 크기를 정의하며, 이 맵에는 세마포어의 인접 블록이 필요로 하는 항목이 포함됩니다. 해제된 세마포어 세트는 해제된 블록에 인접한 항목에 추가되거나 새 항목으로 등록됩니다. 맵이 가득 차면 해제된 세마포어는 (재부팅될 때까지) 사라집니다. 세마포어 공간이 분할됨에 따라 사용 가능한 세마포어 개수가 줄어듭니다.
세트에 포함될 세마포어 개수를 결정하는 SEMMSL은 AgensGraph의 경우 최소 17이어야 합니다.
SEMMNU 및 SEMUME와 같은 “semaphore undo” 관련 기타 설정은 AgensGraph에 영향을 주지 않습니다.
참고: 일부 쿼리를 수행하는 중에 “Warning: Out of Shared Memory” 오류가 발생하는 경우, SKAI Worldwide 웹사이트를 방문하여 기술 지원을 요청하십시오. 담당 팀이 사용자의 사이트 환경에 적합한 메모리 설정 가이드를 제공해 드립니다.
단일 인스턴스 설치
AgensGraph를 설치하는 방법에는 두 가지가 있습니다. 공식 웹사이트에서 바이너리를 다운로드할 수도 있고, 소스 코드를 다운로드하여 빌드/설치할 수도 있습니다. 어느 방법이든 AgensGraph 관리용 계정으로 작업하는 것을 권장합니다.
바이너리 다운로드를 통한 설치
공식 AgensGraph 웹사이트의 S/W Download 메뉴에서 사용자의 운영 체제에 적합한 바이너리 또는 설치 프로그램을 다운로드하십시오.
Linux
Linux 바이너리는 tarball로 압축되어 있습니다. 원하는 위치에 압축을 푼 후, 설치 후 작업을 수행하여 설치를 완료하십시오.
Windows
곧 제공될 예정입니다.
소스 코드 빌드를 통한 설치
AgensGraph의 github에 접속하여 소스 코드를 복제하십시오.
git clone https://github.com/skaiworldwide-oss/agensgraph.git
복제한 위치로 이동하여 소스 트리에서 configure를 실행하십시오. 이때
--prefix=/path/to/install을 통해 AgensGraph가 설치될 위치를 지정할 수 있습니다.
./configure
빌드를 수행하십시오.
make install
익스텐션 모듈과 바이너리를 설치하십시오.
make install-world
설치 후 작업 (Linux)
Unix 계열과 Linux의 경우 환경 변수를 등록하지 않으면 설치된 라이브러리를 제대로 읽거나 활성화할 수 없으며, 호출할 때마다 절대 경로를 입력해야 합니다. 위 문제는 다음과 같이 AgensGraph가 설치된 사용자의 bash_profile에 환경 변수를 추가하여 방지할 수 있습니다.
export AGHOME=/path/to/AgensGraph
export AGDATA=/path/to/AgensGraph /data
export PATH=$AGHOME/bin:$PATH
export LD_LIBRARY_PATH=$AGHOME/lib:$LD_LIBRARY_PATH
환경 변수 |
설명 |
|---|---|
AGHOME |
AgensGraph가 설치된 디렉터리입니다. |
AGDATA |
데이터 디렉터리의 위치 |
PATH |
AgensGraph를 사용하기 위해 $AGHOME/bin을 디렉터리 경로로 설정합니다. |
LD_LIBRARY_PATH |
AgensGraph 사용에 필요한 공유 라이브러리가 위치한 경로입니다. $AGHOME/lib으로 설정합니다. |
운영
initDB
AgensGraph를 실행하려면 initdb를 사용하여 데이터베이스 저장 영역을 초기화해야 합니다. 이러한 영역을 데이터베이스 클러스터라고 하며, 이는 실행 중인 데이터베이스 서버의 단일 인스턴스가 관리하는 데이터베이스의 모음입니다. 데이터베이스 클러스터는 모든 데이터가 저장되는 단일 디렉터리로 구성됩니다. 파일 시스템 관점에서는 데이터 디렉터리 또는 데이터 영역으로 간주됩니다. -D 옵션으로 이 데이터를 저장할 위치를 설정할 수 있습니다.
initdb -D /home/agensgraph/data
또는 ag_ctl을 사용하여 데이터베이스 저장 영역을 초기화할 수 있습니다.
ag_ctl initdb -D /home/agensgraph/data
initdb는 지정한 디렉터리가 존재하지 않으면 디렉터리를 생성하고, 이미 초기화되어 있으면 실행을 거부합니다.
롤 생성
롤은 데이터베이스 설정 방식에 따라 데이터베이스 사용자 또는 데이터베이스 사용자 그룹으로 간주될 수 있습니다. 롤은 데이터베이스 객체를 소유할 수 있으므로, 해당 객체에 대한 권한을 다른 롤에 부여하여 누가 객체에 접근할 수 있는지 제어할 수 있습니다. 롤의 멤버십을 다른 롤에 부여할 수 있으므로, 멤버 롤이 다른 롤에 부여된 권한을 사용하게 할 수 있습니다. 롤을 생성/삭제하려면 다음 SQL 명령을 사용해야 합니다.
db=# CREATE ROLE name;
db=# DROP ROLE name;
편의를 위해 (SQL 명령의 래퍼 역할을 하는) createuser와 dropuser를 셸 명령줄에서 호출할 수 있습니다.
createuser name
dropuser name
createdb
데이터베이스를 생성/제거하려면 AgensGraph 서버를 시작하고 SQL 명령 CREATE DATABASE와 DROP DATABASE를 사용하여 생성하십시오.
db=# CREATE DATABASE name;
db=# DROP DATABASE name;
CREATE DATABASE를 수행한 현재 롤이 자동으로 새 데이터베이스의 소유자가 됩니다.
편의를 위해 셸 명령줄에서 createdb와 dropdb를 호출하여 데이터베이스를 생성/제거할 수 있습니다. -O 옵션을 사용하여 생성하려는 새 데이터베이스의 소유자를 지정할 수 있습니다.
createdb dbname [-O rolename]
dropdb dbname
시작
ag_ctl을 사용하여 데이터베이스에 접근하기 전에 데이터베이스 서버를 시작해야 합니다. 시작하려면 초기화된 데이터베이스 저장소가 필요하며, -D 옵션으로 해당 디렉터리를 지정해야 합니다. 환경 변수 AGDATA를 통해 데이터베이스 저장소 위치를 설정한 경우에는 -D 옵션 없이 서버를 시작할 수 있습니다. -l 옵션을 사용하면 로그가 기록될 logfile을 설정할 수 있습니다.
ag_ctl start [-D /home/agensgraph/data] [-l /home/agensgraph/data/logfile]
종료
AgensGraph를 종료하는 방법에는 여러 가지가 있습니다. 마스터 프로세스에 전송되는 시그널에 따라 종료 유형을 제어할 수 있습니다.
모드 |
설명 |
|---|---|
SIGTERM |
스마트 종료 모드. 서버는 새로운 연결을 허용하지 않지만, 기존 세션이 정상적으로 종료될 때까지 기다린 후 종료합니다. |
SIGINT |
빠른 종료 모드. 서버는 새로운 연결을 허용하지 않으며, 기존의 모든 프로세스에 대한 트랜잭션을 중단/종료합니다. |
SIGQUIT |
즉시 종료 모드. 서버는 모든 자식 프로세스를 종료합니다. |
다음과 같이 -m 옵션으로 ag_ctl을 종료할 수 있습니다(-m을 지정하지 않으면 기본값은 smart입니다):
ag_ctl stop [-D DATADIR] -[m smart|fast|immediate]