Mattermost PostgreSQL 데이터베이스 설정
Mattermost v12.0요약
Mattermost 서버 설치에는 PostgreSQL v15+가 필요합니다. PostgreSQL은 Mattermost와 같은 호스트, 별도 서버, 또는 Amazon RDS나 Azure Database for PostgreSQL 같은 관리형 서비스에서 실행할 수 있습니다.
Mattermost 서버 설치에는 PostgreSQL v15+가 필요합니다. 설치 프로그램이 연결할 대상이 있도록 Mattermost Server를 설치하기 전에 데이터베이스, 사용자, 권한을 생성하세요.
PostgreSQL은 Mattermost와 같은 호스트, 별도 서버, 또는 Amazon RDS나 Azure Database for PostgreSQL 같은 관리형 서비스에서 실행할 수 있습니다. 지원되는 버전과 최소 버전 정책은 데이터베이스 소프트웨어 문서를 참조하세요.
MySQL 데이터베이스 지원은 Mattermost v11부터 더 이상 사용되지 않습니다. MySQL에서 PostgreSQL로 마이그레이션하는 방법은 PostgreSQL 마이그레이션 문서를 참조하세요.
데이터베이스 및 사용자 생성#
-
PostgreSQL 서버 인스턴스를 생성합니다. 자세한 내용은 PostgreSQL 문서를 참조하세요. 설치가 완료되면 PostgreSQL 서버가 실행 중이며, postgres라는 Linux 사용자 계정이 생성되어 있습니다.
-
Mattermost 데이터베이스와 사용자를 생성합니다.
-
다음을 실행하여 PostgreSQL에 접속합니다.
sudo -u postgres psql -
데이터베이스를 생성합니다.
CREATE DATABASE mattermost WITH ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0;
이 단계에서
invalid LC_COLLATE locale name: "en_US.UTF-8"같은 오류 메시지와 함께 실패하면, 먼저locale-gen en_US.UTF-8을 사용하여 로케일을 생성해야 합니다.-
안전한 비밀번호로 Mattermost 사용자를 생성합니다.
CREATE USER mmuser WITH PASSWORD 'mmuser-password'; -
사용자에게 데이터베이스 접근 권한을 부여합니다.
GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser; -
PostgreSQL v15.x 이상을 사용하는 경우 추가 권한 부여가 필요합니다.
ALTER DATABASE mattermost OWNER TO mmuser; -- Connect to the mattermost database so the schema grants below apply to the right schema \c mattermost ALTER SCHEMA public OWNER TO mmuser; GRANT USAGE, CREATE ON SCHEMA public TO mmuser;
-
원격 연결 허용#
데이터베이스가 Mattermost Server와 다른 호스트에서 실행되는 경우에만 이 섹션을 완료하세요. 애플리케이션 호스트에 로컬로 있는 데이터베이스에는 추가 구성이 필요하지 않습니다.
postgresql.conf를 편집하여 원격 연결을 허용합니다.
/etc/postgresql/{version}/main/postgresql.conf를 편집합니다.
``` text
listen_addresses = '*'
```
/var/lib/pgsql/{version}/data/postgresql.conf를 편집합니다.
``` text
listen_addresses = '*'
```
-
pg_hba.conf를 편집하여 클라이언트 인증을 구성합니다.다음 줄을 추가하고
{mattermost-server-IP}를 바꾸세요.host all all {mattermost-server-IP}/32 md5데이터베이스가 애플리케이션 계층의 연결만 수락하도록, 더 넓은 범위가 아니라 Mattermost 서버의 주소로 소스를 제한하세요.
-
PostgreSQL 서비스를 다시 시작하여 구성 변경 사항을 적용합니다.
sudo systemctl restart postgresql
PostgreSQL의 메이저 버전을 업그레이드하는 경우 전체 업그레이드 절차와 업그레이드 후 단계는 PostgreSQL 업그레이드를 참조하세요.
문제 해결#
Mattermost가 새로 설치한 PostgreSQL v15를 사용할 수 없음#
PostgreSQL v15에는 이전 릴리즈와의 호환성에 영향을 줄 수 있는 변경 사항이 도입되었습니다. PostgreSQL v15를 새로 설치했는데 Mattermost가 스키마를 생성하지 못한다면, 다음 명령을 실행하여 Mattermost를 사용할 수 있도록 하세요.
GRANT CREATE ON SCHEMA public TO PUBLIC;
비영어 default_text_search_config에서 전체 텍스트 검색이 인덱스를 사용하지 않음#
Mattermost는 하드코딩된 텍스트 검색 구성 대신 PostgreSQL 데이터베이스에서 전체 텍스트 검색을 위해 default_text_search_config를 사용합니다. 그러나 인덱스는 여전히 하드코딩된 텍스트 검색 구성(영어)으로 생성되며, 그 결과 전체 텍스트 검색이 인덱스를 사용하지 못할 수 있습니다.
Posts 또는 Users와 같은 Mattermost의 일부 테이블에는 PostgreSQL에서 데이터베이스 전체 텍스트 검색 기능을 향상시키기 위한 GIN 인덱스가 포함되어 있습니다.
이 인덱스는 특정 언어에 대해 구축되어야 하며, 생성 시 영어로 하드코딩됩니다. 전체 텍스트 검색 쿼리는 항상 default_text_search_config 데이터베이스 설정을 사용하여 수행됩니다. 전체 텍스트 검색 기능이 인덱스를 활용하려면 쿼리에 지정된 언어가 인덱스에 지정된 언어와 일치해야 합니다.
default_text_search_config가 english로 설정되어 있지 않으면 GIN 인덱스가 사용되지 않습니다. 데이터베이스 관리자는 관심 있는 특정 GIN 인덱스를 삭제하고 default_text_search_config 값으로 재구축하여 이 문제를 해결할 수 있습니다.
예를 들어, 서버의 기본 언어가 스페인어인 경우:
-- Create the new index with a new name before dropping the old one
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_posts_message_txt_spanish ON posts USING gin(to_tsvector('spanish', message));
-- Check that the new index does work. If it does, drop the old one and rename the new one:
DROP INDEX CONCURRENTLY IF EXISTS idx_posts_message_txt;
ALTER INDEX idx_posts_message_txt_spanish RENAME TO idx_posts_message_txt;
PostgreSQL 사용자 이름 및 비밀번호 변경#
.env 파일에서 PostgreSQL 사용자 이름과 비밀번호를 변경하는 것을 권장합니다.
다음 단계#
데이터베이스가 준비되면 나머지 준비 체크리스트를 계속 진행하거나, 설치 방법으로 바로 이동하세요: Kubernetes, Linux, 또는 컨테이너.