Phiên bản được hỗ trợ:hiện tại(17)16/15/14/13
Phiên bản phát triển:Devel
Phiên bản không được hỗ trợ:12/11/10/9.6/9.5/9.4/9.3/9.2/9.1/9.0/8.4/8.3/8.2

26.3.kèo bóng đá pháp trữ liên tục và phục hồi thời gian (pitr)

Tại mọi lúc,PostgreSQLDuy trì AViết nhật ký trước(Wal) trongpg_wal/thư mục của thư mục dữ liệu của cụm. Nhật ký ghi lại mọi thay đổi được thực hiện cho các tệp dữ liệu của cơ sở dữ liệu.Hồiphát lạiHồiCác mục nhật ký được thực hiện kể từ điểm kiểm tra cuối cùng. Tuy nhiên, sự tồn tại của nhật ký cho phép sử dụng chiến lược thứ ba để sao kèo bóng đá pháp cơ sở dữ liệu: chúng ta có thể kết hợp sao kèo bóng đá pháp cấp hệ thống tệp với sao kèo bóng đá pháp các tệp WAL.

  • Chúng tôi không cần sao kèo bóng đá pháp hệ thống tệp hoàn toàn nhất quán làm điểm bắt đầu. Bất kỳ sự không nhất quán nội bộ nào trong bản sao kèo bóng đá pháp sẽ được sửa chữa bằng cách phát lại nhật ký (điều này không khác biệt đáng kể so với những gì xảy ra trong quá trình phục hồi sự cố).tarhoặc một công cụ kèo bóng đá pháp trữ tương tự.

  • Vì chúng ta có thể kết hợp một chuỗi các tệp WAL dài vô thời hạn để phát lại, nên sao kèo bóng đá pháp liên tục có thể đạt được chỉ bằng cách tiếp tục kèo bóng đá pháp trữ các tệp WAL. Điều này đặc biệt có giá trị đối với cơ sở dữ liệu lớn, trong đó có thể không thuận tiện để có một bản sao kèo bóng đá pháp đầy đủ thường xuyên.

  • Không cần thiết phải phát lại các mục WAL cho đến cuối cùng. Chúng tôi có thể dừng phát lại tại bất kỳ điểm nào và có một ảnh chụp nhanh nhất quán của cơ sở dữ liệu như lúc đó.kèo bóng đá pháp thời gian: Có thể khôi phục cơ sở dữ liệu về trạng thái của nó bất cứ lúc nào kể từ khi sao kèo bóng đá pháp cơ sở của bạn được thực hiện.

  • 13718_13850Chế độ chờ ấmHệ thống: Tại bất kỳ điểm nào chúng ta có thể đưa máy thứ hai lên và nó sẽ có một bản kèo bóng đá pháp gần như hiện tại của cơ sở dữ liệu.

kèo bóng đá pháp ý

pg_dumpPG_DUMPALLKhông sản xuất các bản sao kèo bóng đá pháp cấp hệ thống tệp và không thể được sử dụng như một phần của giải pháp kèo bóng đá pháp trữ liên tục. Những bãi rác như vậy làlogicvà không chứa đủ thông tin sẽ được sử dụng bởi Wal Replay.

Như với kỹ thuật-hệ thống tệp đơn giản, phương pháp này chỉ có thể hỗ trợ khôi phục toàn bộ cụm cơ sở dữ liệu, không phải là một tập hợp con. Ngoài ra, nó đòi hỏi rất nhiều kèo bóng đá pháp trữ kèo bóng đá pháp trữ: bản sao kèo bóng đá pháp cơ sở có thể cồng kềnh và một hệ thống bận rộn sẽ tạo ra nhiều megabyte kèo bóng đá pháp lượng truy cập WAL phải được kèo bóng đá pháp trữ.

Để phục hồi thành công bằng cách sử dụng kèo bóng đá pháp trữ liên tục (còn được gọi làMạnhSao kèo bóng đá pháp trực tuyếnxôngbởi nhiều nhà cung cấp cơ sở dữ liệu), bạn cần một chuỗi các tệp WAL được kèo bóng đá pháp trữ liên tục kéo dài ít nhất là thời gian bắt đầu của bản sao kèo bóng đá pháp của bạn. Vì vậy, để bắt đầu, bạn nên thiết lập và kiểm tra quy trình của mình để kèo bóng đá pháp trữ các tệp waltrướcBạn lấy bản sao kèo bóng đá pháp cơ sở đầu tiên của bạn. Theo đó, trước tiên chúng tôi thảo luận về cơ chế kèo bóng đá pháp trữ các tệp wal.

26.3.1.Thiết lập WAL ARCIVING

Theo nghĩa trừu tượng, chạyPostgreSQLHệ thống tạo ra một chuỗi dài vô hạn của WAL Records. Hệ thống chia vật lý trình tự này thành walTệp phân đoạn, thường là 16MB apiece (mặc dù kích thước phân đoạn có thể được thay đổi tronginitDB). Các tập tin phân đoạn được đặt tên số phản ánh vị trí của chúng trong chuỗi Wal trừu tượng.Tái chếChúng bằng cách đổi tên các tệp phân đoạn không cần thiết hơn thành các số phân đoạn cao hơn. Người ta cho rằng các tệp phân đoạn có nội dung trước điểm kiểm tra cuối cùng không còn được quan tâm và có thể được tái chế.

Khi kèo bóng đá pháp trữ dữ liệu Wal, chúng ta cần ghi lại nội dung của từng tệp phân đoạn sau khi được điền và kèo bóng đá pháp dữ liệu đó ở đâu đó trước khi tệp phân đoạn được tái chế để tái sử dụng. Tùy thuộc vào ứng dụng và phần cứng có sẵn, có thể có nhiều cách khác nhau củakèo bóng đá pháp dữ liệu ở đâu đóHồi: Chúng tôi có thể sao chép các tệp phân đoạn kèo bóng đá phápo thư mục gắn trên NFS trên một máy khác, hãy ghi chúng kèo bóng đá phápo ổ đĩa băng (đảm bảo rằng bạn có cách xác định tên gốc của mỗi tệp) hoặc ghép chúng lại với nhau và đốt chúng kèo bóng đá phápo CD hoặc một cách khác. Để cung cấp cho quản trị viên cơ sở dữ liệu linh hoạt,PostgreSQLcố gắng không đưa ra bất kỳ giả định nào về cách thức kèo bóng đá pháp trữ sẽ được thực hiện. Thay vì,PostgreSQLCho phép quản trị viên chỉ định lệnh shell hoặc thư viện kèo bóng đá pháp trữ được thực thi để sao chép tệp phân khúc đã hoàn thành đến bất cứ nơi nào cần thiết. Điều này có thể đơn giản như một lệnh shell sử dụngCPhoặc nó có thể gọi một hàm C phức tạp - tất cả đều tùy thuộc kèo bóng đá phápo bạn.

Để cho phép kèo bóng đá pháp trữ Wal, đặtWal_LevelTham số cấu hình thànhbản kèo bóng đá pháphoặc cao hơn,Archive_Modeđếntrên, Chỉ định lệnh shell để sử dụng trongArchive_CommandTham số cấu hình hoặc chỉ định thư viện để sử dụng trongArchive_L LibraryTham số cấu hình. Trong thực tế, các cài đặt này sẽ luôn được đặt trongPostgreSql.confTệp.

inArchive_Command,%Pđược thay thế bằng tên đường dẫn của tệp để kèo bóng đá pháp trữ, trong khi%Fchỉ được thay thế bằng tên tệp. (Tên đường dẫn liên quan đến thư mục làm việc hiện tại, tức là, thư mục dữ liệu của cụm.) Sử dụng%%Nếu bạn cần nhúng một thực tế%ký tự trong lệnh. Lệnh hữu ích đơn giản nhất là một cái gì đó như:

archive_command = 'test! -f/mnt/server/archivingir/%f && cp%p/mnt/server/archivingir/%f ' # unix

sẽ sao chép các phân đoạn Wal có thể kèo bóng đá pháp trữ vào thư mục/mnt/server/archivingir. (Đây là một ví dụ, không phải là một đề xuất và có thể không hoạt động trên tất cả các nền tảng.) Sau%P%Ftham số đã được thay thế, lệnh thực tế được thực thi có thể trông giống như thế này:

Kiểm tra! -f/mnt/server/archivingir/000000010000000000000065

Một lệnh tương tự sẽ được tạo cho mỗi tệp mới được kèo bóng đá pháp trữ.

Lệnh kèo bóng đá pháp trữ sẽ được thực thi dưới quyền sở hữu của cùng một người dùng màPostgreSQLMáy chủ đang chạy như. Vì một loạt các tệp WAL được kèo bóng đá pháp trữ có chứa mọi thứ hiệu quả trong cơ sở dữ liệu của bạn, bạn sẽ muốn chắc chắn rằng dữ liệu kèo bóng đá pháp trữ được bảo vệ khỏi mắt tò mò;

Điều quan trọng là lệnh kèo bóng đá pháp trữ trả về trạng thái thoát bằng 0 khi và chỉ khi nó thành công. Khi nhận được kết quả bằng không,PostgreSQLsẽ cho rằng tệp đã được kèo bóng đá pháp trữ thành công và sẽ xóa hoặc tái chế nó. Tuy nhiên, trạng thái khác không cho biếtPostgreSQLrằng tệp không được kèo bóng đá pháp trữ; nó sẽ thử lại định kỳ cho đến khi nó thành công.

Một cách khác để kèo bóng đá pháp trữ là sử dụng mô -đun kèo bóng đá pháp trữ tùy chỉnh làmArchive_L Library. Vì các mô -đun như vậy được viết bằngC, Tạo của riêng bạn có thể yêu cầu nỗ lực nhiều hơn đáng kể so với việc viết lệnh shell. Tuy nhiên, các mô -đun kèo bóng đá pháp trữ có thể hoạt động nhiều hơn so với kèo bóng đá pháp trữ qua Shell và chúng sẽ có quyền truy cập vào nhiều tài nguyên máy chủ hữu ích.Chương 51.

Khi lệnh kèo bóng đá pháp trữ bị chấm dứt bởi tín hiệu (trừSigtermđược sử dụng như một phần của việc tắt máy chủ) hoặc lỗi của shell có trạng thái thoát lớn hơn 125 (chẳng hạn như không tìm thấy lệnh) hoặc nếu hàm kèo bóng đá pháp trữ phát raERRORhoặcFatal, Quá trình Archiver hủy bỏ và được khởi động lại bởi người bưu điện. Trong những trường hợp như vậy, sự thất bại không được báo cáo trongpg_stat_archiver.

Các lệnh và thư viện kèo bóng đá pháp trữ thường nên được thiết kế để từ chối ghi đè lên bất kỳ tệp kèo bóng đá pháp trữ nào đã tồn tại. Đây là một tính năng an toàn quan trọng để duy trì tính toàn vẹn của kho kèo bóng đá pháp trữ của bạn trong trường hợp lỗi quản trị viên (chẳng hạn như gửi đầu ra của hai máy chủ khác nhau đến cùng một thư mục kèo bóng đá pháp trữ).

Nên kiểm tra lệnh hoặc thư viện kèo bóng đá pháp trữ được đề xuất của bạn để đảm bảo rằng nó thực sự không ghi đè lên một tệp hiện có,Và nó trả về trạng thái khác hoặcSai, tương ứng, trong trường hợp này. Lệnh ví dụ ở trên cho Unix đảm bảo điều này bằng cách bao gồm một riêng biệtTestBước. Trên một số nền tảng Unix,CPCó các công tắc như-iĐiều đó có thể được sử dụng để làm điều tương tự hơn một cách rõ ràng, nhưng bạn không nên dựa kèo bóng đá phápo những điều này mà không xác minh rằng trạng thái thoát bên phải được trả về. (Đặc biệt, GNUCPSẽ trả về trạng thái 0 khi-Iđược sử dụng và tệp đích đã tồn tại, đó làkhôngHành vi mong muốn.)

Trong khi thiết kế thiết lập kèo bóng đá pháp trữ của bạn, hãy xem xét điều gì sẽ xảy ra nếu lệnh kèo bóng đá pháp trữ hoặc thư viện không lặp đi lặp lại vì một số khía cạnh yêu cầu can thiệp của người vận hành hoặc kèo bóng đá pháp trữ hết không gian. Ví dụ, điều này có thể xảy ra nếu bạn viết băng băng mà không có autochanger;pg_wal/Thư mục sẽ tiếp tục điền kèo bóng đá phápo các tệp phân đoạn Wal cho đến khi tình huống được giải quyết. (Nếu hệ thống tệp chứapg_wal/điền kèo bóng đá phápo,PostgreSQLSẽ tắt máy hoảng loạn. Không có giao dịch cam kết nào sẽ bị mất, nhưng cơ sở dữ liệu sẽ vẫn ngoại tuyến cho đến khi bạn giải phóng một số không kèo bóng đá pháp.)

Tốc độ của lệnh kèo bóng đá pháp trữ hoặc thư viện không quan trọng miễn là nó có thể theo kịp tốc độ trung bình mà máy chủ của bạn tạo dữ liệu WAL. Hoạt động bình thường tiếp tục ngay cả khi quá trình kèo bóng đá pháp trữ bị tụt lại phía sau một chút.pg_wal/Thư mục sẽ chứa số lượng lớn các tệp phân đoạn chưa được kèo bóng đá pháp trữ, cuối cùng có thể vượt quá không gian đĩa có sẵn. Bạn nên theo dõi quy trình kèo bóng đá pháp trữ để đảm bảo rằng nó đang hoạt động như bạn dự định.

24361_24620%P) Nhưng cần phải kèo bóng đá pháp giữ tên tệp (%F).

kèo bóng đá pháp ý rằng mặc dù kèo bóng đá pháp trữ Wal sẽ cho phép bạn khôi phục mọi sửa đổi được thực hiện cho dữ liệu trongPostgreSQLCơ sở dữ liệu, nó sẽ không khôi kèo bóng đá pháp các thay đổi được thực hiện cho các tệp cấu hình (nghĩa là,PostgreSql.conf,pg_hba.confpg_ident.conf), vì chúng được chỉnh sửa thủ công thay vì thông qua các hoạt động SQL. Bạn có thể muốn giữ các tệp cấu hình ở một vị trí sẽ được sao kèo bóng đá pháp bởi các quy trình sao kèo bóng đá pháp hệ thống tệp thông thường của bạn.Phần 20.2Để biết cách di chuyển các tệp cấu hình.

Lệnh hoặc chức năng kèo bóng đá pháp trữ chỉ được gọi trên các phân đoạn WAL đã hoàn thành. Do đó, nếu máy chủ của bạn chỉ tạo ra ít kèo bóng đá pháp lượng truy cập WAL (hoặc có thời gian chùng khi nó làm như vậy), có thể có một sự chậm trễ lâu giữa việc hoàn thành giao dịch và ghi lại an toàn trong kèo bóng đá pháp trữ kèo bóng đá pháp trữ.archive_timeoutĐể buộc máy chủ chuyển sang tệp phân đoạn Wal mới ít nhất là thường xuyên. kèo bóng đá pháp ý rằng các tệp được kèo bóng đá pháp trữ được kèo bóng đá pháp trữ sớm do công tắc bắt buộc vẫn có độ dài tương đương với các tệp hoàn toàn đầy đủ.Archive_Timeout- Nó sẽ làm mờ kèo bóng đá pháp trữ kèo bóng đá pháp trữ của bạn.Archive_TimeoutCài đặt của một phút hoặc lâu hơn thường là hợp lý.

Ngoài ra, bạn có thể buộc một công tắc phân đoạn theo cách thủ công vớipg_switch_walNếu bạn muốn đảm bảo rằng một giao dịch vừa hoàn thành được kèo bóng đá pháp trữ càng sớm càng tốt. Các chức năng tiện ích khác liên quan đến quản lý Wal được liệt kê trongBảng 9,89.

KhiWal_Leveltối thiểuMột số lệnh SQL được tối ưu hóa để tránh ghi nhật ký Wal, như được mô tả trongPhần 14.4.7. Nếu việc kèo bóng đá pháp trữ hoặc sao chép phát trực tuyến được bật trong khi thực hiện một trong những tuyên bố này, WAL sẽ không chứa đủ thông tin để phục hồi kèo bóng đá pháp trữ.Wal_LevelChỉ có thể thay đổi khi bắt đầu máy chủ. Tuy nhiên,Archive_CommandArchive_L Librarycó thể được thay đổi với tải lại tệp cấu hình. Nếu bạn đang kèo bóng đá pháp trữ qua Shell và muốn tạm thời ngừng kèo bóng đá pháp trữ, một cách để làm điều đó là đặtArchive_Commandđến chuỗi trống (''). Điều này sẽ khiến các tệp WAL tích lũy trongpg_wal/cho đến khi làm việcArchive_Commandđược thiết lập lại.

26.3.2.Tạo một bản sao kèo bóng đá pháp cơ sở

Cách dễ nhất để thực hiện sao kèo bóng đá pháp cơ sở là sử dụngPostgreSQL: TàiCông cụ. Nó có thể tạo một bản sao kèo bóng đá pháp cơ sở dưới dạng các tệp thông thường hoặc như một kho kèo bóng đá pháp trữ tar.PostgreSQL: TàiCó thể cung cấp là bắt buộc, bạn cũng có thể tạo bản sao kèo bóng đá pháp cơ sở bằng API cấp thấp (xemPhần 26.3.3).

Không cần thiết phải lo lắng về lượng thời gian cần thiết để tạo bản sao kèo bóng đá pháp cơ sở. Tuy nhiên, nếu bạn thường chạy máy chủ vớifull_page_writesbị vô hiệu hóa, bạn có thể nhận thấy hiệu suất giảm trong khi bản sao kèo bóng đá pháp chạy từfull_page_writesđược ép buộc một cách hiệu quả trong chế độ sao kèo bóng đá pháp.

Để sử dụng bản sao kèo bóng đá pháp, bạn sẽ cần giữ tất cả các tệp phân đoạn Wal được tạo trong và sau khi sao kèo bóng đá pháp hệ thống tệp. Để hỗ trợ bạn thực hiện việc này, quá trình sao kèo bóng đá pháp cơ sở sẽ tạo ra mộtTệp lịch sử sao kèo bóng đá phápĐiều đó ngay lập tức được kèo bóng đá pháp trữ vào khu vực kèo bóng đá pháp trữ Wal. Tệp này được đặt tên theo tệp phân đoạn Wal đầu tiên mà bạn cần cho bản sao kèo bóng đá pháp hệ thống tệp.0000000100001234000055CDTệp lịch sử sao kèo bóng đá pháp sẽ được đặt tên là một cái gì đó giống như0000000100001234000055CD.007C9330.Backup. .

Tệp lịch sử sao kèo bóng đá pháp chỉ là một tệp văn bản nhỏ. Nó chứa chuỗi nhãn bạn đã cung cấp choPostgreSQL: Tài, cũng như thời gian bắt đầu và kết thúc và các phân đoạn Wal của bản sao kèo bóng đá pháp. Nếu bạn đã sử dụng nhãn để xác định tệp kết xuất được liên kết, thì tệp lịch sử được kèo bóng đá pháp trữ là đủ để cho bạn biết tệp kết xuất nào để khôi phục.

Vì bạn phải giữ xung quanh tất cả các tệp WAL được kèo bóng đá pháp trữ trở lại bản sao kèo bóng đá pháp cơ sở cuối cùng của bạn, nên khoảng cách giữa các bản sao kèo bóng đá pháp cơ sở thường nên được chọn dựa trên số lượng kèo bóng đá pháp trữ bạn muốn chi cho các tệp WAL được kèo bóng đá pháp trữ. Bạn cũng nên xem xét thời gian bạn chuẩn bị phục hồi, nếu cần phục hồi - hệ thống sẽ phải phát lại tất cả các phân đoạn Wal đó và điều đó có thể mất một lúc nếu đã lâu rồi kể từ bản sao kèo bóng đá pháp cơ sở cuối cùng.

26.3.3.Tạo bản sao kèo bóng đá pháp cơ sở bằng API cấp thấp

Quy trình tạo bản sao kèo bóng đá pháp cơ sở bằng cách sử dụng API cấp thấp chứa một vài bước so vớiPostgreSQL: TàiPhương pháp, nhưng tương đối đơn giản. Điều rất quan trọng là các bước này được thực hiện theo trình tự và thành công của một bước được xác minh trước khi tiến hành bước tiếp theo.

Nhiều bản sao kèo bóng đá pháp có thể được chạy đồng thời (cả hai bắt đầu sử dụng API sao kèo bóng đá pháp này và những người bắt đầu sử dụngPostgreSQL: Tài).

  1. Đảm bảo rằng việc kèo bóng đá pháp trữ Wal được bật và hoạt động.

  2. Kết nối với máy chủ (không quan trọng cơ sở dữ liệu nào) với tư cách là người dùng có quyền chạyPG_Backup_Start(Superuser hoặc người dùng đã được cấpthực thiVề chức năng) và ban hành lệnh:

    Chọn pg_backup_start (nhãn = 'nhãn', fast = false);

    WHEREnhãnlà bất kỳ chuỗi nào bạn muốn sử dụng để xác định duy nhất hoạt động sao kèo bóng đá pháp này. Gọi kết nốipg_backup_startphải được duy trì cho đến khi kết thúc bản sao kèo bóng đá pháp hoặc bản sao kèo bóng đá pháp sẽ được tự động hủy bỏ.

    Sao kèo bóng đá pháp trực tuyến luôn được bắt đầu khi bắt đầu một trạm kiểm soát. Theo mặc định,pg_backup_startSẽ chờ điểm kiểm tra theo lịch trình tiếp theo để hoàn thành, có thể mất nhiều thời kèo bóng đá pháp (xem các tham số cấu hìnhCheckPoint_TimeoutCheckPoint_completion_target). Điều này thường thích hợp hơn vì nó giảm thiểu tác động đến hệ thống đang chạy.TRUElà tham số thứ hai chopg_backup_startVà nó sẽ yêu cầu một điểm kiểm tra ngay lập tức, sẽ hoàn thành càng nhanh càng tốt bằng cách sử dụng I/O càng nhiều càng tốt.

  3. 33962_34037tarhoặcCPIO(khôngpg_dumphoặcPG_DUMPALL). Không cần thiết cũng không mong muốn dừng hoạt động bình thường của cơ sở dữ liệu trong khi bạn làm điều này.Phần 26.3.3.1Để mọi thứ cần xem xét trong bản sao kèo bóng đá pháp này.

  4. Trong cùng một kết nối như trước đây, việc đưa ra lệnh:

    Chọn * từ pg_backup_stop (WAIT_FOR_ARCHIVE = TRUE);

    Điều này chấm dứt chế độ sao kèo bóng đá pháp. Trên một chính, nó cũng thực hiện một công tắc tự động sang phân đoạn WAL tiếp theo.pg_switch_walTrên chính để thực hiện công tắc thủ công. Lý do cho công tắc là sắp xếp cho tệp phân đoạn Wal cuối cùng được viết trong khoảng thời gian sao kèo bóng đá pháp để sẵn sàng kèo bóng đá pháp trữ.

    pg_backup_stopSẽ trả về một hàng với ba giá trị. Thứ hai của các trường này sẽ được ghi kèo bóng đá phápo một tệp có tênBackup_LabelTrong thư mục gốc của bản sao kèo bóng đá pháp. Trường thứ ba phải được ghi vào một tệp có tênTablePace_MapTrừ khi trường trống. Các tệp này rất quan trọng đối với hoạt động sao kèo bóng đá pháp và phải được viết byte cho byte mà không cần sửa đổi, có thể yêu cầu mở tệp ở chế độ nhị phân.

  5. Một khi các tệp phân đoạn Wal hoạt động trong quá trình sao kèo bóng đá pháp được kèo bóng đá pháp trữ, bạn đã hoàn tất. Tệp được xác định bởipg_backup_stopgiá trị trả về đầu tiên là phân đoạn cuối cùng được yêu cầu để tạo thành một tập hợp hoàn chỉnh các tệp sao kèo bóng đá pháp. Trên chính, nếuarchive_modeđược bật vàWait_for_archivetham số làTRUE,pg_backup_stopkhông quay lại cho đến khi phân đoạn cuối cùng được kèo bóng đá pháp trữ. Trên một chế độ chờ,Archive_Modephảiluôn luônĐểpg_backup_stopĐể chờ. kèo bóng đá pháp trữ các tệp này sẽ tự động xảy ra vì bạn đã cấu hìnhArchive_CommandhoặcArchive_L Library. Trong hầu hết các trường hợp, điều này xảy ra nhanh chóng, nhưng bạn nên giám sát hệ thống kèo bóng đá pháp trữ của mình để đảm bảo không có sự chậm trễ.pg_backup_stop, Đặt một phù hợpstatement_timeoutGiá trị, nhưng hãy kèo bóng đá pháp ý rằng nếupg_backup_stopKết thúc vì bản sao kèo bóng đá pháp của bạn có thể không hợp lệ.

    Nếu quá trình sao kèo bóng đá pháp theo dõi và đảm bảo rằng tất cả các tệp phân đoạn WAL cần thiết cho bản sao kèo bóng đá pháp được kèo bóng đá pháp trữ thành công thìWait_for_archivetham số (mặc định là true) có thể được đặt thành sai để cópg_backup_stopTrả lại ngay khi bản ghi sao kèo bóng đá pháp dừng được ghi vào WAL. Theo mặc định,pg_backup_stopSẽ đợi cho đến khi tất cả WAL đã được kèo bóng đá pháp trữ, có thể mất một thời gian. Tùy chọn này phải được sử dụng một cách thận trọng: Nếu WAL kèo bóng đá pháp trữ không được theo dõi chính xác thì bản sao kèo bóng đá pháp có thể không bao gồm tất cả các tệp WAL và do đó sẽ không đầy đủ và không thể được khôi phục.

26.3.3.1.Sao kèo bóng đá pháp thư mục dữ liệu

Một số công cụ sao kèo bóng đá pháp hệ thống tệp phát ra cảnh báo hoặc lỗi nếu các tệp họ đang cố gắng sao chép thay đổi trong khi bản sao được tiến hành. Khi lấy bản sao kèo bóng đá pháp cơ sở của cơ sở dữ liệu hoạt động, tình huống này là bình thường và không phải là lỗi.rsyncTrả lại mã thoát riêng choTệp nguồn đã biến mấtHàngvà bạn có thể viết tập lệnh trình điều khiển để chấp nhận mã thoát này dưới dạng trường hợp không lỗi. Ngoài ra, một số phiên bản của GNUtarTrả về mã lỗi không thể phân biệt được với lỗi nghiêm trọng nếu một tệp bị cắt trong khitarđã kèo bóng đá pháp chép nó. May mắn thay, GNUtarPhiên bản 1.16 và sau đó thoát với 1 nếu một tệp được thay đổi trong quá trình sao kèo bóng đá pháp và 2 cho các lỗi khác. Với gnutarPhiên bản 1.23 trở lên, bạn có thể sử dụng các tùy chọn cảnh báo39233_39286Để ẩn các thông báo cảnh báo liên quan.

Hãy chắc chắn rằng bản sao kèo bóng đá pháp của bạn bao gồm tất cả các tệp trong thư mục cụm cơ sở dữ liệu (ví dụ:/usr/local/pgsql/data). Nếu bạn đang sử dụng các không gian bảng không nằm bên dưới thư mục này, hãy cẩn thận bao gồm chúng (và chắc chắn rằng các liên kết biểu tượng kèo bóng đá pháp trữ sao kèo bóng đá pháp của bạn dưới dạng liên kết, nếu không thì khôi phục sẽ làm hỏng không gian bảng của bạn).

Tuy nhiên, bạn nên bỏ qua bản sao kèo bóng đá pháp các tệp trong cụmpg_wal/thư mục con. Điều chỉnh nhẹ này là đáng giá vì nó làm giảm nguy cơ sai lầm khi khôi kèo bóng đá pháp.pg_wal/là một liên kết tượng trưng chỉ ra một nơi nào đó bên ngoài thư mục cụm, dù kèo bóng đá pháp cũng là một thiết lập phổ biến vì lý do hiệu suất. Bạn cũng có thể muốn loại trừpostmaster.pidPostmaster.opts, ghi lại thông tin về việc chạyPostmaster, không phải vềPostmasterCuối cùng sẽ sử dụng bản sao kèo bóng đá pháp này. (Những tệp này có thể nhầm lẫnPG_CTL.)

thường là một ý tưởng tốt để bỏ qua bản sao kèo bóng đá pháp các tệp trong cụm của cụmPG_REPLSLOT/Thư mục, để các khe sao chép tồn tại trên chính không trở thành một phần của bản sao kèo bóng đá pháp. Mặt khác, việc sử dụng bản sao kèo bóng đá pháp tiếp theo để tạo chế độ chờ có thể dẫn đến việc kèo bóng đá pháp giữ các tệp WAL không xác định ở chế độ chờ và có thể bật lên chính nếu phản hồi dự phòng nóng được bật, bởi vì các máy khách đang sử dụng các khe sao chép đó vẫn sẽ được kết nối và cập nhật các khe cắm ở chính, chứ không phải dự phòng.

Nội dung của các thư mụcpg_dynshmem/,pg_notify/,pg_serial/,pg_snapshots/,pg_stat_tmp/pg_subtrans/(nhưng không phải chính các thư mục) có thể được bỏ qua khỏi bản sao kèo bóng đá pháp vì chúng sẽ được khởi tạo khi khởi động Postmaster.

Bất kỳ tệp hoặc thư mục nào bắt đầu bằngPGSQL_TMPcó thể được bỏ qua từ bản sao kèo bóng đá pháp. Các tệp này được xóa khi bắt đầu bưu điện và các thư mục sẽ được tái tạo khi cần thiết.

Các tệp có thể được bỏ qua từ bản sao kèo bóng đá pháp bất cứ khi nào một tệp của tên đó được tìm thấy. Các tệp này chứa dữ liệu bộ đệm quan hệ luôn được xây dựng lại khi khôi phục.

Tệp nhãn sao kèo bóng đá pháp bao gồm chuỗi nhãn bạn đã đưa chopg_backup_start, cũng như thời kèo bóng đá phápPG_Backup_StartĐã được chạy và tên của tệp WAL bắt đầu. Trong trường hợp nhầm lẫn, do đó, có thể nhìn vào bên trong một tệp sao kèo bóng đá pháp và xác định chính xác phiên sao kèo bóng đá pháp, tệp kết xuất đến từ đó.PG_TBLSPC/và đường dẫn đầy đủ của mỗi liên kết tượng trưng. Những tệp này không chỉ dành cho thông tin của bạn;

Cũng có thể tạo bản sao kèo bóng đá pháp trong khi máy chủ bị dừng. Trong trường hợp này, rõ ràng bạn không thể sử dụngPG_Backup_Starthoặcpg_backup_stop, và do đó bạn sẽ được để lại cho các thiết bị của riêng mình để theo dõi bản sao kèo bóng đá pháp nào là và các tệp WAL liên quan đi được bao xa. Nói chung là tốt hơn để tuân theo quy trình kèo bóng đá pháp trữ liên tục ở trên.

26.3.4.Phục hồi bằng cách sử dụng sao kèo bóng đá pháp kèo bóng đá pháp trữ liên tục

Được rồi, điều tồi tệ nhất đã xảy ra và bạn cần khôi phục từ bản sao kèo bóng đá pháp của mình. Đây là thủ tục:

  1. Dừng máy chủ, nếu nó đang chạy.

  2. Nếu bạn có không gian để làm như vậy, hãy sao chép toàn bộ thư mục dữ liệu cụm và bất kỳ không gian bảng nào vào một vị trí tạm thời trong trường hợp bạn cần chúng sau này. kèo bóng đá pháp ý rằng biện pháp phòng ngừa này sẽ yêu cầu bạn có đủ không gian trống trên hệ thống của mình để chứa hai bản sao của cơ sở dữ liệu hiện tại của bạn.PG_WALSubdirectory, vì nó có thể chứa các bản ghi không được kèo bóng đá pháp trữ trước khi hệ thống đi xuống.

  3. Xóa tất cả các tệp và thư mục con hiện có trong thư mục dữ liệu cụm và theo thư mục gốc của bất kỳ không kèo bóng đá pháp bảng nào bạn đang sử dụng.

  4. Khôi phục các tệp cơ sở dữ liệu từ bản sao kèo bóng đá pháp hệ thống tệp của bạn. Hãy chắc chắn rằng chúng được khôi phục với quyền sở hữu phù hợp (người dùng hệ thống cơ sở dữ liệu, không phảiRoot!) Và với các quyền đúng. Nếu bạn đang sử dụng không kèo bóng đá pháp bảng, bạn nên xác minh rằng các liên kết tượng trưng trongpg_tblspc/Đã được khôi kèo bóng đá pháp chính xác.

  5. Xóa bất kỳ tệp nào có trongpg_wal/; Chúng đến từ bản sao kèo bóng đá pháp hệ thống tệp và do đó có thể bị lỗi thời hơn là hiện tại.pg_wal/Sau đó, sau đó tạo lại nó với các quyền thích hợp, cẩn thận để đảm bảo rằng bạn thiết lập lại nó như một liên kết tượng trưng nếu bạn đã thiết lập theo cách đó trước đây.

  6. Nếu bạn có các tệp phân đoạn WAL chưa từng thấy mà bạn đã kèo bóng đá pháp trong bước 2, hãy sao chép chúng vàopg_wal/. .

  7. Đặt cài đặt cấu hình khôi kèo bóng đá pháp trongPostgreSql.conf(xemPhần 20.5.5) và tạo tệprecovery.signalTrong thư mục dữ liệu cụm. Bạn cũng có thể muốn sửa đổi tạm kèo bóng đá pháppg_hba.confĐể ngăn người dùng thông thường kết nối cho đến khi bạn chắc chắn rằng sự kèo bóng đá pháp đã thành công.

  8. Khởi động máy chủ. Máy chủ sẽ chuyển sang chế độ khôi phục và tiến hành đọc qua các tệp WAL được kèo bóng đá pháp trữ mà nó cần.recovery.signal(Để ngăn chặn chế độ khôi phục lại vô tình kèo bóng đá phápo sau) và sau đó bắt đầu các hoạt động cơ sở dữ liệu thông thường.

  9. Kiểm tra nội dung của cơ sở dữ liệu để đảm bảo bạn đã kèo bóng đá pháp về trạng thái mong muốn. Nếu không, hãy quay lại bước 1. Nếu tất cả đều tốt, hãy cho phép người dùng của bạn kết nối bằng cách khôi phụcpg_hba.confđến bình thường.

Phần chính của tất cả điều này là thiết lập cấu hình khôi phục mô tả cách bạn muốn kèo bóng đá pháp và thời gian kèo bóng đá pháp sẽ chạy bao xa. Một điều mà bạn hoàn toàn phải chỉ định làrestore_command, cho biếtPOSTGRESQLCách truy xuất các phân đoạn tệp WAL được kèo bóng đá pháp trữ. Giống nhưArchive_Command, Đây là chuỗi lệnh shell. Nó có thể chứa%F, được thay thế bằng tên của tệp nhật ký mong muốn và%P, được thay thế bằng tên đường dẫn để kèo bóng đá pháp chép tệp nhật ký thành. (Tên đường dẫn liên quan đến thư mục làm việc hiện tại, tức là, thư mục dữ liệu của cụm.) Viết%%Nếu bạn cần nhúng một thực tế%ký tự trong lệnh. Lệnh hữu ích đơn giản nhất là một cái gì đó như:

restore_command = 'cp/mnt/server/archivingir/ %f %p'

sẽ sao chép các phân đoạn Wal được kèo bóng đá pháp trữ trước đó từ thư mục/mnt/server/archivingir. Tất nhiên, bạn có thể sử dụng một cái gì đó phức tạp hơn nhiều, thậm chí có thể là một tập lệnh shell yêu cầu người vận hành gắn một băng thích hợp.

Điều quan trọng là lệnh trả về trạng thái thoát khác không khi bị lỗi. LệnhWillđược gọi là các tệp yêu cầu không có trong kho kèo bóng đá pháp trữ; Nó phải trả lại không khác nhau khi được hỏi.sigterm, được sử dụng như một phần của việc tắt máy chủ cơ sở dữ liệu) hoặc lỗi của shell (chẳng hạn như không tìm thấy lệnh), sau đó khôi kèo bóng đá pháp sẽ phá thai và máy chủ sẽ không khởi động.

Không phải tất cả các tệp được yêu cầu sẽ là các tệp phân đoạn Wal; Bạn cũng nên mong đợi các yêu cầu cho các tệp có hậu tố.History. Cũng kèo bóng đá pháp ý rằng tên cơ sở của%PĐường dẫn sẽ khác với%F; không mong đợi chúng có thể hoán đổi cho nhau.

Các phân đoạn Wal không thể tìm thấy trong kho kèo bóng đá pháp trữ sẽ được tìm kiếm trongpg_wal/; Điều này cho phép sử dụng các phân đoạn không kèo bóng đá pháp trữ gần đây.pg_wal/.

Thông thường, kèo bóng đá pháp sẽ tiến hành thông qua tất cả các phân đoạn WAL có sẵn, do đó khôi phục cơ sở dữ liệu về thời điểm hiện tại (hoặc càng gần càng tốt với các phân đoạn WAL có sẵn). Do đó, sự kèo bóng đá pháp bình thường sẽ kết thúc bằng mộtTệp không tìm thấyTin nhắn, văn bản chính xác của thông báo lỗi tùy thuộc kèo bóng đá phápo sự lựa chọn của bạnrestore_command. Bạn cũng có thể thấy một thông báo lỗi khi bắt đầu khôi kèo bóng đá pháp cho một tệp có tên như00000001.History. Điều này cũng là bình thường và không chỉ ra một vấn đề trong các tình huống kèo bóng đá pháp đơn giản;Phần 26.3.5để thảo luận.

Nếu bạn muốn phục hồi kèo bóng đá phápo một thời điểm trước đó (giả sử, ngay trước khi Junior DBA bỏ bảng giao dịch chính của bạn), chỉ cần chỉ định yêu cầuĐiểm dừng. Bạn có thể chỉ định điểm dừng, được gọi làMục tiêu kèo bóng đá phápHồi, theo ngày/giờ, được đặt tên là điểm khôi kèo bóng đá pháp hoặc hoàn thành ID giao dịch cụ thể. Theo văn bản này, chỉ có ngày/giờ và các tùy chọn điểm khôi kèo bóng đá pháp được đặt tên rất có thể sử dụng được, vì không có công cụ nào giúp bạn xác định với bất kỳ độ chính xác nào mà ID giao dịch sẽ sử dụng.

kèo bóng đá pháp ý

Điểm dừng phải là sau thời gian kết thúc của bản sao kèo bóng đá pháp cơ sở, tức là, thời gian kết thúc củaPG_Backup_Stop. Bạn không thể sử dụng bản sao kèo bóng đá pháp cơ sở để phục hồi đến thời điểm mà bản sao kèo bóng đá pháp đó đang được tiến hành.

Nếu khôi phục tìm thấy dữ liệu WAL bị hỏng, khôi phục sẽ dừng lại tại thời điểm đó và máy chủ sẽ không bắt đầu. Trong trường hợp như vậy, quá trình kèo bóng đá pháp có thể được chạy lại ngay từ đầu, chỉ định AMục tiêu khôi kèo bóng đá phápKhănTrước khi tham nhũng để sự phục hồi có thể hoàn thành bình thường. Nếu việc phục hồi không thành công vì một lý do bên ngoài, chẳng hạn như sự cố hệ thống hoặc nếu kho kèo bóng đá pháp trữ Wal đã không thể truy cập được, thì việc phục hồi có thể được khởi động lại và nó sẽ khởi động lại gần như từ nơi nó thất bại.pg_controlTệp để chỉ ra rằng dữ liệu WAL đã được xử lý không cần phải được quét lại.

26.3.5.Thời kèo bóng đá pháp

Khả năng khôi phục cơ sở dữ liệu về thời điểm trước đó tạo ra một số phức tạp giống như các câu chuyện khoa học viễn tưởng về du hành thời gian và vũ trụ song song. Ví dụ, trong lịch sử ban đầu của cơ sở dữ liệu, giả sử bạn đã bỏ một bảng quan trọng kèo bóng đá phápo lúc 5:15 chiều tối thứ ba, nhưng không nhận ra sai lầm của mình cho đến trưa thứ Tư.thisLịch sử của vũ trụ cơ sở dữ liệu, bạn không bao giờ bỏ bảng. Nhưng giả sử sau đó bạn nhận ra đây không phải là một ý tưởng tuyệt vời, và muốn trở lại kèo bóng đá phápo sáng thứ Tư trong lịch sử ban đầu.

Để giải quyết vấn đề này,POSTGRESQLCó khái niệmTimelines. Bất cứ khi nào một sự phục hồi kèo bóng đá pháp trữ hoàn tất, một dòng thời gian mới được tạo để xác định loạt các bản ghi Wal được tạo sau khi phục hồi đó.anyTrạng thái trước, bao gồm các trạng thái trong các nhánh dòng thời kèo bóng đá pháp mà bạn đã từ bỏ trước đó.

Mỗi khi tạo dòng thời kèo bóng đá pháp mới,POSTGRESQLTạo ALịch sử dòng thời kèo bóng đá phápKhănTệp hiển thị thời gian nào nó phân nhánh từ và khi nào. Các tệp lịch sử này là cần thiết để cho phép hệ thống chọn các tệp phân đoạn WAL phù hợp khi khôi phục từ kho kèo bóng đá pháp trữ có chứa nhiều mốc thời gian.

Hành vi phục hồi mặc định là phục hồi vào dòng thời gian mới nhất được tìm thấy trong kho kèo bóng đá pháp trữ. Nếu bạn muốn phục hồi theo dòng thời gian hiện tại khi bản sao kèo bóng đá pháp cơ sở được đưa vào dòng thời gian con cụ thể (nghĩa là bạn muốn quay lại một trạng thái nào đó được tạo ra sau một nỗ lực phục hồi), bạn cần chỉ địnhhiện tạihoặc ID dòng thời kèo bóng đá pháp đích trongrecovery_target_timeline. Bạn không thể khôi phục thành các mốc thời gian được phân nhánh sớm hơn so với bản sao kèo bóng đá pháp cơ sở.

26.3.6.Mẹo và ví dụ

Một số mẹo để cấu hình kèo bóng đá pháp trữ liên tục được đưa ra ở đây.

26.3.6.1.Sao kèo bóng đá pháp nóng độc lập

Có thể sử dụngPostgreSQLCác cơ sở sao kèo bóng đá pháp để sản xuất các bản sao kèo bóng đá pháp nóng độc lập. Đây là những bản sao kèo bóng đá pháp không thể được sử dụng để phục hồi thời gian, nhưng thường nhanh hơn nhiều để sao kèo bóng đá pháp và khôi phục so vớipg_dumpbãi rác. (Chúng cũng lớn hơn nhiều so vớipg_dumpDumps, vì vậy trong một số trường hợp, lợi thế tốc độ có thể bị phủ định.)

Như với các bản sao kèo bóng đá pháp cơ sở, cách dễ nhất để tạo ra một bản sao kèo bóng đá pháp nóng độc lập là sử dụngPostgreSQL: TàiCông cụ. Nếu bạn bao gồm-xTham số Khi gọi nó, tất cả các nhật ký ghi lại cần thiết để sử dụng bản sao kèo bóng đá pháp sẽ được bao gồm trong bản sao kèo bóng đá pháp tự động và không cần hành động đặc biệt nào để khôi phục bản sao kèo bóng đá pháp.

26.3.6.2.Nhật ký kèo bóng đá pháp trữ được nén

Nếu kích thước kèo bóng đá pháp trữ kèo bóng đá pháp trữ là một mối quan tâm, bạn có thể sử dụnggzipĐể nén các tệp kèo bóng đá pháp trữ:

58020_58090

Sau đó, bạn sẽ cần sử dụngGunzipTrong quá trình kèo bóng đá pháp:

58225_58297

26.3.6.3.Archive_CommandScript

Nhiều người chọn sử dụng tập lệnh để xác định của họArchive_Command, kèo bóng đá pháp cho của họPostgreSql.confmục nhập trông rất đơn giản:

archive_command = 'local_backup_script.sh "%p" "%f"'

Sử dụng một tệp tập lệnh riêng biệt được khuyến khích bất cứ khi nào bạn muốn sử dụng nhiều hơn một lệnh duy nhất trong quy trình kèo bóng đá pháp trữ. Điều này cho phép tất cả sự phức tạp được quản lý trong tập lệnh, có thể được viết bằng ngôn ngữ kịch bản phổ biến nhưbashhoặcperl.

Ví dụ về các yêu cầu có thể được giải quyết trong một tập lệnh bao gồm:

  • Sao chép dữ liệu để bảo mật kèo bóng đá pháp trữ dữ liệu ngoài trang web

  • Các tệp WAL hàng loạt để chúng được chuyển cứ sau ba giờ, thay vì một lần

  • Giao thoa với phần mềm sao kèo bóng đá pháp và khôi phục khác

  • Giao thoa với phần mềm giám sát để báo cáo lỗi

TIP

Khi sử dụngArchive_Commandtập lệnh, mong muốn kích hoạtLogging_Collector. Bất kỳ tin nhắn nào được ghi kèo bóng đá phápostderrTừ tập lệnh sau đó sẽ xuất hiện trong nhật ký máy chủ cơ sở dữ liệu, cho phép các cấu hình phức tạp được chẩn đoán dễ dàng nếu chúng bị lỗi.

26.3.7.Hãy cẩn thận

Tại văn bản này, có một số hạn chế của kỹ thuật kèo bóng đá pháp trữ liên tục. Chúng có thể sẽ được sửa trong các bản phát hành trong tương lai:

  • Nếu APostgreSQL: TàLệnh được thực thi trong khi sao kèo bóng đá pháp cơ sở đang được thực hiện và sau đó là cơ sở dữ liệu mẫu màTạo cơ sở dữ liệuĐược sao chép được sửa đổi trong khi bản sao kèo bóng đá pháp cơ sở vẫn đang được tiến hành, có thể phục hồi sẽ khiến những sửa đổi đó được truyền vào cơ sở dữ liệu được tạo. Điều này tất nhiên là không mong muốn.

  • PostgreSQL: Tài liệu: 15: Tạo kèoCác lệnh được ghi bằng đường dẫn tuyệt đối theo nghĩa đen, và do đó sẽ được phát lại dưới dạng các sáng tạo không kèo bóng đá pháp bảng với cùng một đường dẫn tuyệt đối. Điều này có thể không mong muốn nếu nhật ký được phát lại trên một máy khác.

Cũng cần kèo bóng đá pháp ý rằng mặc địnhWalĐịnh dạng khá cồng kềnh vì nó bao gồm nhiều ảnh chụp nhanh trang đĩa. Các ảnh chụp nhanh trang này được thiết kế để hỗ trợ kèo bóng đá pháp sự cố, vì chúng ta có thể cần sửa các trang đĩa được viết một phần.full_page_writestham số. (Đọc các ghi chú và cảnh báo trongChương 30Trước khi bạn làm như vậy.) Tắt ảnh chụp nhanh trang không ngăn chặn việc sử dụng nhật ký cho các hoạt động PIRT. Một lĩnh vực để phát triển trong tương lai là nén dữ liệu WAL được kèo bóng đá pháp trữ bằng cách xóa các bản sao trang không cần thiết ngay cả khifull_page_writeslà trên. Trong thời kèo bóng đá pháp chờ đợi, các quản trị viên có thể muốn giảm số lượng ảnh chụp nhanh trong WAL bằng cách tăng các tham số khoảng thời kèo bóng đá pháp kiểm tra nhiều như khả thi.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớpMẫu nàyĐể báo cáo vấn đề tài liệu.