PostgreSQL: soi kèo bóng đá truoctran liệu: | |||
---|---|---|---|
prev | UP | Chương 24. Sao cách đọc kèo bóng đá đá và khôi phục | Tiếp theo |
Tại mọi lúc,PostgreSQLDuy trì AViết nhật ký trước(Wal) trongpg_xlog/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."Phát lại"Cá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 cách đọc kèo bóng đá cơ sở dữ liệu: chúng ta có thể kết hợp sao cách đọc kèo bóng đá cấp hệ thống tệp với sao cách đọc kèo bóng đá các tệp WAL.
Chúng tôi không cần sao cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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ụ cách đọc kèo bóng đá 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 việc sao cách đọc kèo bóng đá liên tục có thể đạt được chỉ bằng cách tiếp tục cách đọc kèo bóng đá 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 cách đọc kèo bóng đá đầ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 đó.cách đọc kèo bóng đá 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 cách đọc kèo bóng đá cơ sở của bạn được thực hiện.
Nếu chúng ta liên tục cung cấp cho chuỗi các tệp WAL cho một máy khác đã được tải với cùng một tệp sao cách đọc kèo bóng đá cơ sở, chúng ta có mộtChế độ 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 sao gần như hiện tại của cơ sở dữ liệu.
cách đọc kèo bóng đá ý: pg_dumpvàpg_dumpallKhông sản xuất các bản sao cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trữ cách đọc kèo bóng đá trữ: bản sao cách đọc kèo bóng đá 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 cách đọc kèo bóng đá lượng truy cập WAL phải được cách đọc kèo bóng đá trữ.
Để phục hồi thành công bằng cách sử dụng cách đọc kèo bóng đá trữ liên tục (còn được gọi là"Sao cách đọc kèo bóng đá trực tuyến"bở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 cách đọc kèo bóng đá trữ liên tục kéo dài ít nhất là thời gian bắt đầu của bản sao cách đọc kèo bóng đá 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 để cách đọc kèo bóng đá trữ các tệp waltrướcBạn lấy bản sao cách đọc kèo bóng đá 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ế cách đọc kèo bóng đá trữ các tệp wal.
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 thường là 16MB apiece (mặc dù kích thước phân đoạn có thể được thay đổi khi xây dựngPostgreSQL). 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 đọc kèo bóng đá đổ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-trước khi bạn không còn được quan tâm và có thể được tái chế.
Khi cách đọc kèo bóng đá trữ dữ liệu WAL, chúng ta cần ghi lại nội dung của mỗi tệp phân đoạn sau khi nó được điền và cách đọc kèo bóng đá 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ủa"cách đọc kèo bóng đá dữ liệu ở đâu đó": Chúng tôi có thể sao chép các tệp phân đoạn cách đọc kèo bóng đáo thư mục gắn trên NFS trên máy khác, viết chúng lên ổ đĩ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 cách đọc kèo bóng đáo 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 cách đọc kèo bóng đá trữ sẽ được thực hiện. Thay vì,PostgreSQLCho phép quản trị viên chỉ định lệnh shell được thực thi để sao chép một tệp phân khúc đã hoàn thành cách đọc kèo bóng đáo bất cứ nơi nào cần thiết. Lệnh có thể đơn giản nhưCPhoặc nó có thể gọi một tập lệnh shell phức tạp - tất cả đều tùy thuộc cách đọc kèo bóng đáo bạn.
Để cho phép cách đọc kèo bóng đá trữ Wal, đặtWal_LevelTham số cấu hình thànhcách đọc kèo bóng đá trữhoặc cao hơn,archive_modeđếntrên, và chỉ định lệnh shell để sử dụng trongArchive_CommandTham số cấu hình. Trong thực tế, các cài đặt này sẽ luôn được đặt trongPostgreSql.confTệp. TRONGArchive_Command, %Pđược thay thế bằng tên đường dẫn của tệp để cách đọc kèo bóng đá 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ể cách đọc kèo bóng đá 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%Pvà%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 cách đọc kèo bóng đá trữ.
Lệnh cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trữ được bảo vệ khỏi mắt tò mò;
Điều quan trọng là lệnh cách đọc kèo bóng đá 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ẽ giả sử rằng tệp đã được cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trữ; nó sẽ thử lại định kỳ cho đến khi nó thành công.
Lệnh cách đọc kèo bóng đá trữ thường nên được thiết kế để từ chối ghi đè lên bất kỳ tệp cách đọc kèo bóng đá trữ nào có sẵn. Đâ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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trữ).
Nên kiểm tra lệnh cách đọc kèo bóng đá 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 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 đọc kèo bóng đá 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ư-I19272_19440CPSẽ 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 cách đọc kèo bóng đá trữ của bạn, hãy xem xét điều gì sẽ xảy ra nếu lệnh cách đọc kèo bóng đá trữ không liên tục 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 cách đọc kèo bóng đá 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_xlog/Thư mục sẽ tiếp tục điền cách đọc kèo bóng đáo 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_xlog/điền cách đọc kèo bóng đáo,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 gian.)
Tốc độ của lệnh cách đọc kèo bóng đá trữ 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 cách đọc kèo bóng đá trữ bị tụt lại phía sau một chút.pg_xlog/Thư mục sẽ chứa số lượng lớn các tệp phân đoạn chưa được cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trữ để đảm bảo rằng nó đang hoạt động như bạn dự định.
Khi viết lệnh cách đọc kèo bóng đá trữ của bạn, bạn nên cho rằng tên tệp được cách đọc kèo bóng đá trữ có thể dài tới 64 ký tự và có thể chứa bất kỳ sự kết hợp nào của các chữ cái, chữ số và dấu chấm ASCII. Không cần thiết phải bảo tồn đường dẫn tương đối ban đầu (%P) Nhưng cần phải cách đọc kèo bóng đá giữ tên tệp (%F).
cách đọc kèo bóng đá ý rằng mặc dù cách đọc kèo bóng đá 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 phục 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.confvàpg_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 cách đọc kèo bóng đá bởi các quy trình sao cách đọc kèo bóng đá hệ thống tệp thông thường của bạn.Phần 18.2Để biết cách đọc kèo bóng đá di chuyển các tệp cấu hình.
Lệnh cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trữ cách đọc kèo bóng đá 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. cách đọc kèo bóng đá ý rằng các tệp được cách đọc kèo bóng đá trữ được cách đọc kèo bóng đá 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ờ cách đọc kèo bóng đá trữ cách đọc kèo bóng đá 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 đọc kèo bóng đá thủ công vớipg_switch_xlog
Nếu bạn muốn đảm bảo rằng một giao dịch vừa hoàn thành được cách đọc kèo bóng đá 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-68.
KhiWal_Levellàtố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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trữ.Wal_LevelChỉ có thể được thay đổi khi bắt đầu máy chủ. Tuy nhiên,Archive_Commandcó thể được thay đổi bằng tệp cấu hình tải lại. Nếu bạn muốn tạm thời ngừng cách đọc kèo bóng đá 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_xlog/cho đến khi làm việcArchive_Commandđược thiết lập lại.
Cách dễ nhất để thực hiện sao cách đọc kèo bóng đá cơ sở là sử dụngPostgreSQL: TàiCông cụ. Nó có thể tạo một bản sao cách đọc kèo bóng đá cơ sở dưới dạng các tệp thông thường hoặc như một kho cách đọc kèo bóng đá 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 cách đọc kèo bóng đá cơ sở bằng API cấp thấp (xemPhần 24.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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá chạy từfull_page_writesđược ép buộc một cách hiệu quả trong chế độ sao cách đọc kèo bóng đá.
Để sử dụng bản sao cách đọc kèo bóng đá, 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 cách đọc kèo bóng đá hệ thống tệp. Để hỗ trợ bạn thực hiện việc này, quá trình sao cách đọc kèo bóng đá cơ sở sẽ tạo ra mộtTệp lịch sử sao cách đọc kèo bóng đáĐiều đó ngay lập tức được cách đọc kèo bóng đá trữ vào khu vực cách đọc kèo bóng đá 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 cách đọc kèo bóng đá hệ thống tệp.0000000100001234000055CDTệp lịch sử sao cách đọc kèo bóng đá sẽ được đặt tên là một cái gì đó giống như0000000100001234000055CD.007C9330.Backup. .
Tệp lịch sử sao cách đọc kèo bóng đá 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 cách đọc kèo bóng đá. 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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trữ trở lại bản sao cách đọc kèo bóng đá cơ sở cuối cùng của bạn, khoảng thời gian giữa các bản sao cách đọc kèo bóng đá cơ sở thường nên được chọn dựa trên số lượng cách đọc kèo bóng đá trữ bạn muốn chi cho các tệp WAL được cách đọc kèo bóng đá 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 cách đọc kèo bóng đá cơ sở cuối cùng.
Quy trình tạo bản sao cách đọc kèo bóng đá 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.
Đảm bảo rằng việc cách đọc kèo bóng đá trữ Wal được bật và hoạt động.
Kết nối với cơ sở dữ liệu với tư cách đọc kèo bóng đá là một siêu người dùng và ban hành lệnh:
Chọn pg_start_backup ('nhãn');
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 cách đọc kèo bóng đá này. (Một thực hành tốt là sử dụng đường dẫn đầy đủ nơi bạn định đặt tệp kết xuất sao cách đọc kèo bóng đá.)pg_start_backup
Tạo ANhãn sao cách đọc kèo bóng đáTệp, được gọi làBackup_Label, Trong thư mục cụm với thông tin về bản sao cách đọc kèo bóng đá của bạn, bao gồm thời gian bắt đầu và chuỗi nhãn. Chức năng cũng tạo ra mộtBản đồ không gian bảngTệp, được gọi làTablePace_Map, Trong thư mục cụm với thông tin về các liên kết tượng trưng cho bảng không gian trongPG_TBLSPC/Nếu có một hoặc nhiều liên kết như vậy có mặt. Cả hai tệp đều quan trọng đối với tính toàn vẹn của bản sao cách đọc kèo bóng đá, nếu bạn cần khôi phục từ nó.
Không quan trọng cơ sở dữ liệu nào trong cụm bạn kết nối để ban hành lệnh này. Bạn có thể bỏ qua kết quả được trả về bởi chức năng;
Theo mặc định,pg_start_backup
Có thể mất nhiều thời gian để hoàn thành. Điều này là do nó thực hiện một điểm kiểm tra và I/O cần thiết cho điểm kiểm tra sẽ được trải ra trong một khoảng thời gian đáng kể, theo mặc định một nửa khoảng thời gian kiểm tra của bạn (xem tham số cấu hìnhCheckpoint_completion_target). Đây thường là những gì bạn muốn, bởi vì nó giảm thiểu tác động đến xử lý truy vấn.
chọn pg_start_backup ('nhãn', true);
Điều này buộc điểm kiểm tra phải được thực hiện càng nhanh càng tốt.
Thực hiện bản sao cách đọc kèo bóng đá, sử dụng bất kỳ công cụ hỗ trợ hệ thống tệp thuận tiện nào nhưtarhoặ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.
Một lần nữa kết nối với cơ sở dữ liệu với tư cách đọc kèo bóng đá là một siêu người dùng và ban hành lệnh:
chọn pg_stop_backup ();
Điều này chấm dứt chế độ sao cách đọc kèo bóng đá và thực hiện chuyển đổi tự động sang phân đoạn WAL tiếp theo. 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 cách đọc kèo bóng đá để sẵn sàng cách đọc kèo bóng đá trữ.
Một khi các tệp phân đoạn WAL hoạt động trong quá trình sao cách đọc kèo bóng đá được cách đọc kèo bóng đá trữ, bạn đã hoàn tất. Tệp được xác định bởipg_stop_backup
kết quả 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 cách đọc kèo bóng đá. Nếu nhưArchive_Modeđược bật,pg_stop_backup
Không quay lại cho đến khi phân đoạn cuối cùng được cách đọc kèo bóng đá trữ. cách đọc kèo bóng đá trữ các tệp này sẽ tự động xảy ra vì bạn đã cấu hìnhArchive_Command. 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 cách đọc kèo bóng đá trữ của mình để đảm bảo không có sự chậm trễ.pg_stop_backup
, Đặt một phù hợpstatement_timeoutgiá trị.
Một số công cụ sao cách đọc kèo bóng đá hệ thống tệp phát ra các 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 cách đọc kèo bóng đá 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 cho"Tệp nguồn đã biến mất"và 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ả lại 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đã sao 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 cách đọc kèo bóng đá 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áo32337_32390Để ẩn các thông báo cảnh báo liên quan.
Hãy chắc chắn rằng kết xuất sao cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trữ cách đọc kèo bóng đá trữ dự phòng của bạn dưới dạng liên kết, nếu không thì việc khôi phục sẽ làm hỏng không gian bảng của bạn).
Tuy nhiên, bạn có thể bỏ qua từ bản sao cách đọc kèo bóng đá kết xuất các tệp trong cụmpg_xlog/SIPDIRECTORY. Điều chỉnh nhẹ này là đáng giá vì nó làm giảm nguy cơ sai lầm khi khôi phục.pg_xlog/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ù sao 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.pidvàPostmaster.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 cách đọc kèo bóng đá 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 từ bản sao cách đọc kèo bóng đá kết xuất 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 cách đọc kèo bóng đá. Mặt khác, việc sử dụng bản sao cách đọc kèo bóng đá tiếp theo để tạo chế độ chờ có thể dẫn đến việc cách đọc kèo bóng đá giữ các tệp WAL không xác định ở chế độ chờ và có thể tăng vọt trên Master 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 trên Master, chứ không phải dự phòng.
Cũng đáng chú ý làpg_start_backup
Hàm tạo ra các tệp có tênBackup_LabelvàTablespace_MapTrong thư mục cụm cơ sở dữ liệu, được xóa bởipg_stop_backup
. Các tệp này tất nhiên sẽ được cách đọc kèo bóng đá trữ như một phần của tệp kết xuất sao cách đọc kèo bóng đá của bạn.pg_start_backup
, cũng như thời gianpg_start_backup
Đã được chạy và tên của tệp WAL bắt đầu. Do đó, trong trường hợp nhầm lẫn, có thể nhìn vào bên trong tệp kết xuất sao cách đọc kèo bóng đá và xác định chính xác phiên sao cách đọc kèo bóng đá, 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 một bãi dự phòng 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_start_backup
hoặcpg_stop_backup
, và do đó bạn sẽ được để lại các thiết bị của riêng mình để theo dõi bản sao cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trữ liên tục ở trên.
Được rồi, điều tồi tệ nhất đã xảy ra và bạn cần phục hồi từ bản sao cách đọc kèo bóng đá của mình. Đây là thủ tục:
Dừng máy chủ, nếu nó đang chạy.
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. cách đọc kèo bóng đá ý 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_xlogSubdirectory, vì nó có thể chứa các bản ghi không được cách đọc kèo bóng đá trữ trước khi hệ thống đi xuống.
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à dưới các thư mục gốc của bất kỳ không gian bảng nào bạn đang sử dụng.
Khôi phục các tệp cơ sở dữ liệu từ bản sao cách đọc kèo bóng đá 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 gian 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 phục chính xác.
Xóa bất kỳ tệp nào có trongpg_xlog/; Chúng đến từ bản sao cách đọc kèo bóng đá hệ thống tệp và do đó có thể bị lỗi thời hơn là hiện tại.pg_xlog/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 đọc kèo bóng đá đó trước đây.
Nếu bạn có các tệp phân đoạn WAL không tồn tại mà bạn đã cách đọc kèo bóng đá trong bước 2, hãy sao chép chúng vàopg_xlog/. .
Tạo tệp lệnh Recoveryrecovery.confTrong thư mục dữ liệu cụm (xemChương 26). Bạn cũng có thể muốn sửa đổi tạm thờipg_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ự cách đọc kèo bóng đá đã thành công.
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 cách đọc kèo bóng đá trữ mà nó cần.recovery.confđếnrecovery.done(Để ngăn chặn chế độ phục hồi lại vô tình cách đọc kèo bóng đáo sau) và sau đó bắt đầu các hoạt động cơ sở dữ liệu thông thường.
Kiểm tra nội dung của cơ sở dữ liệu để đảm bảo bạn đã cách đọc kèo bóng đá 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 một tệp cấu hình khôi phục mô tả cách bạn muốn cách đọc kèo bóng đá và thời gian cách đọc kèo bóng đá sẽ chạy bao xa. Bạn có thể sử dụngrecovery.conf.sample(thường được đặt trong cài đặtchia sẻ/Thư mục) làm nguyên mẫu. Một điều mà bạn hoàn toàn phải chỉ định trongrecovery.conflàRESTORE_COMMAND, cho biếtPOSTGRESQLCách truy xuất các phân đoạn tệp WAL được cách đọc kèo bóng đá 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 để sao 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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trữ; Nó phải trả lại không khác nhau khi được hỏi.sigterm40869_41038
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 cách đọc kèo bóng đá ý 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 cách đọc kèo bóng đá trữ sẽ được tìm kiếm trongpg_xlog/; Điều này cho phép sử dụng các phân đoạn không cách đọc kèo bóng đá trữ gần đây.pg_xlog/.
Thông thường, cách đọc kèo bóng đá 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ự cách đọc kèo bóng đá bình thường sẽ kết thúc bằng một"Không tìm thấy tệp"Tin nhắn, văn bản chính xác của thông báo lỗi tùy thuộc cách đọc kèo bóng đáo 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 phục 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 cách đọc kèo bóng đá đơn giản;Phần 24.3.5để thảo luận.
42368_42522điểm dừnginrecovery.conf. Bạn có thể chỉ định điểm dừng, được gọi là"Mục tiêu khôi phục", theo ngày/giờ, được đặt tên là điểm khôi phục 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 phục đượ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.
cách đọc kèo bóng đá ý:Điểm dừng phải là sau thời gian kết thúc của bản sao cách đọc kèo bóng đá cơ sở, tức là, thời gian kết thúc của
pg_stop_backup
. Bạn không thể sử dụng bản sao cách đọc kèo bóng đá cơ sở để phục hồi đến thời điểm mà bản sao cách đọc kèo bóng đá đó đ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 cách đọc kèo bóng đá có thể được chạy lại ngay từ đầu, chỉ định A"Mục tiêu khôi phục"Trước khi tham nhũng để 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 cách đọc kèo bóng đá 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.
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 cách đọc kèo bóng đáo 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 cách đọc kèo bóng đáo 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 cách đọc kèo bóng đá 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 gian mà bạn đã từ bỏ trước đó.
mỗi khi tạo dòng thời gian mới,PostgreSQLTạo A"Lịch sử dòng thời gian"Tệ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 cách đọc kèo bóng đá 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 theo cùng một dòng thời gian hiện tại khi sao cách đọc kèo bóng đá cơ sở được thực hiện. Nếu bạn muốn khôi phục vào một số dòng thời gian của con (nghĩa là, bạn muốn quay lại một trạng thái nào đó được tạo sau khi thử phục hồi), bạn cần chỉ định ID dòng đích trongrecovery.conf. 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 cách đọc kèo bóng đá cơ sở.
Một số mẹo để cấu hình cách đọc kèo bóng đá trữ liên tục được đưa ra ở đây.
Có thể sử dụngPostgreSQLCác cơ sở sao cách đọc kèo bóng đá để sản xuất các bản sao cách đọc kèo bóng đá nóng độc lập. Đây là những bản sao cách đọc kèo bóng đá không thể được sử dụng để phục hồi thời gian, nhưng thường nhanh hơn nhiều để sao cách đọc kèo bóng đá 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 cách đọc kèo bóng đá cơ sở, cách dễ nhất để tạo ra một bản sao cách đọc kèo bóng đá 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ý giao dịch cần thiết để sử dụng bản sao cách đọc kèo bóng đá sẽ được bao gồm trong bản sao cách đọc kèo bóng đá tự động và không cần hành động đặc biệt nào để khôi phục bản sao cách đọc kèo bóng đá.
Nếu cần phải linh hoạt hơn trong việc sao chép các tệp sao cách đọc kèo bóng đá, một quy trình cấp thấp hơn cũng có thể được sử dụng cho các bản sao cách đọc kèo bóng đá nóng độc lập. Để chuẩn bị cho các bản sao cách đọc kèo bóng đá nóng độc lập cấp thấp, đã đặtWal_Levelđếncách đọc kèo bóng đá trữhoặc cao hơn,archive_modeđếntrên, và thiết lậpArchive_Commandchỉ thực hiện cách đọc kèo bóng đá trữ khi achuyển đổi tệptồn tại. Ví dụ:
ARCHIVE_COMMAND = 'TEST! -f/var/lib/pgsql/backup_in_protress ||
Lệnh này sẽ thực hiện cách đọc kèo bóng đá trữ khi/var/lib/pgsql/backup_in_protresstồn tại và nếu không thì âm thầm trả về trạng thái thoát không (cho phépPOSTGRESQLđể tái chế tệp wal không mong muốn).
Với sự chuẩn bị này, một bản sao cách đọc kèo bóng đá có thể được thực hiện bằng cách sử dụng một tập lệnh như sau:
Touch/Var/Lib/PGSQL/Backup_in_ProTHER
Tệp chuyển đổi/var/lib/pgsql/babđược tạo đầu tiên, cho phép cách đọc kèo bóng đá trữ các tệp WAL đã hoàn thành xảy ra. Sau khi sao cách đọc kèo bóng đá, tệp chuyển đổi được xóa.tarTệp. Vui lòng nhớ thêm xử lý lỗi vào tập lệnh sao cách đọc kèo bóng đá của bạn.
Nếu kích thước cách đọc kèo bóng đá trữ cách đọc kèo bóng đá trữ là một mối quan tâm, bạn có thể sử dụnggzipĐể nén các tệp cách đọc kèo bóng đá trữ:
archive_command = 'gzip < %p/var/lib/pgsql/archive/ %f'
Sau đó, bạn sẽ cần sử dụngGunzipTrong quá trình cách đọc kèo bóng đá:
restore_command = 'gunzip </mnt/server/archivingir/ %f %p'
Nhiều người chọn sử dụng tập lệnh để xác định của họArchive_Command, sao 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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trữ dữ liệu ngoài trang web
52010_52104
Giao thoa với phần mềm sao cách đọc kèo bóng đá 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 cách đọc kèo bóng đáostderrTừ 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.
Tại bài viết này, có một số hạn chế của kỹ thuật cách đọc kèo bóng đá 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:
Hoạt động trên các chỉ mục băm hiện không được Wal-logged, do đó, phát lại sẽ không cập nhật các chỉ mục này. Điều này có nghĩa là bất kỳ chèn mới nào sẽ bị bỏ qua bởi chỉ mục, các hàng được cập nhật rõ ràng sẽ biến mất và các hàng bị xóa vẫn sẽ giữ lại các con trỏ.ReindexMỗi chỉ mục như vậy sau khi hoàn thành thao tác khôi phục.
Nếu APostgreSQL: TàLệnh được thực thi trong khi sao cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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:Cá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 gian 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 cách đọc kèo bóng đá ý 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ợ cách đọc kèo bóng đá 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 29Trướ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 cách đọc kèo bóng đá 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 gian 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 đọc kèo bóng đá tăng các tham số khoảng thời gian kiểm tra nhiều như khả thi.