> For the complete documentation index, see [llms.txt](https://docs.tibero.com/tmaxopensql/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tibero.com/tmaxopensql/installation/prerequisites.md).

# 사전확인사항

### 지원 플랫폼 및 운영체제

OpenSQL 3.0은 아래의 하드웨어 및 운영체제 환경에서 설치 및 운영이 가능합니다.

| HW/SW | CPU | OS                                                                                                                                     | Binary Bits |
| ----- | --- | -------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| GNU   | x86 | <p>Oracle Linux 8</p><p>Oracle Linux 9</p><p>Rocky Linux 8</p><p>Rocky Linux 9<br>RHEL 8<br>RHEL 9<br>Ubuntu 22.04<br>Ubuntu 24.04</p> | 64bits      |

### 시스템 소프트웨어 요구사항

OpenSQL 3.0을 컴파일 및 실행하기 위해 아래와 같은 시스템 소프트웨어 및 라이브러리 패키지가 사전에 설치되어야 합니다.

### HA 구성 시 시간 동기화(NTP) 확인

HA 환경에서는 모든 노드의 시스템 시간이 동일하게 동기화되어 있어야 합니다. 노드 간 시간이 다를 경우 Leader 선출, 노드 상태 판단, 로그 분석, 장애 조치 과정에서 오작동이 발생할 수 있습니다.

* 모든 HA 노드에는 NTP 또는 Chrony 기반 시간 동기화를 설정해야 합니다.
* 모든 노드는 동일한 시간 동기화 서버를 사용하도록 권장합니다.
* OpenHA 및 PostgreSQL 기동 전에 노드 간 시간 차이가 없는지 확인해야 합니다.

설정 예시:

```bash
sudo systemctl enable --now chronyd
```

확인 예시:

```bash
timedatectl status
chronyc sources -v
date
```

#### RHEL8/Rocky Linux 8/Oracle Linux8

* PostgreSQL

| 패키지명           |     최소 버전 | 정확한 버전 예시          | 용도                       | 필수 여부               |
| -------------- | --------: | ------------------ | ------------------------ | ------------------- |
| `glibc`        |   2.28 이상 | 2.28-225.el8       | GNU C 라이브러리 (시스템 기본)     | **필수**              |
| `libgcc`       |    8.x 이상 | 8.5.0-4.el8        | GCC 런타임 라이브러리            | **필수**              |
| `libstdc++`    |    8.x 이상 | 8.5.0-4.el8        | C++ 표준 라이브러리             | **필수**              |
| `zlib`         | 1.2.11 이상 | 1.2.11-17.el8      | 압축 라이브러리                 | **필수**              |
| `readline`     |    7.0 이상 | 7.0-10.el8         | 명령줄 편집 라이브러리             | **필수**              |
| `ncurses-libs` |    6.1 이상 | 6.1-9.20180224.el8 | 터미널 제어 라이브러리             | **필수**              |
| `lz4-libs`     |  1.8.3 이상 | 1.8.3-3.el8        | LZ4 압축 알고리즘              | **필수**              |
| `libicu`       |   60.2 이상 | 60.2-3.el8         | 유니코드 지원 라이브러리            | **필수**              |
| `openssl-libs` |  1.1.1 이상 | 1.1.1k-5.el8       | SSL/TLS 암호화 라이브러리        | **필수**              |
| `libxml2`      |  2.9.7 이상 | 2.9.7-9.el8        | XML 파싱 라이브러리             | **필수**              |
| `llvm-libs`    |   12.0 이상 | 12.0.1-2.el8       | JIT 컴파일 (PostgreSQL 11+) | 선택 (JIT 사용 시)       |
| `perl-libs`    |   5.26 이상 | 5.26.3-420.el8     | PL/Perl 확장 언어            | 선택 (PL/Perl 사용 시)   |
| `python3-libs` |    3.6 이상 | 3.6.8-38.el8       | PL/Python 확장 언어          | 선택 (PL/Python 사용 시) |
| `tcl`          |    8.6 이상 | 8.6.8-4.el8        | PL/Tcl 확장 언어             | 선택 (PL/Tcl 사용 시)    |
| `pam`          |  1.3.1 이상 | 1.3.1-12.el8       | PAM 인증                   | 선택 (PAM 인증 사용 시)    |
| `krb5-libs`    |   1.18 이상 | 1.18.2-8.el8       | Kerberos 인증              | 선택 (Kerberos 사용 시)  |
| `libxslt`      | 1.1.32 이상 | 1.1.32-6.el8       | XSLT 변환                  | 선택 (XSLT 사용 시)      |
| `openldap`     | 2.4.46 이상 | 2.4.46-17.el8      | LDAP 인증                  | 선택 (LDAP 사용 시)      |
| `libselinux`   |    2.9 이상 | 2.9-5.el8          | SELinux 지원               | 선택 (SELinux 사용 시)   |
| `systemd-libs` |    239 이상 | 239-51.el8         | systemd 통합               | 선택 (systemd 사용 시)   |

* Patroni

| 패키지명                |    최소 버전 | 정확한 버전 예시    | 설명                                   |
| ------------------- | -------: | ------------ | ------------------------------------ |
| `python3`           |   3.6 이상 | 3.6.8-38.el8 | Python 인터프리터                         |
| `python3-libs`      |   3.6 이상 | 3.6.8-38.el8 | Python 런타임 라이브러리                     |
| `glibc`             |  2.28 이상 | 2.28-225.el8 | GNU C 라이브러리 (시스템 기본)                 |
| `libgcc`            |   8.x 이상 | 8.5.0-4.el8  | GCC 런타임 라이브러리                        |
| `libstdc++`         |   8.x 이상 | 8.5.0-4.el8  | C++ 표준 라이브러리                         |
| `openssl-libs`      | 1.1.1 이상 | 1.1.1k-5.el8 | SSL/TLS 암호화 라이브러리                    |
| `jq`                |   1.5 이상 | 1.5-3.el8    | JSON 파서/프로세서                         |
| `postgresql12-libs` |  12.0 이상 | 12.15-1.el8  | PostgreSQL 클라이언트 라이브러리 (psycopg2 의존) |

* pgAudit

| 패키지명            |    최소 버전 | 정확한 버전 예시                    | 설명                                           | 필수 여부 |
| --------------- | -------: | ---------------------------- | -------------------------------------------- | ----- |
| `openssl-devel` | 1.1.1 이상 | `1.1.1k-12.el8_9`            | (PostgreSQL 빌드/연동 옵션에 따라) TLS/crypto 헤더      | 필수    |
| `libpq-devel`   |  13.x 이상 | `libpq-devel-13.20-1.el8_10` | libpq(클라이언트) 헤더/라이브러리                        | 필수    |
| `krb5-devel`    |  1.18 이상 | `1.18.2-32.el8_10`           | (PostgreSQL 빌드/연동 옵션에 따라) GSSAPI/Kerberos 헤더 | 필수    |

* Postgis

| 패키지명            | 최소 버전     | 정확한 버전 예시                  | 설명                          | 필수 여부  |
| --------------- | --------- | -------------------------- | --------------------------- | ------ |
| `SFCGAL`        | 1.x 이상    | libSFCGAL.so.1.5.0         | 3D/고급 기하 연산 엔진              | **필수** |
| `geos`          | 3.13.1 이상 | geos-3.13.1-1.el8          | 2D 공간(geometry) 연산 라이브러리    | **필수** |
| `proj`          | 6.3.2 이상  | proj-6.3.2-4.el8           | 좌표계 변환 라이브러리                | **필수** |
| `json-c`        | 0.13.1 이상 | json-c-0.13.1-3.el8        | JSON 파싱 및 생성 라이브러리          | **필수** |
| `libxml2`       | 2.9.7 이상  | libxml2-2.9.7-21.el8\_10.3 | XML 파싱 및 처리 라이브러리           | **필수** |
| `libxml2-devel` | 2.9.7 이상  | libxml2-2.9.7-21.el8\_10.3 | XML 파싱 및 처리 라이브러리           | **필수** |
| `gdal`          | 3.0.4 이상  | gdal-3.0.4-12.el8          | 공간 데이터 입출력 라이브러리            | **필수** |
| `protobuf-c`    | 1.3.0 이상  | 1.3.0-8.el8                | Protocol Buffer C 런타임 라이브러리 | **필수** |

* pgvectorscale

| 패키지명                 | 최소 버전     | 정확한 버전 예시                        | 설명                          | 필수 여부  |
| -------------------- | --------- | -------------------------------- | --------------------------- | ------ |
| `pkgconf-pkg-config` | 1.4.2 이상  | pkgconf-1.4.2-1.el8              | 라이브러리 빌드 옵션 조회 도구           | **필수** |
| `clang-devel`        | 20.1.8 이상 | 2.module+el8.10.0+2096+4bb90181  | Clang 라이브러리 패키지             | **필수** |
| `rustup`             | 1.85.0    | 1.85.0-x86\_64-unknown-linux-gnu | Rust 설치 및 버전 관리 도구          | **필수** |
| `cargo-pgrx`         | 0.13.0 이상 | 0.13.0                           | Rust 기반 PostgreSQL 확장 개발 도구 | **필수** |

* opensql-installer

| 패키지명                  | 최소 버전   | 정확한 버전 예시       | 설명                  | 필수 여부  |
| --------------------- | ------- | --------------- | ------------------- | ------ |
| `envsubst`            | 0.19 이상 | 0.19.8.1-17.el8 | 환경변수 치환 도구          | **필수** |
| `python3-dataclasses` | 0.8 이상  | 0.8-4.el8       | 데이터 클래스 자동 생성 라이브러리 | **필수** |

* pg\_repack

| 패키지명             | 최소 버전     | 정확한 버전 예시     | 설명                     | 필수 여부 |
| ---------------- | --------- | ------------- | ---------------------- | ----- |
| `make`           | 4.2.1 이상  | 4.2.1-9.el8   | 확장 빌드 도구               | 필수    |
| `gcc`            | 8.0 이상    | 8.5.0-4.el8   | GNU C 컴파일러             | 필수    |
| `lz4-devel`      | 1.8.3 이상  | 1.8.3-3.el8   | LZ4 개발 헤더 및 라이브러리      | 필수    |
| `zlib-devel`     | 1.2.11 이상 | 1.2.11-17.el8 | 압축 라이브러리 개발 헤더 및 라이브러리 | 필수    |
| `readline-devel` | 7.0 이상    | 7.0-10.el8    | 명령줄 편집 개발 헤더 및 라이브러리   | 필수    |

#### RHEL9/Rocky Linux 9/Oracle Linux9

* PostgreSQL

| 패키지명           |     최소 버전 | 정확한 버전 예시     | 용도                              | 필수 여부               |
| -------------- | --------: | ------------- | ------------------------------- | ------------------- |
| `glibc`        |   2.34 이상 | 2.34-40.el9   | GNU C 라이브러리 (시스템 기본)            | **필수**              |
| `libgcc`       |   11.x 이상 | 11.2.1-9.el9  | GCC 런타임 라이브러리                   | **필수**              |
| `libstdc++`    |   11.x 이상 | 11.2.1-9.el9  | C++ 표준 라이브러리                    | **필수**              |
| `zlib`         | 1.2.11 이상 | 1.2.11-31.el9 | 압축 라이브러리                        | **필수**              |
| `readline`     |    8.1 이상 | 8.1-4.el9     | 명령줄 편집 라이브러리                    | **필수**              |
| `ncurses-libs` |    6.2 이상 | 6.2-4.el9     | 터미널 제어 라이브러리                    | **필수**              |
| `lz4-libs`     |  1.9.3 이상 | 1.9.3-5.el9   | LZ4 압축 알고리즘                     | **필수**              |
| `libicu`       |   67.1 이상 | 67.1-7.el9    | 유니코드 지원 라이브러리                   | **필수**              |
| `openssl-libs` |  3.0.x 이상 | 3.0.1-23.el9  | SSL/TLS 암호화 라이브러리 (OpenSSL 3.0) | **필수**              |
| `libxml2`      | 2.9.13 이상 | 2.9.13-3.el9  | XML 파싱 라이브러리                    | **필수**              |
| `llvm-libs`    |   14.0 이상 | 14.0.0-2.el9  | JIT 컴파일 (PostgreSQL 11+)        | 선택 (JIT 사용 시)       |
| `perl-libs`    |   5.32 이상 | 5.32.1-6.el9  | PL/Perl 확장 언어                   | 선택 (PL/Perl 사용 시)   |
| `python3-libs` |    3.9 이상 | 3.9.16-1.el9  | PL/Python 확장 언어                 | 선택 (PL/Python 사용 시) |
| `tcl`          |    8.6 이상 | 8.6.10-5.el9  | PL/Tcl 확장 언어                    | 선택 (PL/Tcl 사용 시)    |
| `pam`          |  1.5.1 이상 | 1.5.1-10.el9  | PAM 인증                          | 선택 (PAM 인증 사용 시)    |
| `krb5-libs`    |   1.19 이상 | 1.19.1-8.el9  | Kerberos 인증                     | 선택 (Kerberos 사용 시)  |
| `libxslt`      | 1.1.34 이상 | 1.1.34-6.el9  | XSLT 변환                         | 선택 (XSLT 사용 시)      |
| `openldap`     |  2.6.2 이상 | 2.6.2-3.el9   | LDAP 인증                         | 선택 (LDAP 사용 시)      |
| `libselinux`   |    3.4 이상 | 3.4-5.el9     | SELinux 지원                      | 선택 (SELinux 사용 시)   |
| `systemd-libs` |    250 이상 | 250-4.el9     | systemd 통합                      | 선택 (systemd 사용 시)   |

* Patroni

| 패키지명                |    최소 버전 | 정확한 버전 예시    | 설명                                   |
| ------------------- | -------: | ------------ | ------------------------------------ |
| `python3`           |   3.9 이상 | 3.9.16-1.el9 | Python 인터프리터                         |
| `python3-libs`      |   3.9 이상 | 3.9.16-1.el9 | Python 런타임 라이브러리                     |
| `glibc`             |  2.34 이상 | 2.34-40.el9  | GNU C 라이브러리 (시스템 기본)                 |
| `libgcc`            |  11.x 이상 | 11.2.1-9.el9 | GCC 런타임 라이브러리                        |
| `libstdc++`         |  11.x 이상 | 11.2.1-9.el9 | C++ 표준 라이브러리                         |
| `openssl-libs`      | 3.0.x 이상 | 3.0.1-23.el9 | SSL/TLS 암호화 라이브러리 (OpenSSL 3.0)      |
| `jq`                |   1.5 이상 | 1.5-3.el9    | JSON 파서/프로세서                         |
| `postgresql13-libs` |  13.0 이상 | 13.11-1.el9  | PostgreSQL 클라이언트 라이브러리 (psycopg2 의존) |

* pgAudit

| 패키지명            |     최소 버전 | 정확한 버전 예시                    | 설명                                           | 필수 여부 |
| --------------- | --------: | ---------------------------- | -------------------------------------------- | ----- |
| `openssl-devel` |    3.x 이상 | `1.1.1k-12.el8_9`            | (PostgreSQL 빌드/연동 옵션에 따라) TLS/crypto 헤더      | 필수    |
| `libpq-devel`   |   13.x 이상 | `libpq-devel-13.20-1.el8_10` | libpq(클라이언트) 헤더/라이브러리                        | 필수    |
| `krb5-devel`    | 1.20.x 이상 | `1.18.2-32.el8_10`           | (PostgreSQL 빌드/연동 옵션에 따라) GSSAPI/Kerberos 헤더 | 필수    |

* Postgis

| 패키지명            | 최소 버전     | 정확한 버전 예시                | 설명                          | 필수 여부  |
| --------------- | --------- | ------------------------ | --------------------------- | ------ |
| `SFCGAL`        | 2.x 이상    | libSFCGAL.so.2.0.0       | 3D/고급 기하 연산 엔진              | **필수** |
| `geos`          | 3.13.1 이상 | geos-3.13.1-1.el9        | 2D 공간(geometry) 연산 라이브러리    | **필수** |
| `proj`          | 9.6.0 이상  | proj-9.6.0-2.el9         | 좌표계 변환 라이브러리                | **필수** |
| `json-c`        | 0.14 이상   | json-c-0.14-11           | JSON 파싱 및 생성 라이브러리          | **필수** |
| `libxml2`       | 2.9.13 이상 | libxml2-2.9.13-14.el9\_7 | XML 파싱 및 처리 라이브러리           | **필수** |
| `libxml2-devel` | 2.9.13 이상 | libxml2-2.9.13-14.el9\_7 | XML 파싱 및 처리 라이브러리           | **필수** |
| `gdal`          | 3.4.x 이상  | gdal-3.4.3-3.el9         | 공간 데이터 입출력 라이브러리            | **필수** |
| `protobuf-c`    | 1.3.0 이상  | 1.3.0-13.el9             | Protocol Buffer C 런타임 라이브러리 | **필수** |

* pgvectorscale

| 패키지명                 | 최소 버전     | 정확한 버전 예시                        | 설명                          | 필수 여부  |
| -------------------- | --------- | -------------------------------- | --------------------------- | ------ |
| `pkgconf-pkg-config` | 1.4.2 이상  | pkgconf-1.4.2-1.el8              | 라이브러리 빌드 옵션 조회 도구           | **필수** |
| `clang-devel`        | 20.1.8 이상 | 2.module+el8.10.0+2096+4bb90181  | Clang 라이브러리 패키지             | **필수** |
| `rustup`             | 1.85.0    | 1.85.0-x86\_64-unknown-linux-gnu | Rust 설치 및 버전 관리 도구          | **필수** |
| `cargo-pgrx`         | 0.13.0 이상 | 0.13.0                           | Rust 기반 PostgreSQL 확장 개발 도구 | **필수** |

* opensql-installer

| 패키지명                  | 최소 버전   | 정확한 버전 예시  | 설명                  | 필수 여부  |
| --------------------- | ------- | ---------- | ------------------- | ------ |
| `gettext`             | 0.21 이상 | 0.21-8.el9 | 환경변수 치환 도구          | **필수** |
| `python3-dataclasses` | 0.8 이상  | 0.8-4.el9  | 데이터 클래스 자동 생성 라이브러리 | **필수** |

* pg\_repack

| 패키지명             | 최소 버전     | 정확한 버전 예시     | 설명                     | 필수 여부 |
| ---------------- | --------- | ------------- | ---------------------- | ----- |
| `make`           | 4.3 이상    | 1:4.3-7.el9   | 확장 빌드 도구               | 필수    |
| `gcc`            | 11.0 이상   | 11.4.1-3.el9  | GNU C 컴파일러             | 필수    |
| `lz4-devel`      | 1.9.3 이상  | 1.9.3-5.el9   | LZ4 개발 헤더 및 라이브러리      | 필수    |
| `zlib-devel`     | 1.2.11 이상 | 1.2.11-31.el9 | 압축 라이브러리 개발 헤더 및 라이브러리 | 필수    |
| `readline-devel` | 8.1 이상    | 8.1-4.el9     | 명령줄 편집 개발 헤더 및 라이브러리   | 필수    |

#### Ubuntu 22.04 (Jammy)

* PostgreSQL

| 패키지명            | 최소 버전     | 정확한 버전 예시              | 용도                       | 필수 여부               |
| --------------- | --------- | ---------------------- | ------------------------ | ------------------- |
| `libc6`         | 2.35 이상   | 2.35-0ubuntu3          | GNU C 라이브러리 (시스템 기본)     | **필수**              |
| `libgcc-s1`     | 12.x 이상   | 12.3.0-1ubuntu1        | GCC 런타임 라이브러리            | **필수**              |
| `libstdc++6`    | 12.x 이상   | 12.3.0-1ubuntu1        | C++ 표준 라이브러리             | **필수**              |
| `zlib1g`        | 1.2.11 이상 | 1:1.2.11.dfsg-2ubuntu9 | 압축 라이브러리                 | **필수**              |
| `libreadline8`  | 8.1 이상    | 8.1.2-1                | 명령줄 편집 라이브러리             | **필수**              |
| `libncurses6`   | 6.3 이상    | 6.3-2                  | 터미널 제어 라이브러리             | **필수**              |
| `liblz4-1`      | 1.9.3 이상  | 1.9.3-2build2          | LZ4 압축 알고리즘              | **필수**              |
| `libicu70`      | 70.x 이상   | 70.1-2                 | 유니코드 지원 라이브러리            | **필수**              |
| `libssl3`       | 3.0.x 이상  | 3.0.2-0ubuntu1         | SSL/TLS 암호화 라이브러리        | **필수**              |
| `libxml2`       | 2.9.13 이상 | 2.9.13+dfsg-1ubuntu0   | XML 파싱 라이브러리             | **필수**              |
| `libllvm14`     | 14.x 이상   | 1:14.0.0-1ubuntu1      | JIT 컴파일 (PostgreSQL 14+) | 선택 (JIT 사용 시)       |
| `libperl5.34`   | 5.34 이상   | 5.34.0-3ubuntu1        | PL/Perl 확장 언어            | 선택 (PL/Perl 사용 시)   |
| `libpython3.10` | 3.10 이상   | 3.10.12-1\~22.04       | PL/Python 확장 언어          | 선택 (PL/Python 사용 시) |
| `libtcl8.6`     | 8.6 이상    | 8.6.12+dfsg-1build1    | PL/Tcl 확장 언어             | 선택 (PL/Tcl 사용 시)    |
| `libpam0g`      | 1.4.0 이상  | 1.4.0-11ubuntu2        | PAM 인증                   | 선택 (PAM 인증 사용 시)    |
| `libkrb5-3`     | 1.19 이상   | 1.19.2-2ubuntu0        | Kerberos 인증              | 선택 (Kerberos 사용 시)  |
| `libxslt1.1`    | 1.1.34 이상 | 1.1.35-1               | XSLT 변환                  | 선택 (XSLT 사용 시)      |
| `libldap-2.5-0` | 2.5.x 이상  | 2.5.13+dfsg-5ubuntu1   | LDAP 인증                  | 선택 (LDAP 사용 시)      |
| `libselinux1`   | 3.3 이상    | 3.3-1build2            | SELinux 지원               | 선택 (SELinux 사용 시)   |
| `libsystemd0`   | 249 이상    | 249.11-0ubuntu3        | systemd 통합               | 선택 (systemd 사용 시)   |
| `flex`          | 2.6.4 이상  | 2.6.4-8build2          | 렉서 생성 도구                 | **필수**              |
| `bison`         | 3.8 이상    | 2:3.8.2+dssfg-1build1  | 파서 생성 도구                 | **필수**              |

* Patroni

| 패키지명         | 최소 버전    | 정확한 버전 예시              | 설명                                   |
| ------------ | -------- | ---------------------- | ------------------------------------ |
| `libc6`      | 2.35 이상  | 2.35-0ubuntu3          | GNU C 라이브러리                          |
| `libgcc-s1`  | 12.x 이상  | 12.3.0-1ubuntu1        | GCC 런타임 라이브러리                        |
| `libstdc++6` | 12.x 이상  | 12.3.0-1ubuntu1        | C++ 표준 라이브러리                         |
| `libssl3`    | 3.0.x 이상 | 3.0.2-0ubuntu1         | SSL/TLS 암호화 라이브러리                    |
| `libpq5`     | 14.x 이상  | 14.13-0ubuntu0.22.04.1 | PostgreSQL 클라이언트 라이브러리 (psycopg2 의존) |
| `jq`         | 1.6 이상   | 1.6-2.1ubuntu3         | JSON 파서/프로세서                         |

* pgAudit

| 패키지명          | 최소 버전    | 정확한 버전 예시              | 설명                 | 필수 여부  |
| ------------- | -------- | ---------------------- | ------------------ | ------ |
| `libssl-dev`  | 3.0.x 이상 | 3.0.2-0ubuntu1.18      | TLS/crypto 헤더      | **필수** |
| `libpq-dev`   | 14.x 이상  | 14.13-0ubuntu0.22.04.1 | libpq 헤더/라이브러리     | **필수** |
| `libkrb5-dev` | 1.19 이상  | 1.19.2-2ubuntu0.3      | GSSAPI/Kerberos 헤더 | **필수** |

* pgvectorscale

| 패키지명           | 최소 버전     | 정확한 버전 예시                        | 설명                          | 필수 여부  |
| -------------- | --------- | -------------------------------- | --------------------------- | ------ |
| `pkg-config`   | 0.29.2 이상 | 0.29.2-1ubuntu3                  | 라이브러리 빌드 옵션 조회 도구           | **필수** |
| `libclang-dev` | 14.0 이상   | 1:14.0-55\~exp2                  | Clang 라이브러리 패키지             | **필수** |
| `rustup`       | 1.85.0    | 1.85.0-x86\_64-unknown-linux-gnu | Rust 설치 및 버전 관리 도구          | **필수** |
| `cargo-pgrx`   | 0.13.0 이상 | 0.13.0                           | Rust 기반 PostgreSQL 확장 개발 도구 | **필수** |
| `libssl-dev`   | 3.0.2 이상  | 3.0.2-0ubuntu3.7                 | TLS/crypto 헤더               | **필수** |
| `curl`         | 7.81.0 이상 | 7.81.0-1ubuntu1                  | 데이터 전송용 명령줄 도구              | **필수** |

* opensql-installer

| 패키지명           | 최소 버전   | 정확한 버전 예시     | 설명                 | 필수 여부  |
| -------------- | ------- | ------------- | ------------------ | ------ |
| `gettext-base` | 0.21 이상 | 0.21-4ubuntu2 | 다국어 지원 기본 유틸리티 패키지 | **필수** |

* postgis

| 설치할 패키지 명     | 최소 버전  | 정확한 버전 예시     | 설명                              | 필수 여부  |
| ------------- | ------ | ------------- | ------------------------------- | ------ |
| `libgeos`     | 3.10.0 | 3.10.2-1      | 공간 기하 연산(점·선·면 교차, 버퍼링 등) C API | **필수** |
| `libproj-dev` | 8.2.0  | 8.2.1-1       | 좌표계 간 투영·변환                     | **필수** |
| `libjson-c5`  | 0.16   | 0.16-2        | JSON 파싱 및 직렬화                   | **필수** |
| `libxml2`     | 2.9.0  | 2.9.13+dfsg-1 | XML 파싱                          | **필수** |

* pg\_repack

| 패키지명              | 최소 버전     | 정확한 버전 예시                | 설명                     | 필수 여부 |
| ----------------- | --------- | ------------------------ | ---------------------- | ----- |
| `make`            | 4.3 이상    | 4.3-4.1build1            | 확장 빌드 도구               | 필수    |
| `gcc`             | 11.0 이상   | 4:11.2.0-1ubuntu1        | GNU C 컴파일러             | 필수    |
| `liblz4-dev`      | 1.9.3 이상  | 1.9.3-2build2            | LZ4 개발 헤더 및 라이브러리      | 필수    |
| `zlib1g-dev`      | 1.2.11 이상 | 1:1.2.11.dfsg-2ubuntu9.2 | 압축 라이브러리 개발 헤더 및 라이브러리 | 필수    |
| `libreadline-dev` | 8.1 이상    | 8.1.2-1                  | 명령줄 편집 개발 헤더 및 라이브러리   | 필수    |

***

#### Ubuntu 24.04 (Noble)

* PostgreSQL

| 패키지명              | 최소 버전     | 정확한 버전 예시              | 용도                       | 필수 여부               |
| ----------------- | --------- | ---------------------- | ------------------------ | ------------------- |
| `libc6`           | 2.39 이상   | 2.39-0ubuntu8          | GNU C 라이브러리 (시스템 기본)     | **필수**              |
| `libgcc-s1`       | 14.x 이상   | 14.2.0-4ubuntu2        | GCC 런타임 라이브러리            | **필수**              |
| `libstdc++6`      | 14.x 이상   | 14.2.0-4ubuntu2        | C++ 표준 라이브러리             | **필수**              |
| `zlib1g`          | 1.3 이상    | 1:1.3.dfsg-3.1ubuntu2  | 압축 라이브러리                 | **필수**              |
| `libreadline8t64` | 8.2 이상    | 8.2-4build1            | 명령줄 편집 라이브러리             | **필수**              |
| `libncurses6`     | 6.4 이상    | 6.4+20240113-2ubuntu1  | 터미널 제어 라이브러리             | **필수**              |
| `liblz4-1`        | 1.9.4 이상  | 1.9.4-1build1          | LZ4 압축 알고리즘              | **필수**              |
| `libicu74`        | 74.x 이상   | 74.2-1ubuntu3          | 유니코드 지원 라이브러리            | **필수**              |
| `libssl3t64`      | 3.0.x 이상  | 3.0.13-0ubuntu3        | SSL/TLS 암호화 라이브러리        | **필수**              |
| `libxml2`         | 2.9.14 이상 | 2.9.14+dfsg-1.3ubuntu3 | XML 파싱 라이브러리             | **필수**              |
| `libllvm17`       | 17.x 이상   | 1:17.0.6-9ubuntu1      | JIT 컴파일 (PostgreSQL 14+) | 선택 (JIT 사용 시)       |
| `libperl5.38`     | 5.38 이상   | 5.38.2-3.2build2       | PL/Perl 확장 언어            | 선택 (PL/Perl 사용 시)   |
| `libpython3.12`   | 3.12 이상   | 3.12.3-1               | PL/Python 확장 언어          | 선택 (PL/Python 사용 시) |
| `libtcl8.6`       | 8.6 이상    | 8.6.14+dfsg-1build1    | PL/Tcl 확장 언어             | 선택 (PL/Tcl 사용 시)    |
| `libpam0g`        | 1.5.3 이상  | 1.5.3-5ubuntu5         | PAM 인증                   | 선택 (PAM 인증 사용 시)    |
| `libkrb5-3`       | 1.20 이상   | 1.20.1-6ubuntu2        | Kerberos 인증              | 선택 (Kerberos 사용 시)  |
| `libxslt1.1`      | 1.1.39 이상 | 1.1.39-0exp1ubuntu1    | XSLT 변환                  | 선택 (XSLT 사용 시)      |
| `libldap2`        | 2.6.x 이상  | 2.5.18+dfsg-0ubuntu1   | LDAP 인증                  | 선택 (LDAP 사용 시)      |
| `libselinux1`     | 3.5 이상    | 3.5-2ubuntu2           | SELinux 지원               | 선택 (SELinux 사용 시)   |
| `libsystemd0`     | 255 이상    | 255.4-1ubuntu8         | systemd 통합               | 선택 (systemd 사용 시)   |
| `flex`            | 2.6.4 이상  | 2.6.4-2build1          | 렉서 생성 도구                 | **필수**              |
| `bison`           | 3.8 이상    | 2:3.8.2+dsfg-1build1   | 파서 생성 도구                 | **필수**              |

* Patroni

| 패키지명         | 최소 버전    | 정확한 버전 예시             | 설명                                   |
| ------------ | -------- | --------------------- | ------------------------------------ |
| `libc6`      | 2.39 이상  | 2.39-0ubuntu8         | GNU C 라이브러리                          |
| `libgcc-s1`  | 14.x 이상  | 14.2.0-4ubuntu2       | GCC 런타임 라이브러리                        |
| `libstdc++6` | 14.x 이상  | 14.2.0-4ubuntu2       | C++ 표준 라이브러리                         |
| `libssl3t64` | 3.0.x 이상 | 3.0.13-0ubuntu3       | SSL/TLS 암호화 라이브러리                    |
| `libpq5`     | 16.x 이상  | 16.4-0ubuntu0.24.04.2 | PostgreSQL 클라이언트 라이브러리 (psycopg2 의존) |
| `jq`         | 1.7 이상   | 1.7.1-3build1         | JSON 파서/프로세서                         |

* pgAudit

| 패키지명          | 최소 버전    | 정확한 버전 예시             | 설명                 | 필수 여부  |
| ------------- | -------- | --------------------- | ------------------ | ------ |
| `libssl-dev`  | 3.0.x 이상 | 3.0.13-0ubuntu3.5     | TLS/crypto 헤더      | **필수** |
| `libpq-dev`   | 16.x 이상  | 16.4-0ubuntu0.24.04.2 | libpq 헤더/라이브러리     | **필수** |
| `libkrb5-dev` | 1.20 이상  | 1.20.1-6ubuntu2.1     | GSSAPI/Kerberos 헤더 | **필수** |

* pgvectorscale

| 패키지명           | 최소 버전     | 정확한 버전 예시                        | 설명                          | 필수 여부  |
| -------------- | --------- | -------------------------------- | --------------------------- | ------ |
| `pkg-config`   | 1.8.1 이상  | 1.8.1-2build1                    | 라이브러리 빌드 옵션 조회 도구           | **필수** |
| `libclang-dev` | 18.0 이상   | 1:18.1.3-1ubuntu1                | Clang 라이브러리 패키지             | **필수** |
| `rustup`       | 1.85.0    | 1.85.0-x86\_64-unknown-linux-gnu | Rust 설치 및 버전 관리 도구          | **필수** |
| `cargo-pgrx`   | 0.13.0 이상 | 0.13.0                           | Rust 기반 PostgreSQL 확장 개발 도구 | **필수** |
| `libssl-dev`   | 3.0.13 이상 | 3.0.13-0ubuntu3.7                | TLS/crypto 헤더               | **필수** |
| `curl`         | 8.5.0 이상  | 8.5.0-2ubuntu10.8                | 데이터 전송용 명령줄 도구              | **필수** |

* opensql-installer

| 패키지명           | 최소 버전   | 정확한 버전 예시      | 설명                 | 필수 여부  |
| -------------- | ------- | -------------- | ------------------ | ------ |
| `gettext-base` | 0.21 이상 | 0.21-14ubuntu2 | 다국어 지원 기본 유틸리티 패키지 | **필수** |

* postgis

| 패키지명          | 최소 버전  | 정확한 버전 예시        | 설명                              | 필수 여부  |
| ------------- | ------ | ---------------- | ------------------------------- | ------ |
| `libgeos`     | 3.12.1 | 3.12.1-1\~jammy1 | 공간 기하 연산(점·선·면 교차, 버퍼링 등) C API | **필수** |
| `libproj-dev` | 9.4.0  | 9.4.0-1\~jammy1  | 좌표계 간 투영·변환                     | **필수** |
| `libjson-c5`  | 0.16   | 0.16-2           | JSON 파싱 및 직렬화                   | **필수** |
| `libxml2`     | 2.9.0  | 2.9.13+dfsg-1    | XML 파싱                          | **필수** |

* pg\_repack

| 패키지명              | 최소 버전    | 정확한 버전 예시               | 설명                     | 필수 여부 |
| ----------------- | -------- | ----------------------- | ---------------------- | ----- |
| `make`            | 4.3 이상   | 4.3-4.1build2           | 확장 빌드 도구               | 필수    |
| `gcc`             | 13.0 이상  | 4:13.2.0-7ubuntu1       | GNU C 컴파일러             | 필수    |
| `liblz4-dev`      | 1.9.4 이상 | 1.9.4-1build1.1         | LZ4 개발 헤더 및 라이브러리      | 필수    |
| `zlib1g-dev`      | 1.3 이상   | 1:1.3.dfsg-3.1ubuntu2.1 | 압축 라이브러리 개발 헤더 및 라이브러리 | 필수    |
| `libreadline-dev` | 8.2 이상   | 8.2-4build1             | 명령줄 편집 개발 헤더 및 라이브러리   | 필수    |

### 표준 아키텍쳐 구성

OpenSQL 3.0 은 고가용성을 제공하기 위해 다음과 같이 3-Node, 2-Node 구성을 권장합니다.

#### 3-Node 구성

고가용성을 위한 대표적인 구성으로, 노드 간 이중화 및 자동 장애 조치 기능을 제공합니다.

<figure><img src="https://content.gitbook.com/content/0GAjhaWv6D91YSwzkCbo/blobs/sWqhW7hjtihVfcSSjAg6/image.png" alt="tmax OpenSQL 3 node 구성"><figcaption></figcaption></figure>

#### 2-Node 구성

2개의 노드만 사용하는 구성으로도 고가용성 구현이 가능하지만, 쿼럼 유지를 위해 추가적으로 Witness 노드가 필요합니다.

<figure><img src="https://content.gitbook.com/content/0GAjhaWv6D91YSwzkCbo/blobs/hIgXDhOk2ucaY7QcYQgL/image.png" alt="tmax OpenSQL 2 node 구성"><figcaption></figcaption></figure>

**witness node 최소 구성 요구사항**

(참고:<https://etcd.io/docs/v3.5/op-guide/hardware/>)

**On-premises**

| 항목             | 최소 spec  | 권장 spec      |
| -------------- | -------- | ------------ |
| CPU            | 2        | 4 코어 이상      |
| RAM            | 8GB      | 16 GB 이상     |
| Disk 타입        | SSD      | NVMe SSD     |
| Disk IOPS      | 500 IOPS | 3000 IOPS 이상 |
| Disk bandwidth | 25MB/s   | 100MB/s 이상   |
| Disk 용량        | 50GB     | 100GB 이상     |
| Networks       | 1Gbps    | 10Gbps 이상    |

**Cloud**

| Provider | Type                        | vCPUs | Memory (GB) | Max concurrent IOPS | Disk bandwidth (MB/s) |
| -------- | --------------------------- | ----- | ----------- | ------------------- | --------------------- |
| AWS      | m4.large                    | 2     | 8           | 3600                | 56.25                 |
| GCE      | n1-standard-2 + 50GB PD SSD | 2     | 7.5         | 1500                | 25                    |

#### 설치 전 요구사항

OpenSQL 설치를 위해서는 다음과 같은 시스템 요건이 필요합니다.

* 설치를 수행하는 운영체제(OS) 사용자에게는 **`sudo` 권한이 필요**합니다.
* OpenSQL의 설치 및 실행을 위해 **전용 OS 사용자 계정**을 사용할 것을 권장합니다.
* OpenSQL은 환경변수 `OPENSQL_HOME` 로 설정한 위치에 설치가 되므로 사전에 설정이 필요합니다.
* PostgreSQL 관련 컴포넌트는 환경변수 PG\_HOME으로 설정한 경로의 바이너리/라이브러리를 사용하므로 사전에 설정이 필요합니다.
* PostgreSQL 데이터 디렉터리(PGDATA)는 환경변수 PG\_DATA\_DIR로 설정한 경로를 사용하므로 사전에 설정이 필요합니다.
* OpenSQL의 PG engine은 `PG_HOME` 에 설치되므로 사전에 설정이 필요합니다.
* 일부 패키지들은 rust가 필요합니다. 설치가 되어 있지 않다면 `$OPENSQL_RUST_BASE` 위치에 rust가 설치됩니다. `$OPENSQL_RUST_BASE`가 설정되어 있지 않다면 `/opt/opensql/rust` 에 설치됩니다. `$OPENSQL_RUST_BASE` 하위에 cargo와 rustup라는 디렉터리가 생성되며 각 디렉터리는 `$CARGO_HOME` , `$RUSTUP_HOME` 의 환경 변수로 지정됩니다. 해당 위치에 cargo, rustup가 설치됩니다.
  * 만약 cargo와 rustup이 설치되었다면 상위 디렉터리를 `$OPENSQL_RUST_BASE` 로 지정 바랍니다.

본 매뉴얼에서는 **3-Node 구성**을 기준으로 각 노드에 설치되는 애플리케이션의 구성 예시를 제공합니다. 각 서버는 클러스터 구성에 필요한 주요 컴포넌트를 포함하며, OpenSQL 3.0의 고가용성 환경을 구성하는 기반이 됩니다.

| Servers | Components                    | IP Address  |
| ------- | ----------------------------- | ----------- |
| node1   | PostgreSQL, OpenHA            | 178.176.0.2 |
| node2   | PostgreSQL, OpenHA, Openproxy | 178.176.0.3 |
| node3   | PostgreSQL, OpenHA, Openproxy | 178.176.0.4 |

{% hint style="info" %}
**참고**

상기 구성은 예시이며, 실제 IP 주소 및 배포구성은 환경에 따라 조정될 수 있습니다.
{% endhint %}

###
