Firebird 3을 최신 Linux 버전(CentOS 8 및 Ubuntu 19)에 설치하기
(C) Basil Sidorov, IBSurgeon, 2020년 5월 22일
이 문서는 새로운 Linux 배포판(CentOS 8 및 Ubuntu 19, 18에서도 작동)에 Firebird 3.0을 빠르게 설치하는 방법에 대해 다룹니다.
첫 번째 섹션은 세부 사항 없이 Firebird 3.0을 최대한 빠르게 설치하기 위한 빠른 설치 가이드입니다. 두 번째 부분에서는 세부 사항을 설명합니다.
CentOS 8 및 Ubuntu 19에 Firebird 3 빠른 설치
- /etc/sysctl.conf 파일에 다음 줄을 추가합니다:
vm.max_map_count = 256000
- sysctl.conf를 저장하고 새 설정을 적용합니다:
sudo sysctl -p /etc/sysctl.conf
다음 지침은 CentOS 8과 Ubuntu 19에서 약간 다릅니다.
FirebirdSQL.org의 최신 Firebird 3.0 릴리스 배포판에 대한 명시적 링크를 사용했습니다. 현재(2020년 5월) 버전은 3.0.5이며, 64비트 버전 링크는 다음과 같습니다:
https://github.com/FirebirdSQL/firebird/releases/download/R3.0.5/Firebird-3.0.5.33220-0.amd64.tar.gz
향후 3.0.6 등이 출시되면 새 릴리스의 올바른 링크를 사용해야 합니다 - www.firebirdsql.org에 게시될 것입니다.
- 패키지 설치
CentOS8
sudo yum -y install epel-release sudo yum -y makecache sudo yum -y install libicu libtommath tar sudo ln -s libncurses.so.6 /usr/lib64/libncurses.so.5 sudo ln -s libtommath.so.1 /usr/lib64/libtommath.so.0
sudo ln -s ln -s libncurses.so.5 /usr/lib64/libncurses.so.5
curl -L https://github.com/FirebirdSQL/firebird/releases/download/R3_0_5/Firebird-3.0.5.33220-0.amd64.tar.gz|tar -zxC /tmp
Ubuntu 19
sudo apt-get -y install libncurses5 libtommath1 sudo ln -s libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0 wget -O- https://github.com/FirebirdSQL/firebird/releases/download/R3_0_5/Firebird-3.0.5.33220-0.amd64.tar.gz|tar -zxC /tmp
결과적으로 /tmp/firebird에 모든 Firebird 설치 파일이 준비됩니다:
/tmp/Firebird-3.0.5.33220-0.amd64# ll
total 8484
drwxr-xr-x 2 root root 4096 Jan 9 13:13 ./
drwxrwxrwt 28 root root 4096 May 22 17:20 ../
-rw-r--r-- 1 root root 8615663 Jan 9 13:13 buildroot.tar.gz
-rwxr-xr-x 1 root root 44096 Jan 9 13:13 install.sh*
-rw-r--r-- 1 root root 14967 Jan 9 13:13 manifest.txt
- 그런 다음 Firebird를 설치합니다:
cd /tmp/Firebird-3.0.5.33220-0.amd64 sudo ./install.sh
그런 다음 Firebird가 실행 중인지 확인합니다 - 아래 명령은 Firebird와 관련된 모든 프로세스 또는 firebird 사용자로 실행 중인 프로세스를 표시합니다:
ps aux | grep firebird
Firebird 3.0만 설치하면 되는 경우에는 이것으로 끝입니다.
위 명령이 무엇을 의미하는지 알고 싶다면 계속 읽어보세요!
주요 부분: Linux에 Firebird 3 설치 세부 사항
이 문서에서는 운영 체제가 최소 버전으로 설치되었고 공개 리포지토리 또는 해당 로컬 복사본에 이미 액세스할 수 있다고 가정합니다.
공간 할당 계획
Firebird 데이터베이스를 서비스할 서버에서는 임시 파일(/tmp), 데이터베이스 파일 및 로컬 백업을 위한 별도 볼륨을 할당하는 것이 좋습니다.
임시 파일용 볼륨
Firebird 임시 파일에는 잠금 파일, 정렬 파일, 전역 임시 테이블(GTT) 및 모니터링 테이블을 “구체화"하는 파일이 포함됩니다. 정렬 파일과 GTT 파일은 /tmp에 있고, mon$- 및 잠금 파일은 /tmp/firebird에 있습니다.
정렬 파일은 생성 직후 연결이 해제되므로 ls 명령으로 폴더에서 볼 수 없습니다(Windows와 달리).
이러한 파일을 보려면 Firebird 프로세스의 파일 핸들을 요청해야 합니다(삭제된 것으로 표시됨):
sudo ls -lhF /proc/`pgrep firebird`/fd
특정 정렬 파일에 대한 세부 정보를 얻으려면 다음 명령을 실행합니다:
sudo stat -L /proc/`pgrep firebird`/fd/NUMBER
여기서 NUMBER는 파일의 파일 설명자입니다.
임시 파일은 클 수 있으므로 /tmp에 20-30GB를 할당하는 것이 좋습니다.
정렬 크기는 데이터베이스 크기에 의존하지 않습니다. 직접 곱이 포함된 일부 잘못된 쿼리는 3MB 데이터베이스에서 100GB 정렬 파일을 쉽게 생성할 수 있습니다.
데이터베이스 파일용 볼륨
데이터베이스 파일용 볼륨은 모든 데이터베이스 파일을 저장할 수 있을 만큼 충분히 커야 하며, 가능한 제자리 조작을 위해 가장 큰 데이터베이스 크기 이상이 필요합니다.
또한 데이터베이스는 시간이 지남에 따라 증가하므로 여유 공간도 확보해야 합니다.
데이터베이스 파일용 볼륨은 가장 빠른 드라이브/SAN/하드웨어에 배치하고 임의 IO 성능이 가장 높은 곳에 두는 것이 좋습니다.
로컬 백업 파일용 볼륨
로컬 백업 파일용 볼륨은 모든 데이터베이스의 백업을 저장할 수 있을 만큼 충분히 커야 하며, 가장 큰 데이터베이스 파일 크기(백업이 아닌 - 테스트 복원용)도 포함해야 합니다. 물론 데이터베이스 백업의 증가도 고려해야 합니다. 로컬 백업 파일용 볼륨은 비교적 느린 드라이브에 배치할 수 있습니다. Firebird 백업 파일은 선형 구조를 가지므로 백업 드라이브에는 높은 순차 속도만 있으면 충분합니다.
준비
Firebird 엔진은 메모리를 동적으로 할당하고 해제하므로 메모리 단편화가 발생할 수 있습니다.
예를 들어, Firebird SuperServer 인스턴스에서 많은 사용자가 연결을 끊은 후에 발생할 수 있습니다. 메모리 단편화는 기본값이 65K인 시스템 매개변수 vm.max_map_count에 의해 제어됩니다. 최소 4배 이상 늘리고 이 설정을 영구적으로 만드는 것이 좋습니다.
/etc/sysctl.conf에 다음 줄을 추가합니다:
vm.max_map_count = 256000
그리고 적용합니다:
sudo sysctl -p /etc/sysctl.conf
필요한 패키지 설치
Firebird 3은 여러 Linux 패키지에 의존합니다: ncurses, ICU, tommath. 또한 유틸리티 gzip, tar, curl 또는 wget이 필요합니다.
CentOS 8
CentOS는 yum에 의해 투명하게 호출되는 새 패키지 관리자 dnf를 사용합니다. 우리는 yum을 선호하므로 yum을 사용하겠습니다. 먼저 메타데이터 캐시를 갱신합니다:
sudo yum makecache
libtommath 패키지는 별도의 EPEL(E(xtra)P(ackages for)E(nterprise)L(inux)) 리포지토리에 있으므로 활성화되어 있는지 확인해야 합니다:
yum -C repolist
-C(–cache-only) 옵션은 yum이 캐시만 사용하도록 합니다.
yum -C repolist 결과에 epel-리포지토리가 보이지 않으면 설치합니다:
sudo yum install epel-release && sudo yum makecache
문제가 있는 경우 /etc/yum.repos.d/epel.repo 파일을 편집하고 **https://**를 **http://**로 바꾼 다음 yum makecache를 다시 시도하세요.
그런 다음 필요한 모든 패키지가 있는지 확인합니다(예제에서는 64비트):
yum -C list ncurses libicu libtommath gzip tar curl wget | grep -v i686
Installed Packages
curl.x86_64 7.61.1-11.el8 @anaconda
gzip.x86_64 1.9-9.el8 @anaconda
ncurses.x86_64 6.1-7.20180224.el8 @anaconda
Available Packages
libicu.x86_64 60.3-1.el8 BaseOS
libtommath.x86_64 1.1.0-1.el8 epel
tar.x86_64 2:1.30-4.el8 BaseOS
wget.x86_64 1.19.5-8.el8_1.1 AppStream
CentOS 8에서 누락된 패키지 설치:
sudo yum install libicu libtommath tar
Ubuntu 19
apt list libncurses? libicu?? libtommath? gzip tar curl wget | grep -v i386
curl 7.65.3-1
gzip 1.10-0 [upgradable…]
libicu63 63.2-2 [installed]
libncurses5 6.1
libncurses6 6.1 [installed,automatic]
libtommath1 1.1.0
tar 1.30 [installed]
wget 1.20.3 [installed]
Ubuntu 19에서 누락된 패키지 설치:
sudo apt‑get install libncurses5 libtommath1
심볼릭 링크 생성
Libtommath.so.1 및 libncurses.so.6은 libtommath.so.0 및 libncurses.so.5와 호환되므로 Firebird가 기존 라이브러리 버전에 대한 심볼릭 링크를 생성하는 것으로 충분합니다.
먼저 libtommath.so.1을 찾습니다(libncurses.so.?는 같은 폴더에 있습니다):
find /usr -name libtommath.so.1
CentOS8에서는 다음 위치에 있습니다:
/usr/lib64/libtommath.so.1
Ubuntu 19에서는:
/usr/lib/x86_64-linux-gnu/libtommath.so.1
심볼릭 링크를 생성합니다:
CentOS8
sudo ln -s libtommath.so.1 /usr/lib64/libtommath.so.0 sudo ln -s libncurses.so.6 /usr/lib64/libncurses.so.5
Ubuntu 19
sudo ln -s libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0
결과를 확인하려면:
ls -lhF $(dirname `find /usr -name libtommath.so.1`) | grep "lib\(ncurses\|tommath\)\.so\."
CentOS8에서는 다음과 같이 출력됩니다:
libncurses.so.5 -> libncurses.so.6*
libncurses.so.6 -> libncurses.so.6.1*
libncurses.so.6.1*
libtommath.so.0 -> libtommath.so.1*
libtommath.so.1 -> libtommath.so.1.1.0*
libtommath.so.1.1.0*
Ubuntu에서는 다음과 같이 출력됩니다:
libncurses.so.5 -> libncurses.so.5.9
libncurses.so.5.9
libncurses.so.6 -> libncurses.so.6.1
libncurses.so.6.1
libtommath.so.0 -> libtommath.so.1
libtommath.so.1 -> libtommath.so.1.1.0
libtommath.so.1.1.0
Firebird 3.0 릴리스 배포판 받기
Firebird Linux 릴리스는 www.firebirdsql.org에서 tar.gz 아카이브로 제공됩니다. URL이 Firebird 릴리스 tar.gz 아카이브의 다운로드 링크라고 가정해 보겠습니다. 아카이브를 다운로드하고 압축을 풀어야 하며, 이를 위해 curl이나 wget을 사용할 수 있습니다.
curl
curl -L URL | tar -zxC /tmp
wget
wget -O- URL | tar -zxC /tmp
결과적으로 /tmp/Firebird‑3.0.5.33220‑0.amd64 폴더에 install.sh, buildroot.tar.gz, manifest.txt의 3개 파일이 생성됩니다.
Firebird 설치
전제 조건으로 vm.max_map_count를 설정하고, ICU, ncurses 및 tommath를 확인하고 설치했으며, 심볼릭 링크를 생성했습니다.
그 후 마지막 단계는 간단합니다 - 실행하세요:
sudo ./install.sh
이 스크립트는 system-unit firebird-superserver를 시작하며 Firebird를 사용할 준비가 완료됩니다.
구성 파일 및 최적화
기본 Firebird 구성 파일인 firebird.conf는 매우 기본적인 방식으로 구성되어 있습니다. 다음 명령으로 firebird.conf의 내용(주석 처리되지 않은 줄)을 확인할 수 있습니다:
grep -v ^# firebird.conf | grep -v ^$
기본 firebird.conf의 경우 위 명령은 아무것도 반환하지 않으며, 이는 모든 값이 기본값임을 의미합니다.
프로덕션 시스템을 구성하는 경우 최적화된 Firebird 구성 파일을 고려하세요: /ko/optimized-firebird-configuration/
자주 묻는 질문 #1
자주 묻는 질문은 “왜 단순히 저장소를 사용하여 yum이나 apt로 Firebird를 설치하지 않는가?“입니다. 물론 가능하지만, 두 가지 큰 이유가 있습니다:
-
저장소에 이전 버전(예: 이전 마이너 릴리스)이 포함될 수 있고,
-
모든 것이 올바르게 설치되고 구성되었는지 확인하기 위해 환경을 제어하고 싶습니다.
또한 /opt에 설치하는 것을 선호합니다. 크로스 플랫폼 스크립트에 더 쉽고 좋은 관리 관행이기 때문입니다.
연락처
질문, 제안 및 가능한 오류는 [email protected]으로 자유롭게 보내주세요.