Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản cách đọc kèo bóng đá triển:18 / 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
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ại8571_8652

52.4. Giao thức cách đọc kèo bóng đá phát trực tuyến

Để bắt đầu cách đọc kèo bóng đá phát trực tuyến, Frontend gửicách đọc kèo bóng đátham số trong thông báo khởi động. Giá trị boolean củaTRUE(hoặctrên, , 110157_10325

PassingCơ sở dữ liệulà giá trị chocách đọc kèo bóng đáTham số hướng dẫn phần phụ trợ đi vào chế độ Walsender cách đọc kèo bóng đá logic, kết nối với cơ sở dữ liệu được chỉ định trongdbname10599_10734

Trong chế độ cách đọc kèo bóng đá vật lý hoặc cách đọc kèo bóng đá logic, chỉ có thể sử dụng giao thức truy vấn đơn giản.

Với mục đích kiểm tra các lệnh cách đọc kèo bóng đá, bạn có thể tạo kết nối cách đọc kèo bóng đá quaPSQLhoặc bất kỳ ai kháclibpqCông cụ sử dụng với chuỗi kết nối bao gồmcách đọc kèo bóng đáTùy chọn, ví dụ:

11181_11250

Tuy nhiên, việc sử dụng thường hữu ích hơn11395_11410(để cách đọc kèo bóng đá vật lý) hoặcpg_recvlogical(để cách đọc kèo bóng đá logic).

Các lệnh cách đọc kèo bóng đá được ghi vào nhật ký máy chủ khilog_replication_commandsđược bật.

Các lệnh được chấp nhận trong chế độ cách đọc kèo bóng đá là:

INEMENT_SYstem

12127_12242

SystemID(Text)

Định danh hệ thống duy nhất xác định cụm. Điều này có thể được sử dụng để kiểm tra xem bản cách đọc kèo bóng đá lưu cơ sở được sử dụng để khởi tạo dự phòng đến từ cùng một cụm.

Dòng thời gian(INT4)

ID dòng thời gian hiện tại. Cũng hữu ích để kiểm tra xem chế độ chờ có phù hợp với chủ không.

XLOGPOS(Text)

Vị trí Flush WAL hiện tại. Hữu ích để có được một vị trí đã biết trong nhật ký ghi lại nơi cách đọc kèo bóng đá có thể bắt đầu.

dbname(Text)

cơ sở dữ liệu được kết nối với hoặc null.

show tên

Yêu cầu máy chủ gửi cài đặt hiện tại của tham số thời gian chạy. Điều này tương tự như lệnh sqlshow.

tên

Tên của tham số thời gian chạy. Các tham số có sẵn được ghi lại trongChương 19.

Timeline_history TLI

Yêu cầu máy chủ gửi qua tệp lịch sử dòng thời gian cho dòng thời gianTLI. Máy chủ trả lời với một tập hợp kết quả của một hàng, chứa hai trường. Trong khi các trường được dán nhãn làTextbytea, họ trả lại hiệu quả các byte thô, không có chuyển đổi thoát hoặc mã hóa:

FileName(Text)

Tên tệp của Tệp Lịch sử Dòng thời gian, ví dụ:00000002.history.

Nội dung(bytea)

Nội dung của Tệp Lịch sử Dòng thời gian.

created_replication_slot slot_name[tạm thời]Vật lý[dự trữ_wal] |logic output_plugin[export_snapshot | NoExport_SnapShot | use_snapshot]

Tạo khe cách đọc kèo bóng đá vật lý hoặc logic. Nhìn thấyPhần 26.2.6Để biết thêm về các khe cách đọc kèo bóng đá.

slot_name

Tên của khe để tạo. Phải là một tên khe cách đọc kèo bóng đá hợp lệ (xemPhần 26.2.6.1).

output_plugin

Tên của plugin đầu ra được sử dụng để giải mã logic (xemPhần 48.6).

tạm thời

Chỉ định rằng khe cách đọc kèo bóng đá này là một điểm tạm thời. Các khe tạm thời không được lưu vào đĩa và tự động bị loại bỏ hoặc khi phiên kết thúc.

dự trữ_wal

Chỉ định rằng dự trữ khe cách đọc kèo bóng đá vật lý nàyWalNgay lập tức. Nếu không thì,Walchỉ được bảo lưu khi kết nối từ máy khách cách đọc kèo bóng đá phát trực tuyến.

export_snapshot
NoExport_Snapshot
use_snapshot

Quyết định phải làm gì với ảnh chụp nhanh được tạo trong quá trình khởi tạo khe logic.export_snapshot, là mặc định, sẽ xuất hình ảnh chụp nhanh để sử dụng trong các phiên khác. Tùy chọn này không thể được sử dụng bên trong một giao dịch.use_snapshotsẽ sử dụng ảnh chụp nhanh cho giao dịch hiện tại thực hiện lệnh. Tùy chọn này phải được sử dụng trong một giao dịch vàcreate_Replication_Slotphải là lệnh đầu tiên chạy trong giao dịch đó. Cuối cùng,NoExport_SnapShotSẽ chỉ sử dụng ảnh chụp nhanh để giải mã logic như bình thường nhưng sẽ không làm gì khác với nó.

Đáp lại lệnh này, máy chủ sẽ gửi tập kết quả một hàng chứa các trường sau:

slot_name(Text)

Tên của khe cách đọc kèo bóng đá mới được tạo ra.

FORTENT_POINT(Text)

Vị trí Wal mà tại đó khe trở nên nhất quán. Đây là vị trí sớm nhất mà phát trực tuyến có thể bắt đầu trên khe cách đọc kèo bóng đá này.

snapshot_name(Text)

Định danh của ảnh chụp nhanh được xuất bởi lệnh. Ảnh chụp có hiệu lực cho đến khi một lệnh mới được thực thi trên kết nối này hoặc kết nối cách đọc kèo bóng đá được đóng. Null nếu khe được tạo là vật lý.

output_plugin(Text)

Tên của plugin đầu ra được sử dụng bởi khe cách đọc kèo bóng đá mới được tạo. Null nếu khe được tạo là vật lý.

start_Replication[khe slot_name] [Vật lý]xxx/xxx[Dòng thời gian TLI]

Hướng dẫn máy chủ bắt đầu cách đọc kèo bóng đá WAL, bắt đầu tại vị trí Walxxx/xxx. Nếu nhưDòng thời gianTùy chọn được chỉ định, cách đọc kèo bóng đá bắt đầu trên dòng thời giantli; Mặt khác, dòng thời gian hiện tại của máy chủ được chọn. Máy chủ có thể trả lời với một lỗi, ví dụ nếu phần được yêu cầu của WAL đã được tái chế. Khi thành công, máy chủ phản hồi bằng một thông báo copybothresponse, và sau đó bắt đầu cách đọc kèo bóng đá tiếp trên frontend.

Nếu tên của khe được cung cấp quaslot_name, nó sẽ được cập nhật khi tiến trình cách đọc kèo bóng đá để máy chủ biết phân đoạn wal nào và nếuhot_standby_feedbacklà trên đó các giao dịch, vẫn cần thiết bởi dự phòng.

Nếu máy khách yêu cầu một dòng thời gian không phải là mới nhất nhưng là một phần của lịch sử của máy chủ, máy chủ sẽ truyền tất cả Dòng trên dòng thời gian đó bắt đầu từ việc bắt đầu được yêu cầu chỉ đến điểm mà máy chủ chuyển sang dòng thời gian khác. Nếu máy khách yêu cầu phát trực tuyến chính xác vào cuối dòng thời gian cũ, máy chủ sẽ trả lời ngay với CommandComplete mà không cần vào chế độ cách đọc kèo bóng đá.

Sau khi phát trực tuyến tất cả các dòng thời gian không phải là cái mới nhất, máy chủ sẽ kết thúc phát trực tuyến bằng cách thoát khỏi chế độ cách đọc kèo bóng đá. Khi máy khách thừa nhận điều này bằng cách thoát khỏi chế độ cách đọc kèo bóng đá, máy chủ sẽ gửi một tập kết quả với một hàng và hai cột, cho biết dòng thời gian tiếp theo trong lịch sử của máy chủ này. Cột đầu tiên là ID dòng thời gian tiếp theo (loạiINT8) và cột thứ hai là vị trí WAL nơi công tắc xảy ra (loạiText). Thông thường, vị trí chuyển đổi là kết thúc của Wal đã được cách đọc kèo bóng đá, nhưng có những trường hợp góc trong đó máy chủ có thể gửi một số Wal từ dòng thời gian cũ mà nó không được phát lại trước khi quảng cáo. Cuối cùng, máy chủ gửi tin nhắn CommandComplete và sẵn sàng chấp nhận lệnh mới.

Dữ liệu Wal được gửi dưới dạng một loạt các tin nhắn copyData. .

xlogdata (b)
byte1 ('w')

Xác định thông báo là Dữ liệu WAL.

int64

Điểm bắt đầu của dữ liệu WAL trong thông báo này.

int64

Kết thúc hiện tại của Wal trên máy chủ.

int64

Đồng hồ hệ thống của máy chủ tại thời điểm truyền, dưới dạng micro giây kể từ nửa đêm ngày 2000-01-01.

byten

Một phần của luồng dữ liệu Wal.

Một bản ghi WAL duy nhất không bao giờ được chia trên hai tin nhắn XLogData. Khi một bản ghi WAL vượt qua ranh giới trang Wal và do đó đã được chia bằng cách sử dụng các bản ghi tiếp tục, nó có thể được chia ở ranh giới trang. Nói cách khác, bản ghi WAL chính đầu tiên và các bản ghi tiếp tục của nó có thể được gửi trong các tin nhắn XLogData khác nhau.

Thông báo giữ chính (b)
byte1 ('k')

25137_25184

int64

Đầu hiện tại của Wal trên máy chủ.

int64

Đồng hồ hệ thống của máy chủ tại thời điểm truyền, dưới dạng micro giây kể từ nửa đêm trên 2000-01-01.

byte1

1 có nghĩa là khách hàng nên trả lời tin nhắn này càng sớm càng tốt, để tránh mất thời gian chờ. 0 nếu không.

Quá trình nhận có thể gửi trả lời lại cho người gửi bất cứ lúc nào, sử dụng một trong các định dạng tin nhắn sau (cũng trong tải trọng của tin nhắn copyData):

Cập nhật trạng thái dự phòng (f)
byte1 ('r')

Xác định thông báo là cập nhật trạng thái người nhận.

int64

Vị trí của wal byte cuối cùng + 1 nhận và ghi vào đĩa trong chế độ chờ.

int64

Vị trí của wal byte cuối cùng + 1 được chuyển vào đĩa ở chế độ chờ.

int64

Vị trí của wal byte cuối cùng + 1 được áp dụng trong chế độ chờ.

int64

Đồng hồ hệ thống của khách hàng tại thời điểm truyền, dưới dạng micro giây kể từ nửa đêm trên 2000-01-01.

byte1

Nếu 1, máy khách yêu cầu máy chủ trả lời tin nhắn này ngay lập tức. Điều này có thể được sử dụng để ping máy chủ, để kiểm tra xem kết nối có còn lành mạnh không.

Thông báo phản hồi dự phòng nóng (F)
byte1 ('h')

Xác định thông báo là thông báo phản hồi dự phòng nóng.

int64

Đồng hồ hệ thống của khách hàng tại thời điểm truyền, dưới dạng micro giây kể từ nửa đêm trên 2000-01-01.

INT32

XMIN toàn cầu hiện tại của chế độ chờ, không bao gồm Catalog_xmin từ bất kỳ khe cách đọc kèo bóng đá nào. Nếu cả giá trị này và catalog_xmin sau đây là 0 thì điều này được coi là một thông báo rằng phản hồi dự phòng nóng sẽ không còn được gửi trên kết nối này. Các tin nhắn không khác nhau sau này có thể tái cấu trúc cơ chế phản hồi.

INT32

Epoch của xmin xid toàn cầu trên chế độ chờ.

INT32

Catalog_xmin thấp nhất của bất kỳ vị trí cách đọc kèo bóng đá nào trên chế độ chờ. Được đặt thành 0 nếu không có catalog_xmin tồn tại ở chế độ chờ hoặc nếu phản hồi dự phòng nóng bị vô hiệu hóa.

INT32

Epoch của catalog_xmin xid trên chế độ chờ.

start_Replication slot slot_name logic xxx/xxx[(29968_29981[Tùy chọn_Value] [, ...])]

Hướng dẫn máy chủ bắt đầu phát trực tuyến WAL để cách đọc kèo bóng đá logic, bắt đầu tại vị trí Walxxx/xxx30236_30454

Các tin nhắn bên trong các tin nhắn copybothresponse có cùng định dạng được ghi lại choStart_Replication ... Vật lý.

Plugin đầu ra được liên kết với khe đã chọn được sử dụng để xử lý đầu ra để cách đọc kèo bóng đá.

Slot slot_name

Tên của khe cắm để truyền thay đổi từ. Tham số này được yêu cầu và phải tương ứng với một khe cách đọc kèo bóng đá logic hiện có được tạo bằngcreated_replication_slotinlogicchế độ.

xxx/xxx

Vị trí Wal để bắt đầu cách đọc kèo bóng đá tại.

Tùy chọn_NAME

31566_31647Phần 52.5Đối với các tùy chọn được chấp nhận bởi tiêu chuẩn (PGoutput) Plugin.

Tùy chọn_Value

Giá trị tùy chọn, dưới dạng hằng số chuỗi, được liên kết với tùy chọn được chỉ định.

drop_Replication_Slot slot_name[chờ]

Thả một khe cách đọc kèo bóng đá, giải phóng mọi tài nguyên phía máy chủ dành riêng. Nếu khe là một khe logic được tạo trong cơ sở dữ liệu không phải là cơ sở dữ liệu, walsender được kết nối, lệnh này sẽ không thành công.

slot_name

Tên của khe cắm.

chờ

33084_33226

base_backup[nhãn 'Nhãn'] [Tiến trình] [Fast] [Wal] [Nowait] [MAX_RATE Rate] [TablePace_Map] [Noverify_checksums]

Hướng dẫn máy chủ bắt đầu phát trực tuyến bản cách đọc kèo bóng đá lưu cơ sở. Hệ thống sẽ tự động được đặt ở chế độ cách đọc kèo bóng đá lưu trước khi bản cách đọc kèo bóng đá lưu được bắt đầu và được lấy ra khỏi nó khi bản cách đọc kèo bóng đá lưu hoàn tất. Các tùy chọn sau được chấp nhận:

nhãn 'Nhãn'

Đặt nhãn của bản cách đọc kèo bóng đá lưu. Nếu không được chỉ định, nhãn cách đọc kèo bóng đá lưu củacách đọc kèo bóng đá lưu cơ sởsẽ được sử dụng. Các quy tắc trích dẫn cho nhãn giống như chuỗi SQL tiêu chuẩn vớiStandard_Conforming_StringsBật.

Tiến trình

34846_35459

Fast

Yêu cầu điểm kiểm tra nhanh.

Wal

Bao gồm các phân đoạn Wal cần thiết trong bản cách đọc kèo bóng đá lưu. Điều này sẽ bao gồm tất cả các tệp giữa bắt đầu và dừng cách đọc kèo bóng đá lưu trongPG_WALThư mục của thư mục cơ sở Tệp TAR.

nowait

Theo mặc định, bản cách đọc kèo bóng đá lưu sẽ đợi cho đến khi phân đoạn Wal được yêu cầu cuối cùng được lưu trữ hoặc phát ra cảnh báo nếu lưu trữ nhật ký không được bật. Chỉ địnhnowaitVô hiệu hóa cả chờ và cảnh báo, khiến máy khách chịu trách nhiệm đảm bảo nhật ký cần thiết.

MAX_RATE Rate

36587_36958

Tablespace_Map

Bao gồm thông tin về các liên kết tượng trưng có trong thư mụcPG_TBLSPCTrong một tệp có tênTablePace_Map. Tệp bản đồ không gian bảng bao gồm mỗi tên liên kết tượng trưng vì nó tồn tại trong thư mụcPG_TBLSPC/và đường dẫn đầy đủ của liên kết tượng trưng đó.

NOVERIFY_CHECKSUMS

Theo mặc định, tổng kiểm tra được xác minh trong quá trình cách đọc kèo bóng đá lưu cơ sở nếu chúng được bật. Chỉ địnhNoverify_checksumsVô hiệu hóa xác minh này.

37820_37948

Tập kết quả thông thường đầu tiên chứa vị trí bắt đầu của bản cách đọc kèo bóng đá lưu, trong một hàng duy nhất với hai cột. Cột đầu tiên chứa vị trí bắt đầu được đưa ra ở định dạng XLOGRECPTR và cột thứ hai chứa ID dòng thời gian tương ứng.

Bộ kết quả thông thường thứ hai có một hàng cho mỗi không gian bảng. Các trường trong hàng này là:

spcoid(oid)

oid của không gian bảng hoặc null nếu đó là thư mục cơ sở.

spclocation(Text)

Đường dẫn đầy đủ của thư mục bảng không gian hoặc null nếu đó là thư mục cơ sở.

size(INT8)

Kích thước gần đúng của không gian bảng, nếu báo cáo tiến độ đã được yêu cầu; Nếu không thì đó là NULL.

39191_39359PG_DEFAULTpg_global. Dữ liệu trong kết quả bản quyền sẽ là định dạng TAR (theoĐịnh dạng trao đổi Ustar39594_39922

Lưu trữ tar cho thư mục dữ liệu và mỗi không gian bảng sẽ chứa tất cả các tệp trong thư mục, bất kể chúng có phải làPostgreSQLTệp hoặc các tệp khác được thêm vào cùng một thư mục. Các tệp được loại trừ duy nhất là:

  • Postmaster.pid

  • Postmaster.opts

  • pg_iNternal.init(tìm thấy trong nhiều thư mục)

  • Các tệp và thư mục tạm thời khác nhau được tạo trong quá trình hoạt động của máy chủ PostgreSQL, chẳng hạn như bất kỳ tệp hoặc thư mục nào bắt đầu bằngPGSQL_TMPvà quan hệ tạm thời.

  • 41176_41295

  • PG_WAL, bao gồm cả thư mục con. Nếu cách đọc kèo bóng đá lưu được chạy với các tệp WAL bao gồm, phiên bản tổng hợp củaPG_WALsẽ được bao gồm, nhưng nó sẽ chỉ chứa các tệp cần thiết để bản cách đọc kèo bóng đá lưu hoạt động, chứ không phải phần còn lại của nội dung.

  • pg_dynshmem, pg_notify, PG_Replot, pg_serial, pg_snapshots, PG_STAT_TMPpg_subtrans42089_42158

  • Các tệp khác ngoài các tệp và thư mục thông thường, chẳng hạn như các liên kết tượng trưng (trừ các thư mục được liệt kê ở trên) và các tệp thiết bị đặc biệt, được bỏ qua. (Liên kết tượng trưng trongPG_TBLSPC​​được duy trì.)

Chế độ chủ sở hữu, nhóm và tệp được đặt nếu hệ thống tệp cơ bản trên máy chủ hỗ trợ nó.