Postgresql 9.2.24 Tài kèo bóng đá pháp | ||||
---|---|---|---|---|
prev | UP | Chương 29. Độ kèo bóng đá pháp và nhật ký ghi lại | Tiếp theo |
Độ kèo bóng đá pháp là một thuộc tính quan trọng của bất kỳ cơ sở dữ liệu nghiêm trọng nào hệ thống vàPostgreSQLkhông Mọi thứ có thể để đảm bảo hoạt động đáng kèo bóng đá pháp. Một khía cạnh hoạt động đáng kèo bóng đá pháp là tất cả dữ liệu được ghi lại bởi một giao dịch nên được lưu trữ trong khu vực không bay hơi an toàn do mất điện, lỗi hệ điều hành và lỗi phần cứng (Ngoại trừ thất bại của khu vực không bay hơi, tất nhiên). Viết thành công dữ liệu vào lưu trữ vĩnh viễn của máy tính (ổ đĩa hoặc tương đương) Thông thường đáp ứng yêu cầu này. TRONG thực tế, ngay cả khi một máy tính bị hư hỏng nghiêm trọng, nếu đĩa Sống sót, chúng có thể được chuyển sang một máy tính khác có Phần cứng và tất cả các giao dịch đã cam kết sẽ vẫn còn nguyên vẹn.
Trong khi buộc dữ kèo bóng đá pháp vào đĩa đĩa định kỳ có thể định kỳ Có vẻ như một hoạt động đơn giản, nó không phải là. Vì ổ đĩa là chậm hơn đáng kể so với bộ nhớ chính và CPU, một số lớp bộ nhớ đệm tồn tại giữa bộ nhớ chính của máy tính và đĩa Platters. Đầu tiên, có bộ đệm bộ đệm của hệ điều hành, bộ nhớ cache thường xuyên yêu cầu khối đĩa và kết hợp đĩa viết. May mắn thay, tất cả các hệ điều hành đều cung cấp cho các ứng dụng Cách để buộc ghi từ bộ đệm bộ đệm vào đĩa vàPostgreSQLSử dụng các tính năng đó. (Xemwal_sync_methodtham số để điều chỉnh cách thực hiện điều này.)
Tiếp theo, có thể có bộ đệm trong bộ điều khiển ổ đĩa; Điều này đặc biệt phổ biến trênRAIDThẻ bộ điều khiển. kèo bóng đá pháp số bộ nhớ cache này làViết qua, có nghĩa là ghi là gửi đến ổ đĩa ngay khi họ đến. Những người khác làViết-back, có nghĩa là dữ liệu được gửi đến ổ đĩa tại một số thời gian sau. Bộ nhớ cache như vậy có thể là một mối nguy hiểm đáng kèo bóng đá pháp vì bộ nhớ trong bộ nhớ cache bộ điều khiển đĩa dễ biến động và sẽ Mất nội dung của nó trong một sự cố quyền lực. Thẻ điều khiển tốt hơn cóĐơn vị đánh bóng pin(BBUs), có nghĩa là thẻ có một pin duy trì nguồn điện cho bộ đệm trong trường hợp năng lượng hệ thống sự mất mát. Sau khi nguồn được khôi phục, dữ kèo bóng đá pháp sẽ được ghi vào ổ đĩa.
Và cuối cùng, hầu hết các ổ đĩa đều có bộ đệm. Một số là viết qua trong khi một số là viết lại, và những mối quan tâm tương tự về mất dữ kèo bóng đá pháp tồn tại cho bộ nhớ cache ổ đĩa ghi lại như cho đĩa Bộ nhớ bộ điều khiển. Ổ đĩa IDE và SATA cấp người tiêu dùng là đặc biệt có khả năng có bộ nhớ cach-back mà không sống sót sau một sự cố quyền lực. Nhiều ổ đĩa trạng thái rắn (SSD) cũng có Bộ nhớ cache ghi-back dễ bay hơi.
Những bộ đệm này thường có thể bị vô hiệu hóa; Tuy nhiên, phương pháp Để thực hiện điều này thay đổi theo hệ điều hành và loại ổ đĩa:
trênLinux, IDE Ổ đĩa có thể được truy vấn bằng cách sử dụnghdparm -i; viết bộ nhớ đệm được bật nếu có*Bên cạnhViết bộ đệm. hdparm -w 0Có thể được sử dụng để tắt ghi bộ nhớ đệm. Ổ đĩa SCSI có thể được truy vấn bằng cách sử dụngsdparm. Sử dụngsdparm --get = wceĐể kiểm tra xem bộ đệm ghi được bật vàsdparm --clear = wceđể vô hiệu hóa nó.
trênFreeBSD, Ổ đĩa IDE có thể được truy vấn bằng cách sử dụngAtacontrolvà Viết bộ nhớ đệm tắt bằng cách sử dụnghw.ata.wc = 0in/boot/loader.conf; Ổ đĩa SCSI có thể được truy vấn sử dụngXác định camcontrolvà Viết bộ nhớ cache cả được truy vấn và thay đổi bằng cách sử dụngsdparmKhi có sẵn.
trênSolaris, đĩa Viết bộ nhớ cache được điều khiển bởiĐịnh dạng -e. (The SolarisZFSHệ thống tệp là an toàn với bật bộ đệm ghi đĩa được bật vì nó phát hành chính nó Đĩa bộ nhớ cache ra lệnh.)
trênWindows, nếuWal_sync_methodlàopen_datasync(mặc định), viết bộ nhớ đệm có thể được vô hiệu hóa bằng cách không kiểm traMy Máy tính \ mở \Đĩa lái xe\ Properties \ Phần cứng \ Properties \ Chính sách \ Enable Viết bộ nhớ đệm trên đĩa. Ngoài ra, đặtWal_sync_methodđếnfsynchoặcFSYNC_WRITETHROUGH, ngăn chặn ghi bộ nhớ đệm.
trênMac OS X, Viết Bộ nhớ đệm có thể được ngăn chặn bằng cách cài đặtWal_sync_methodđếnfsync_writethrough.
Các ổ SATA gần đây (những người theo dõiATAPI-6hoặc muộn hơn) Cung cấp bộ nhớ cache ổ đĩa yêu cầu (Flush Cache ext), trong khi SCSI Các ổ đĩa từ lâu đã hỗ trợ kèo bóng đá pháp lệnh tương tựĐồng bộ hóa bộ nhớ cache. Các lệnh này không trực tiếp Có thể truy cập vàoPostgreSQL, nhưng kèo bóng đá pháp số hệ thống tệp (ví dụ:ZFS, ext4) có thể sử dụng chúng để xả Dữ kèo bóng đá pháp cho các đĩa trên các ổ đĩa hỗ trợ ghi lại. Không may thay, Các hệ thống tệp như vậy hoạt động theo tối đa khi kết hợp với Đơn vị dự phòng pin (BBU) Đĩa bộ điều khiển. Trong các thiết lập như vậy, lệnh đồng bộ hóa tất cả dữ kèo bóng đá pháp từ bộ đệm bộ điều khiển đến các đĩa, loại bỏ nhiều Lợi ích của BBU. Bạn có thể chạypg_test_fsyncMô -đun để xem bạn có phải là ảnh hưởng. Nếu bạn bị ảnh hưởng, lợi ích hiệu suất của BBU có thể được lấy lại bằng cách tắt các rào cản ghi trong tệp hệ thống hoặc cấu hình lại bộ điều khiển đĩa, nếu đó là lựa chọn. Nếu các rào cản ghi bị tắt, hãy đảm bảo pin vẫn còn chức năng; Một pin bị lỗi có thể có khả năng dẫn đến dữ kèo bóng đá pháp sự mất mát. Hy vọng rằng các nhà thiết kế bộ điều khiển hệ thống và bộ điều khiển đĩa sẽ cuối cùng giải quyết hành vi dưới mức tối ưu này.
Khi hệ điều hành gửi yêu cầu ghi đến lưu trữ phần cứng, có rất ít nó có thể làm để đảm bảo dữ liệu có Đến một khu vực lưu trữ thực sự không bay hơi. Đúng hơn, nó là trách nhiệm của quản trị viên để đảm bảo rằng tất cả các lưu trữ Các thành phần đảm bảo tính toàn vẹn dữ liệu. Tránh bộ điều khiển đĩa Có bộ nhớ cach viết không được tưới tiêu. Ở cấp độ ổ đĩa, vô hiệu hóa Viết lưu lại bộ nhớ đệm nếu ổ đĩa không thể đảm bảo dữ liệu sẽ Viết trước khi tắt máy. Nếu bạn sử dụng SSD, hãy lưu ý rằng nhiều Những điều này không tôn trọng các lệnh xả bộ đệm theo mặc định. Bạn có thể kiểm tra Đối với hành vi hệ thống con I/O đáng kèo bóng đá pháp bằng cách sử dụngdiskchecker.pl.
Một rủi ro mất dữ kèo bóng đá pháp khác được đặt ra bằng cách ghi đĩa đĩa tự hoạt động. Đĩa đĩa được chia thành các lĩnh vực, Thông thường 512 byte mỗi byte. Mỗi hoạt động đọc hoặc viết vật lý xử lý cả một lĩnh vực. Khi một yêu cầu ghi đến Ổ đĩa, nó có thể dành cho một số bội số của 512 byte (PostgreSQLThông thường viết 8192 byte hoặc 16 lĩnh vực, tại kèo bóng đá pháp thời điểm) và quá trình viết có thể thất bại do Mất điện bất cứ lúc nào, có nghĩa là kèo bóng đá pháp số trong các lĩnh vực 512 byte đã được viết trong khi những người khác thì không. Để bảo vệ chống lại như vậy thất bại,PostgreSQLĐịnh kỳ ghi hình ảnh trang đầy đủ vào lưu trữ wal vĩnh viễntrướcSửa đổi Trang thực tế trên đĩa. Bằng cách này, trong quá trình phục hồi sự cốPostgreSQLcó thể khôi phục Các trang được viết kèo bóng đá pháp phần từ Wal. Nếu bạn có hệ thống tệp phần mềm ngăn chặn kèo bóng đá pháp phần trang ghi (ví dụ: ZFS), bạn có thể Tắt hình ảnh trang này bằng cách tắtfull_page_writestham số. Bộ điều khiển đĩa được hỗ trợ pin (BBU) không Ngăn chặn một phần trang ghi trừ khi họ đảm bảo rằng dữ kèo bóng đá pháp là Viết cho BBU dưới dạng trang đầy đủ (8kb).