InfoGrab DocsInfoGrab Docs

Mattermost PostgreSQL 데이터베이스 설정

요약

Mattermost 서버 설치에는 PostgreSQL v15+가 필요합니다. PostgreSQL은 Mattermost와 같은 호스트, 별도 서버, 또는 Amazon RDS나 Azure Database for PostgreSQL 같은 관리형 서비스에서 실행할 수 있습니다.

Mattermost 서버 설치에는 PostgreSQL v15+가 필요합니다. 설치 프로그램이 연결할 대상이 있도록 Mattermost Server를 설치하기 전에 데이터베이스, 사용자, 권한을 생성하세요.

PostgreSQL은 Mattermost와 같은 호스트, 별도 서버, 또는 Amazon RDS나 Azure Database for PostgreSQL 같은 관리형 서비스에서 실행할 수 있습니다. 지원되는 버전과 최소 버전 정책은 데이터베이스 소프트웨어 문서를 참조하세요.

Note

MySQL 데이터베이스 지원은 Mattermost v11부터 더 이상 사용되지 않습니다. MySQL에서 PostgreSQL로 마이그레이션하는 방법은 PostgreSQL 마이그레이션 문서를 참조하세요.

데이터베이스 및 사용자 생성#

  1. PostgreSQL 서버 인스턴스를 생성합니다. 자세한 내용은 PostgreSQL 문서를 참조하세요. 설치가 완료되면 PostgreSQL 서버가 실행 중이며, postgres라는 Linux 사용자 계정이 생성되어 있습니다.

  2. Mattermost 데이터베이스와 사용자를 생성합니다.

    1. 다음을 실행하여 PostgreSQL에 접속합니다.

      sudo -u postgres psql
      
    2. 데이터베이스를 생성합니다.

      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을 사용하여 로케일을 생성해야 합니다.

    1. 안전한 비밀번호로 Mattermost 사용자를 생성합니다.

      CREATE USER mmuser WITH PASSWORD 'mmuser-password';
      
    2. 사용자에게 데이터베이스 접근 권한을 부여합니다.

      GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
      
    3. 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와 다른 호스트에서 실행되는 경우에만 이 섹션을 완료하세요. 애플리케이션 호스트에 로컬로 있는 데이터베이스에는 추가 구성이 필요하지 않습니다.

  1. postgresql.conf를 편집하여 원격 연결을 허용합니다.

/etc/postgresql/{version}/main/postgresql.conf를 편집합니다.

``` text
listen_addresses = '*'
```

/var/lib/pgsql/{version}/data/postgresql.conf를 편집합니다.

``` text
listen_addresses = '*'
```
  1. pg_hba.conf를 편집하여 클라이언트 인증을 구성합니다.

    다음 줄을 추가하고 {mattermost-server-IP}를 바꾸세요.

    host all all {mattermost-server-IP}/32 md5
    

    데이터베이스가 애플리케이션 계층의 연결만 수락하도록, 더 넓은 범위가 아니라 Mattermost 서버의 주소로 소스를 제한하세요.

  2. PostgreSQL 서비스를 다시 시작하여 구성 변경 사항을 적용합니다.

    sudo systemctl restart postgresql
    
Important

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, 또는 컨테이너.

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 같은 관리형 서비스에서 실행할 수 있습니다. 지원되는 버전과 최소 버전 정책은 데이터베이스 소프트웨어 문서를 참조하세요.

Note

MySQL 데이터베이스 지원은 Mattermost v11부터 더 이상 사용되지 않습니다. MySQL에서 PostgreSQL로 마이그레이션하는 방법은 PostgreSQL 마이그레이션 문서를 참조하세요.

데이터베이스 및 사용자 생성#

  1. PostgreSQL 서버 인스턴스를 생성합니다. 자세한 내용은 PostgreSQL 문서를 참조하세요. 설치가 완료되면 PostgreSQL 서버가 실행 중이며, postgres라는 Linux 사용자 계정이 생성되어 있습니다.

  2. Mattermost 데이터베이스와 사용자를 생성합니다.

    1. 다음을 실행하여 PostgreSQL에 접속합니다.

      sudo -u postgres psql
      
    2. 데이터베이스를 생성합니다.

      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을 사용하여 로케일을 생성해야 합니다.

    1. 안전한 비밀번호로 Mattermost 사용자를 생성합니다.

      CREATE USER mmuser WITH PASSWORD 'mmuser-password';
      
    2. 사용자에게 데이터베이스 접근 권한을 부여합니다.

      GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
      
    3. 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와 다른 호스트에서 실행되는 경우에만 이 섹션을 완료하세요. 애플리케이션 호스트에 로컬로 있는 데이터베이스에는 추가 구성이 필요하지 않습니다.

  1. postgresql.conf를 편집하여 원격 연결을 허용합니다.

/etc/postgresql/{version}/main/postgresql.conf를 편집합니다.

``` text
listen_addresses = '*'
```

/var/lib/pgsql/{version}/data/postgresql.conf를 편집합니다.

``` text
listen_addresses = '*'
```
  1. pg_hba.conf를 편집하여 클라이언트 인증을 구성합니다.

    다음 줄을 추가하고 {mattermost-server-IP}를 바꾸세요.

    host all all {mattermost-server-IP}/32 md5
    

    데이터베이스가 애플리케이션 계층의 연결만 수락하도록, 더 넓은 범위가 아니라 Mattermost 서버의 주소로 소스를 제한하세요.

  2. PostgreSQL 서비스를 다시 시작하여 구성 변경 사항을 적용합니다.

    sudo systemctl restart postgresql
    
Important

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, 또는 컨테이너.