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
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

24.3. cách đọc kèo bóng đá và

Tại mọi lúc,PostgreSQLDuy trì AViết nhật ký trước(Wal) trongpg_xlog/thư mục con của cụm"Phát lại"Nhật ký

  • Chúng tôi không cần một bản sao cách đọc kèo bóng đá hệ thống tệp hoàn toàn nhất quántarhoặc a

  • Vì chúng ta có thể kết hợp một chuỗi dài vô hạn của Wal

  • Không cần thiết phải phát lại các mục WALcách đọc kèo bóng đá thời gian: Có thể

  • Nếu chúng ta liên tục cung cấp cho chuỗi các tệp WALChế độ chờ ấmHệ thống: AT

cách đọc kèo bóng đá ý: pg_dumpPG_DUMPALLKhông sản xuấtlogicvà không chứa

Như với kỹ thuật-hệ thống tệp đơn giản, phương pháp này

Để phục hồi thành công bằng cách sử dụng cách đọc kèo bóng đá (cũng"Sao cách đọc kèo bóng đá trực tuyến"bởi nhiều ngườitrướcBạn lấy cơ sở đầu tiên của mình

24.3.1. Thiết lập Wal

Theo nghĩa trừu tượng, chạyPostgreSQLHệ thống tạo ra vô thời hạnTệp phân đoạn,,PostgreSQL). Các tệp phân đoạn được đưa ra"Tái chế"chúng bằng cách đọc kèo bóng đá đổi tên không cần thiết

Khi cách đọc kèo bóng đá trữ dữ liệu Wal, chúng ta cần nắm bắt nội dung của"cách đọc kèo bóng đá: chúng ta có thể sao chép các tệp phân đoạn thành mộtPostgreSQLcố gắng không làm bất kỳPostgreSQLĐặtCPhoặc 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ặchot_standby),Archive_Modeđếntrên, và chỉ định lệnh shell choArchive_CommandTham số cấu hình. Trong thực tế, các cài đặt này sẽ luônPostgreSql.confTệp. TRONGArchive_Command, %Pđược thay thế bằng tên đường dẫn của tệp thành%Fchỉ được thay thế bởi%%Nếu bạn cần nhúng một thực tế%ký tự trong lệnh. Các

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%P%Ftham số đã được thay thế,

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

Lệnh cách đọc kèo bóng đá trữ sẽ được thực thi dưới quyền sở hữu củaPostgreSQLMáy chủ đang chạy như. Kể từ khi

Điều quan trọng là lệnh cách đọc kèo bóng đá trữ trả về khôngPostgreSQLsẽ giả định rằngPostgreSQLrằng tệp không được cách đọc kèo bóng đá trữ;

Lệnh cách đọc kèo bóng đá trữ thường được thiết kế để từ chối

Nên kiểm tra lệnh cách đọc kèo bóng đá trữ được đề xuất của bạnVà nó trả về không. Lệnh ví dụ ở trên cho UnixTestBướ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ự ít hơnCPSẽ trả về trạng thái 0 khi-iđược sử dụng và tệp đích đã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 những gì sẽpg_xlog/Thư mục sẽ tiếp tục điền vào các tệp phân đoạn Wal cho đến khipg_xlog/điền vào,PostgreSQLSẽ tắt máy hoảng loạn. KHÔNG

Tốc độ của lệnh cách đọc kèo bóng đá trữ không quan trọng miễn làpg_xlog/Thư mục sẽ

Khi viết lệnh cách đọc kèo bóng đá trữ của bạn, bạn nên cho rằng%P) Nhưng cần phải bảo tồn%F).

cách đọc kèo bóng đá ý rằng mặc dù việc cách đọc kèo bóng đá trữ Wal sẽ cho phép bạn khôi phụcPostgreSQLCơ sở dữ liệu, nó sẽ không khôi cách đọc kèo bóng đáPostgreSql.conf, pg_hba.confpg_ident.conf), vì chúng được chỉnh sửa thủ côngPhần 18.2cho cách đọc kèo bóng đá thức

Lệnh cách đọc kèo bóng đá trữ chỉ được gọi khi hoàn thành WalArchive_TimeoutĐể buộc máy chủ chuyển sang tệp phân đoạn Wal mới tạiarchive_timeout- Nó sẽ phình toArchive_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_xlogNếu bạn muốnBảng.

KhiWal_Leveltối thiểuMột số lệnh SQL được tối ưu hóa để tránhPhần 14.4.7. Nếu cách đọc kèo bóng đá trữWal_LevelChỉ có thể thay đổiArchive_Commandcó thể được thay đổi bằng mộ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.

24.3.2. Tạo một bản sao cách đọc kèo bóng đá cơ sở

Quy trình tạo bản sao cách đọc kèo bóng đá cơ sở tương đối

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

  2. 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à phát hành

    Chọn pg_start_backup ('nhãn');

    WHEREnhãnCó chuỗi nào bạnpg_start_backupTạ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

    Không quan trọng cơ sở dữ liệu nào trong cụm bạn

    Theo mặc định,pg_start_backupcó thể mất nhiều thời gian đểCheckPoint_Completion_Target).

    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 nhanh như

  3. Thực hiện sao cách đọc kèo bóng đá, sử dụng bất kỳ tiện lợi nàotarhoặcCPIO(khôngpg_dumphoặcpg_dumpall). Nó không cần thiết

  4. 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à vấn đề

    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

  5. 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 đá làpg_stop_backupkết quả là kết quả cuối cùngArchive_Modeđược bật,pg_stop_backupKhôngArchive_Command. TRONGpg_stop_backup, Đặt mộtstatement_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ảnh báo hoặc lỗi nếursyncTrả lại mã thoát riêng cho"Tệp nguồn đã biến mất"và bạn có thểtarTrả lại mã lỗi không thể phân biệt đượctarđã sao chép nó. May mắn thay, GNUtarPhiên bản 1.16 trở lên1Nếu một tệp được thay đổi2cho khác

Không cần thiết phải lo lắng về lượng thời gianpg_start_backupvà bắt đầu sao cách đọc kèo bóng đá thực tế, cũng như giữa cuốipg_stop_backup; Một vàifull_page_writesbị vô hiệu hóa, bạn có thể nhận thấy sự giảm hiệu suất giữapg_start_backuppg_stop_backup, kể từfull_page_writesđược thực hiện một cách đọc kèo bóng đá hiệu quả trong thời gian

Hãy chắc chắn rằng kết xuất dự phòng của bạn bao gồm tất cả các tệp/usr/local/pgsql/data). Nếu bạn đang sử dụng

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 bên trongpg_xlog/thư mục con.pg_xlog/là một liên kết biểu tượng chỉ

Để sử dụng bản sao cách đọc kèo bóng đá, bạn sẽ cần phải giữ tất cả các walpg_stop_backupHàm tạo raTệ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ữ0000000100001234000055CDTệp lịch sử sao cách đọc kèo bóng đá0000000100001234000055CD.007C9330.Backup. (The

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ópg_start_backup, cũng như bắt đầu và

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ữ

Cũng đáng chú ý làpg_start_backupHàm tạo một tệp có tênBackup_LabelTrong cụm cơ sở dữ liệupg_stop_backup. Tệp này tất nhiên sẽ làpg_start_backup, cũng như thời gianpg_start_backupđã được chạy và

cũng có thể tạo một bản sao cách đọc kèo bóng đá trong khi máy chủpg_start_backuphoặcpg_stop_backup, và do đó bạn sẽ

24.3.3. cách đọc kèo bóng đá bằng cách sử dụng liên tục

Được rồi, điều tồi tệ nhất đã xảy ra và bạn cần phải cách đọc kèo bóng đá từ

  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ộ cụmPG_XLOGSubdirectory, vì nó có thể chứa các bản ghi không

  3. Xóa tất cả các tệp và thư mục con hiện có theo

  4. 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.root!) Và với các quyền đúng. Nếu nhưPG_TBLSPC/was

  5. Xóa bất kỳ tệp nào có trongpg_xlog/; Chúng đến từ hệ thống tệppg_xlog/Sau đó, sau đó tạo lại nó với

  6. 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 đápg_xlog/. (Tốt nhất là sao chép chúng, không

  7. Tạo tệp lệnh Recoveryrecovery.confTrong thư mục dữ liệu cụmChương 26). Bạnpg_hba.confĐể ngăn người dùng thông thường khỏi

  8. Khởi động máy chủ. Máy chủ sẽ chuyển sang chế độ khôi cách đọc kèo bóng đárecovery.confđếnrecovery.done(để ngăn chặn vô tình

  9. Kiểm tra nội dung của cơ sở dữ liệu để đảm bảo bạn cópg_hba.confđến bình thường.

Phần quan trọng của tất cả điều này là thiết lập sự cách đọc kèo bóng đárecovery.conf.sample(thường là trongchia sẻ/Thư mục) như arecovery.confrestore_command, cho biếtPOSTGRESQLCách truy xuất cách đọc kèo bóng đá trữ walArchive_Command, Đây là chuỗi lệnh shell.%F, được thay thế%P, được thay thế bằng tên đường dẫn để sao chép%%Nếu bạn cần nhúng một thực tế%ký tự trong lệnh. Các

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ừ/mnt/server/archivingir. Của

Điều quan trọng là lệnh trả về trạng thái thoát khác khôngWillĐược gọi là yêu cầu tệp.Backuphoặc.History.%PĐường dẫn sẽ khác với%F; Đừng mong đợi họ sẽ

phân đoạn Wal không thể tìm thấy trong kho cách đọc kèo bóng đá trữ sẽpg_xlog/; Điều này cho phép sử dụngpg_xlog/. Hệ thống sẽ khôngpg_xlog/Khi truy xuất các tệp được cách đọc kèo bóng đá trữ.

Thông thường, cách đọc kèo bóng đá sẽ tiến hành thông qua tất cả các wal có sẵn"Không tìm thấy tệp"Tin nhắn, chính xácRESTORE_COMMAND. Bạn cũng có thể thấy một00000001.History. Cái nàyPhần 24.3.4để thảo luận.

Nếu bạn muốn cách đọc kèo bóng đá vào một thời điểm trước đó (giả sử,recovery.conf. Bạn có thể chỉ định điểm dừng,"Mục tiêu khôi cách đọc kèo bóng đá",,

cách đọc kèo bóng đá ý:Điểm dừng phải sau kết thúcpg_stop_backup. Bạn không thể sử dụng một cơ sở

Nếu khôi phục tìm thấy dữ liệu WAL bị hỏng, cách đọc kèo bóng đá sẽ dừng lại ở"Mục tiêu khôi cách đọc kèo bóng đá"Trước điểmpg_controltệp để chỉ ra rằng

24.3.4. Thời gian

Khả năng khôi cách đọc kèo bóng đá cơ sở dữ liệu về điểm trước đó trongthisLịch sử của cơ sở dữ liệ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ữAnyTrạng thái trước, bao gồm cả trạng thái

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ị cái nào

Hành vi cách đọc kèo bóng đá mặc định là cách đọc kèo bóng đá dọc theorecovery.conf. Bạn không thể cách đọc kèo bóng đá

24.3.5. Mẹo và ví dụ

Một số mẹo để cấu hình cách đọc kèo bóng đá được đưa ra

24.3.5.1. Sao cách đọc kèo bóng đá nóng độc lập

Có thể sử dụngPostgreSQLCác cơ sở sao cách đọc kèo bóng đá đểPG_DUMPbãi rác. (Họ cũng rất nhiềupg_dumpDumps,

Để chuẩn bị cho các bản sao cách đọc kèo bóng đá nóng độc lập, đặtWal_Levelđếncách đọc kèo bóng đá trữ(hoặchot_standby),Archive_Modeđếntrên,,Archive_CommandĐiều đóchuyển đổi tệptồn tại. Vì

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àPostgreSQLĐể tái chế

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

Touch/Var/Lib/PGSQL/Backup_in_ProTHER

Tệp chuyển đổi50635_50670được tạotarTệp. Vui lòng nhớ thêm lỗi

24.3.5.2. cách đọc kèo bóng đá trữ né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, hãy sử dụngpg_compresslog, http: //pglesslog.projects.postgresql.org, đếnfull_page_writesvà không gian theo dõi từ các tệp WAL. Sau đó bạn có thể sử dụnggzipđể nén thêmpg_compresslog:

Archive_Command = 'pg_compresslog %p - | gzip/var/lib/pgsql/archive/%f '

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

restore_command = 'gunzip </mnt/server/archivingir/%f | pg_decompresslog - %p '

24.3.5.3.Archive_CommandScripts

Nhiều người chọn sử dụng tập lệnh để xác định của họArchive_Command, sao cho họPostgreSql.confMục nhập rất

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

Sử dụng tệp tập lệnh riêng biệt được khuyến khích bất cứ khi nào bạnbashhoặcperl.

Ví dụ về các yêu cầu có thể được giải quyết trong một

  • 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

  • Các tệp WAL hàng loạt để chúng được chuyển mỗi

  • Giao thoa với bản sao cách đọc kèo bóng đá và phục hồi khác

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

Tip:Khi sử dụngArchive_Commandtập lệnh, mong muốnLogging_Collector.StderrTừ tập lệnh sau đó sẽ

24.3.6. Hãy cẩn thận

Tại bài viết này, có một số hạn chế của

  • Hoạt động trên các chỉ mục băm hiện không được Wal-Logged,ReindexMỗi chỉ mục như vậy sau khi

  • Nếu ATạolệnh được thực thi trong khi bản sao cách đọc kèo bóng đá cơ sở làTạo cơ sở dữ liệuđược sao chép được sửa đổi

  • TạoCác lệnh được ghi lại với nghĩa đen

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ó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 trangfull_page_writeslà trên. Trong lúc đó,