19.2. 범퍼카 토토 클러스터 생성

무슨 일을 하기 전에 디스크의 범퍼카 토토 저장 영역을 초기화해야 합니다. 우리는 이것을 a라고 부릅니다.범퍼카 토토 클러스터. (그SQL표준에서는 카탈로그 클러스터라는 용어를 사용합니다.) 범퍼카 토토 클러스터는 실행 중인 데이터베이스 서버의 단일 인스턴스에서 관리되는 데이터베이스 모음입니다. 초기화 후 범퍼카 토토 클러스터에는 다음과 같은 데이터베이스가 포함됩니다.포스트그레은 유틸리티, 사용자 및 타사 애플리케이션에서 사용하기 위한 기본 데이터베이스로 사용됩니다. 데이터베이스 서버 자체에는 다음이 필요하지 않습니다.포스트그레스범퍼카 토토가 존재하지만 많은 외부 유틸리티 프로그램에서는 범퍼카 토토가 존재한다고 가정합니다. 초기화 중에 각 클러스터 내에 두 개의 범퍼카 토토가 더 생성됩니다.템플릿1그리고템플릿0. 이름에서 알 수 있듯이 이는 이후에 생성되는 범퍼카 토토의 템플릿으로 사용됩니다. 실제 작업에 사용해서는 안 됩니다. (참조장 23클러스터 내에서 새 데이터베이스 생성에 대한 정보.)

파일 시스템 측면에서 범퍼카 토토 클러스터는 모든 데이터가 저장되는 단일 디렉토리입니다. 우리는 이것을데이터 디렉토리또는데이터 영역. 데이터를 저장할 위치를 선택하는 것은 전적으로 귀하에게 달려 있습니다. 기본값은 없지만 다음과 같은 위치는/usr/local/pgsql/data또는/var/lib/pgsql/data인기있습니다. 데이터 디렉토리는 사용하기 전에 프로그램을 사용하여 초기화되어야 합니다.initdb다음으로 설치됨포스트그레SQL.

다음의 사전 패키지 버전을 사용하는 경우PostgreSQL, 데이터 디렉토리를 배치할 위치에 대한 특정 규칙이 있을 수 있으며 데이터 디렉토리를 생성하기 위한 스크립트를 제공할 수도 있습니다. 이 경우 실행보다 해당 스크립트를 사용해야 합니다.initdb직접. 자세한 내용은 패키지 수준 문서를 참조하세요.

범퍼카 토토 클러스터를 수동으로 초기화하려면 다음을 실행하십시오.initdb그리고 다음을 사용하여 범퍼카 토토 클러스터의 원하는 파일 시스템 위치를 지정합니다.-D옵션, 예:

$ initdb -D /usr/local/pgsql/data

로그인된 동안 이 명령을 실행해야 한다는 점에 유의하십시오.PostgreSQL이전 섹션에서 설명한 사용자 계정입니다.

대안으로-D옵션, 환경 변수를 설정할 수 있습니다PGDATA.

또는 다음을 실행할 수도 있습니다.initdb경유pg_ctl프로그램그렇습니다:

$ pg_ctl -D /usr/local/pgsql/data initdb

이것은 다음을 사용하는 경우 더 직관적일 수 있습니다.pg_ctl서버 시작 및 중지용(참조PostgreSQL : 문서 : 15 : 19.3. 데이터베이스 범퍼카 토토 시작), 그러니까pg_ctl범퍼카 토토 서버 인스턴스를 관리하는 데 사용하는 유일한 명령이 될 것입니다.

initdb아직 존재하지 않는 경우 지정한 디렉토리를 생성하려고 시도합니다. 물론 다음과 같은 경우에는 실패합니다.initdb상위 디렉토리에 쓸 수 있는 권한이 없습니다. 일반적으로 다음을 수행하는 것이 좋습니다.PostgreSQL사용자는 데이터 디렉토리뿐만 아니라 상위 디렉토리도 소유하므로 이는 문제가 되지 않습니다. 원하는 상위 디렉토리도 존재하지 않는 경우 상위 디렉토리에 쓸 수 없으면 루트 권한을 사용하여 먼저 생성해야 합니다. 따라서 프로세스는 다음과 같습니다.

루트#mkdir /usr/local/pgsql루트#chown postgres /usr/local/pgsql루트#su 포스트그레스포스트그레스$initdb -D /usr/local/pgsql/data

initdb데이터 디렉토리가 존재하고 이미 파일이 포함되어 있으면 실행을 거부합니다. 이는 기존 설치를 실수로 덮어쓰는 것을 방지하기 위한 것입니다.

데이터 디렉토리에는 데이터베이스에 저장된 모든 데이터가 포함되어 있으므로 무단 액세스로부터 보호하는 것이 중요합니다.initdb따라서 다음을 제외한 모든 사람의 액세스 권한을 취소합니다.PostgreSQL사용자 및 선택적으로 그룹. 그룹 액세스가 활성화되면 읽기 전용입니다. 이를 통해 클러스터 소유자와 동일한 그룹에 있는 권한 없는 사용자가 클러스터 데이터를 백업하거나 읽기 액세스만 필요한 다른 작업을 수행할 수 있습니다.

기존 클러스터에서 그룹 액세스를 활성화하거나 비활성화하려면 클러스터를 종료하고 다시 시작하기 전에 모든 디렉터리와 파일에 적절한 모드를 설정해야 합니다.PostgreSQL. 그렇지 않으면 데이터 디렉터리에 혼합 모드가 존재할 수 있습니다. 소유자만 액세스를 허용하는 클러스터의 경우 적절한 모드는 다음과 같습니다.0700디렉토리 및0600파일용. 그룹의 읽기도 허용하는 클러스터의 경우 적절한 모드는 다음과 같습니다.0750디렉토리 및0640파일용.

그러나 디렉토리 내용은 안전하지만 기본 클라이언트 인증 설정을 통해 모든 로컬 사용자가 데이터베이스에 연결하고 데이터베이스 수퍼유저가 될 수도 있습니다. 다른 로컬 사용자를 신뢰할 수 없다면 다음 중 하나를 사용하는 것이 좋습니다.initdb's-W, --pwprompt또는--pwfile범퍼카 토토 수퍼유저에게 비밀번호를 할당하는 옵션.또한 지정하십시오-스크램샤-256그래서 기본값신뢰인증 모드가 사용되지 않습니다. 또는 생성된 내용을 수정하세요.pg_hba.conf실행 후 파일initdb하지만이전당신은 처음으로 서버를 시작했습니다. (다른 합리적인 접근 방식에는 다음이 포함됩니다.동료연결을 제한하기 위한 인증 또는 파일 시스템 권한. 참조PostgreSQL : 문서 : 15 : 21 장. 클라이언트 사설 토토자세한 내용은.)

initdb또한 기본 로케일을 초기화합니다범퍼카 토토 클러스터용. 일반적으로 환경의 로케일 설정을 가져와서 초기화된 데이터베이스에 적용합니다. 데이터베이스에 대해 다른 로케일을 지정할 수 있습니다. 이에 대한 자세한 내용은 다음에서 확인할 수 있습니다.PostgreSQL : 문서 : 15 : 24.1. 토토 핫 지원. 특정 범퍼카 토토 클러스터 내에서 사용되는 기본 정렬 순서는 다음과 같이 설정됩니다.initdb, 그리고 다른 정렬 순서를 사용하여 새 데이터베이스를 생성할 수 있지만 initdb가 생성하는 템플릿 데이터베이스에 사용되는 순서는 삭제하고 다시 생성하지 않고는 변경할 수 없습니다. 이외의 로케일을 사용하면 성능에 영향을 미칩니다.C또는POSIX. 따라서 처음에 올바르게 선택하는 것이 중요합니다.

initdb또한 범퍼카 토토 클러스터에 대한 기본 문자 세트 인코딩을 설정합니다. 일반적으로 로케일 설정과 일치하도록 선택해야 합니다. 자세한 내용은 참조PostgreSQL : 문서 : 15 : 24.3. 캐릭터 젠 토토 지원.

비-C및 비-POSIX로케일은 문자 집합 순서를 위해 운영 체제의 대조 라이브러리를 사용합니다. 이는 인덱스에 저장된 키의 순서를 제어합니다. 이러한 이유로 클러스터는 스냅샷 복원, 바이너리 스트리밍 복제, 다른 운영 체제 또는 운영 체제 업그레이드를 통해 호환되지 않는 데이터 정렬 라이브러리 버전으로 전환할 수 없습니다.

19.2.1. 보조 파일 시스템 사용

많은 설치에서는 시스템이 아닌 파일 시스템(볼륨)에 범퍼카 토토 클러스터를 생성합니다.루트볼륨. 이렇게 하기로 선택한 경우 보조 볼륨의 최상위 디렉터리(마운트 지점)를 데이터 디렉터리로 사용하는 것은 바람직하지 않습니다. 모범 사례는 다음이 소유한 마운트 지점 디렉터리 내에 디렉터리를 생성하는 것입니다.포스트그레SQL사용자, 그 안에 데이터 디렉토리를 생성하세요. 이는 특히 다음과 같은 작업의 경우 권한 문제를 방지합니다.pg_upgrade또한 보조 볼륨이 오프라인이 되는 경우 완전한 실패를 보장합니다.

19.2.2. 파일 시스템

일반적으로 POSIX 의미를 갖는 모든 파일 시스템은 PostgreSQL에 사용될 수 있습니다. 사용자는 공급업체 지원, 성능, 친숙함 등 다양한 이유로 다양한 파일 시스템을 선호합니다. 경험에 따르면 다른 모든 조건이 동일하다면 단순히 파일 시스템을 전환하거나 사소한 파일 시스템 구성을 변경하는 것만으로는 주요 성능이나 동작 변경을 기대해서는 안 됩니다.

19.2.2.1. NFS

다음을 사용할 수 있습니다.NFS저장용 파일 시스템포스트그레SQL데이터 디렉토리.PostgreSQL특별히 아무것도 하지 않습니다NFS파일 시스템, 가정한다는 의미NFS로컬로 연결된 드라이브와 똑같이 작동합니다.PostgreSQL비표준 동작이 있는 것으로 알려진 기능을 사용하지 않습니다.NFS, 예: 파일 잠금.

사용에 대한 유일한 확고한 요구 사항NFS함께PostgreSQL파일 시스템이 다음을 사용하여 마운트되었다는 것입니다.하드옵션.하드옵션, 프로세스는 가능멈춤네트워크 문제가 있는 경우 무기한이므로 이 구성에는 주의 깊은 모니터링 설정이 필요합니다.소프트옵션은 네트워크 문제가 있는 경우 시스템 호출을 중단하지만PostgreSQL이런 방식으로 중단된 시스템 호출을 반복하지 않으므로 이러한 중단으로 인해 I/O 오류가 보고됩니다.

다음을 사용할 필요는 없습니다.동기화마운트 옵션. 의 행동비동기옵션이면 충분합니다. 왜냐하면PostgreSQL문제fsync적절한 시간에 호출하여 쓰기 캐시를 플러시합니다. (이는 로컬 파일 시스템에서 작동하는 방식과 유사합니다.) 그러나 다음을 사용하는 것이 좋습니다.동기화NFS의 내보내기 옵션서버존재하는 시스템(주로 Linux). 그렇지 않으면,fsync또는 NFS 클라이언트의 이에 상응하는 항목은 실제로 서버의 영구 저장소에 도달한다는 보장이 없으므로 매개변수를 사용하여 실행하는 것과 유사한 손상을 일으킬 수 있습니다.fsync꺼짐. 이러한 마운트 및 내보내기 옵션의 기본값은 공급업체와 버전에 따라 다르므로 모호함을 피하기 위해 어떤 경우에도 명시적으로 확인하고 지정하는 것이 좋습니다.

어떤 경우에는 NFS 또는 iSCSI와 같은 하위 수준 프로토콜을 통해 외부 저장소 제품에 액세스할 수 있습니다. 후자의 경우 스토리지는 블록 장치로 나타나며 여기에 사용 가능한 파일 시스템을 생성할 수 있습니다. 이러한 접근 방식을 사용하면 DBA가 NFS의 일부 특이성을 처리해야 하는 부담을 덜 수 있지만 물론 원격 스토리지 관리의 복잡성은 다른 수준에서 발생합니다.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.