Postgresql 9.0.23 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Chương 24. | Tiếp theo |
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_dumpvàPG_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
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%Pvà%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.confvàpg_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_xlog
Nếu bạn muốnBảng.
KhiWal_Levellàtố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.
Quy trình tạo bản sao cách đọc kèo bóng đá cơ sở tương đối
Đả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à phát hành
Chọn pg_start_backup ('nhãn');
WHEREnhãnCó chuỗi nào bạnpg_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
Không quan trọng cơ sở dữ liệu nào trong cụm bạn
Theo mặc định,pg_start_backup
có 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ư
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
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
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_backup
kết quả là kết quả cuối cùngArchive_Modeđược bật,pg_stop_backup
Khô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_backup
và 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_backup
vàpg_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_backup
Hà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_backup
Hà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_backup
hoặcpg_stop_backup
, và do đó bạn sẽ
Đượ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ừ
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ộ cụmPG_XLOGSubdirectory, vì nó có thể chứa các bản ghi không
Xóa tất cả các tệp và thư mục con hiện có theo
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
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
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
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
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
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.conflàrestore_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úc
pg_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
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 đá
Một số mẹo để cấu hình cách đọc kèo bóng đá được đưa ra
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
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ụngGunzipvàpg_decompresslogTrong quá trình cách đọc kèo bóng đá:
restore_command = 'gunzip </mnt/server/archivingir/%f | pg_decompresslog - %p '
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ẽ
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 đó,