| 젠 토토 : 문서 : 9.6 : 젠 토토 | |||
|---|---|---|---|
| 사설 토토 사이트 : 문서 : 9.6 : 신뢰성 및 쓰기 로그 | 사설 토토 사이트 : 문서 : 9.6 : 신뢰성 및 쓰기 로그 | 30장. 젠 토토성 및 미리 쓰기 로그 | PostgreSQL : 문서 : 9.6 : 쓰기 호위 (토토 베이) |
젠 토토성은 심각한 데이터베이스 시스템의 중요한 속성이며포스트그레SQL95PostgreSQL: 문서: 9.6: 신뢰성79
주기적으로 데이터를 디스크 플래터에 강제로 저장하는 것은 간단한 작업처럼 보일 수 있지만 그렇지 않습니다. 디스크 드라이브는 메인 메모리나 CPU보다 훨씬 느리기 때문에 컴퓨터의 메인 메모리와 디스크 플래터 사이에 여러 레이어의 캐싱이 존재합니다. 첫째, 자주 요청되는 디스크 블록을 캐시하고 디스크 젠 토토를 결합하는 운영 체제의 버퍼 캐시가 있습니다. 다행히 모든 운영 체제는 애플리케이션에 버퍼 캐시에서 디스크로 젠 토토를 강제하는 방법을 제공합니다.PostgreSQL해당 기능을 사용합니다. (참조wal_sync_method이 작업 수행 방법을 조정하는 매개변수입니다.)
다음으로 디스크 드라이브 컨트롤러에 캐시가 있을 수 있습니다. 이것은 특히 일반적입니다.RAID컨트롤러 카드. 이러한 캐시 중 일부는 다음과 같습니다.연속 젠 토토, 젠 토토가 도착하자마자 드라이브로 전송됨을 의미합니다. 다른 것들은다시 젠 토토, 데이터가 나중에 드라이브로 전송된다는 의미입니다. 디스크 컨트롤러 캐시의 메모리는 휘발성이고 정전 시 해당 내용이 손실되므로 이러한 캐시는 젠 토토성에 위험할 수 있습니다. 더 나은 컨트롤러 카드가 있습니다.배터리 백업 장치 (BBUs), 이는 카드에 시스템 전원 손실 시 캐시 전원을 유지하는 배터리가 있음을 의미합니다. 전원이 복원되면 데이터가 디스크 드라이브에 기록됩니다.
그리고 마지막으로 대부분의 디스크 드라이브에는 캐시가 있습니다. 일부는 연속 젠 토토이고 일부는 후기입이며 디스크 컨트롤러 캐시와 마찬가지로 후기입 드라이브 캐시에도 데이터 손실에 대한 동일한 우려가 있습니다. 소비자급 IDE 및 SATA 드라이브에는 정전 시에도 지속되지 않는 후기입 캐시가 있을 가능성이 특히 높습니다. 많은 솔리드 스테이트 드라이브(SSD)에도 휘발성 후기입 캐시가 있습니다.
이러한 캐시는 일반적으로 비활성화될 수 있습니다. 그러나 이를 수행하는 방법은 운영 체제 및 드라이브 유형에 따라 다릅니다.
켜짐리눅스, IDE 및 SATA 드라이브는 다음을 사용하여 쿼리할 수 있습니다.hdparm -I; 다음과 같은 경우 쓰기 캐싱이 활성화됩니다.*옆에젠 토토 캐시. hdparm -W 0쓰기 캐싱을 끄는 데 사용할 수 있습니다. SCSI 드라이브는 다음을 사용하여 쿼리할 수 있습니다.sdparm. 사용sdparm --get=WCE젠 토토 캐시가 활성화되어 있는지 확인하고sdparm --clear=WCE비활성화합니다.
켜짐FreeBSD, IDE 드라이브는 다음을 사용하여 쿼리할 수 있습니다.atacontrol다음을 사용하여 쓰기 캐싱을 끕니다.hw.ata.wc=0in/boot/loader.conf; SCSI 드라이브는 다음을 사용하여 쿼리할 수 있습니다.캠 제어 식별및 젠 토토 캐시는 모두 다음을 사용하여 쿼리하고 변경했습니다.sdparm가능한 경우.
켜기솔라리스, 디스크 젠 토토 캐시는에 의해 제어됩니다.형식 -e. (솔라리스ZFS파일 시스템은 자체 디스크 캐시 플러시 명령을 실행하므로 디스크 젠 토토 캐시가 활성화되어 있으면 안전합니다.)
켜짐윈도우, 만약wal_sync_methodisopen_datasync(기본값), 선택을 취소하면 젠 토토 캐싱을 비활성화할 수 있습니다.내 컴퓨터\열기\디스크 드라이브\Properties\Hardware\Properties\Policies\디스크에 젠 토토 캐싱 활성화. 또는 설정하십시오.wal_sync_method에fsync또는fsync_writethrough, 젠 토토 캐싱을 방지합니다.
켜짐OS X, 설정으로 젠 토토 캐싱을 방지할 수 있습니다.wal_sync_method에fsync_writethrough.
최근 SATA 드라이브(다음 항목ATAPI-6이상) 드라이브 캐시 플러시 명령 제공(플러시 캐시 확장), SCSI 드라이브는 오랫동안 유사한 명령을 지원해 왔습니다.캐시 동기화. 이 명령은 직접 액세스할 수 없습니다.PostgreSQL, 그러나 일부 파일 시스템(예:ZFS, ext4)는 이를 사용하여 다시 젠 토토 지원 드라이브의 플래터에 데이터를 플러시할 수 있습니다. 불행하게도 이러한 파일 시스템은 배터리 백업 장치와 결합될 때 최적으로 작동하지 않습니다(BBU) 디스크 컨트롤러. 이러한 설정에서 동기화 명령은 컨트롤러 캐시의 모든 데이터를 디스크로 강제 실행하여 BBU의 이점을 상당 부분 제거합니다. 다음을 실행할 수 있습니다.pg_test_fsync프로그램을 통해 영향을 받는지 확인하세요. 영향을 받은 경우 파일 시스템에서 쓰기 장벽을 끄거나 디스크 컨트롤러를 재구성(옵션인 경우)하여 BBU의 성능 이점을 다시 얻을 수 있습니다. 쓰기 장벽이 꺼진 경우 배터리가 계속 작동하는지 확인하세요. 결함이 있는 배터리는 잠재적으로 데이터 손실로 이어질 수 있습니다. 파일 시스템 및 디스크 컨트롤러 설계자가 결국 이 차선의 동작을 해결할 수 있기를 바랍니다.
운영 체제가 저장 하드웨어에 쓰기 요청을 보낼 때 데이터가 실제로 비휘발성 저장 영역에 도착했는지 확인하기 위해 할 수 있는 일은 거의 없습니다. 오히려 모든 저장소 구성 요소가 데이터와 파일 시스템 메타데이터 모두에 대한 무결성을 보장하는지 확인하는 것은 관리자의 책임입니다. 배터리로 지원되지 않는 젠 토토 캐시가 있는 디스크 컨트롤러는 사용하지 마세요. 드라이브 수준에서 드라이브가 종료되기 전에 데이터가 기록된다는 것을 보장할 수 없는 경우 후기입 캐싱을 비활성화합니다. SSD를 사용하는 경우 이들 중 상당수가 기본적으로 캐시 플러시 명령을 따르지 않는다는 점에 유의하세요. 다음을 사용하여 안정적인 I/O 하위 시스템 동작을 테스트할 수 있습니다.diskchecker.pl.
디스크 플래터 쓰기 작업 자체로 인해 데이터 손실의 또 다른 위험이 발생합니다. 디스크 플래터는 일반적으로 각각 512바이트의 섹터로 구분됩니다. 모든 물리적 읽기 또는 쓰기 작업은 전체 섹터를 처리합니다. 쓰기 요청이 드라이브에 도착하면 512바이트의 배수일 수 있습니다(PostgreSQL일반적으로 한 번에 8192바이트 또는 16섹터를 씁니다.) 언제든지 정전으로 인해 쓰기 프로세스가 실패할 수 있습니다. 즉, 512바이트 섹터 중 일부는 기록되었지만 다른 섹터는 기록되지 않았습니다. 그러한 실패를 방지하기 위해,PostgreSQL정기적으로 전체 페이지 이미지를 영구 WAL 저장소에 씁니다이전디스크의 실제 페이지 수정. 이렇게 하면 충돌 복구 중에포스트그레SQLWAL에서 부분적으로 작성된 페이지를 복원할 수 있습니다. 부분 페이지 쓰기를 방지하는 파일 시스템 소프트웨어(예: ZFS)가 있는 경우 다음을 꺼서 이 페이지 이미징을 끌 수 있습니다.full_page_writes매개변수. BBU(배터리 지원 장치) 디스크 컨트롤러는 데이터가 전체(8kB) 페이지로 BBU에 기록되도록 보장하지 않는 한 부분 페이지 쓰기를 방지하지 않습니다.
PostgreSQL또한 가비지 데이터 읽기/젠 토토와 같이 시간이 지남에 따라 하드웨어 오류나 미디어 오류로 인해 발생할 수 있는 저장 장치의 일부 데이터 손상으로부터 보호합니다.
WAL 파일의 각 개별 레코드는 레코드 내용이 올바른지 확인할 수 있는 CRC-32(32비트) 검사로 보호됩니다. CRC 값은 각 WAL 레코드를 작성할 때 설정되고 충돌 복구, 아카이브 복구 및 복제 중에 확인됩니다.
데이터 페이지는 현재 기본적으로 체크섬되지 않습니다. 하지만 WAL 기록에 기록된 전체 페이지 이미지는 보호됩니다. 참조initdb데이터 페이지 체크섬 활성화에 대한 자세한 내용을 확인하세요.
다음과 같은 내부 데이터 구조pg_clog, pg_subtrans, pg_multixact, pg_serial, pg_notify, pg_stat, pg_snapshots직접 체크섬되지 않으며 전체 페이지 젠 토토로 페이지가 보호되지 않습니다. 그러나 이러한 데이터 구조가 지속되는 경우 WAL 레코드는 충돌 복구 시 최근 변경 사항을 정확하게 재구축할 수 있도록 작성되며 이러한 WAL 레코드는 위에서 설명한 대로 보호됩니다.
개별 상태 파일pg_twophaseCRC-32로 보호됩니다.
정렬, 구체화 및 중간 결과를 위해 대규모 SQL 쿼리에 사용되는 임시 데이터 파일은 현재 체크섬되지 않으며 해당 파일 변경에 대해 WAL 레코드가 기록되지 않습니다.
포스트그레SQL수정 가능한 메모리 오류로부터 보호하지 않으며 업계 표준 ECC(오류 수정 코드) 또는 더 나은 보호 기능을 사용하는 RAM을 사용하여 작동한다고 가정합니다.
| 사설 토토 사이트 : 문서 : 9.6 : 신뢰성 및 쓰기 로그 | 젠 토토 : 문서 : 9.6 : 젠 토토 9.6.24 문서화 | PostgreSQL : 문서 : 9.6 : 쓰기 호위 (토토 베이) |
| 젠 토토성 및 미리 쓰기 로그 | 사설 토토 사이트 : 문서 : 9.6 : 신뢰성 및 쓰기 로그 | 미리 젠 토토 로깅(WAL) |