Nhân rộng đã thất bại; Làm thế nào để có được một lần nữa?


10

Tôi đang chạy Postgres 9.1.6 trên Ubuntu và tôi có thiết lập sao chép trực tuyến giữa chủ và nô lệ. Mọi thứ đã hoạt động trơn tru cho đến khi cơ sở dữ liệu bị sập và chúng tôi phải khởi động lại cả hai hộp.

Bây giờ, sao chép đã dừng và khi kiểm tra nhật ký trên cả hai hộp, tôi thấy thông báo này:

CDT FATAL: phân đoạn WAL yêu cầu 0000000100000224000000FA đã bị xóa

Đó là cùng một phân khúc nhiều lần. Từ Google của tôi, có vẻ như máy chủ sao chép đang cố truy xuất phân đoạn này từ chủ, nhưng nó không còn ở đó nữa. Ok, nhưng làm thế nào để có được điều này? Tôi có cần tạo một bản sao lưu mới và rsync cho nô lệ không? Có một cách dễ dàng để đưa nô lệ trở lại đồng bộ?

Câu trả lời:


7

Có, bạn sẽ phải cung cấp cho nô lệ một bản sao lưu cơ sở mới (để sao chép phát trực tuyến chỉ các bước từ 1 đến 4) của bản gốc.

Vấn đề của bạn có thể đã xảy ra vì giá trị của wal_keep_segments là thấp. Giá trị cần phải đủ cao để khi nô lệ ngừng hoạt động trong một thời gian, chủ nhân sẽ không bắt đầu tái chế các phân đoạn mà nô lệ chưa xử lý.


1

Vui lòng xác minh rằng các WAL yêu cầu nằm ở vị trí mà bạn đang khôi phục để khôi phục ban đầu trước khi kết nối nô lệ với máy chủ chính trong chế độ truyền phát

Vấn đề của bạn có thể xảy ra khi một đoạn doe snot tồn tại ở vị trí mà bạn đang khôi phục để phục hồi ban đầu.

Nếu mọi thứ đều ổn trong trường hợp này, thì bạn nên kiểm tra restore_command trong recovery.conf.


0

một công việc khác là thực hiện wal backup_push từ chính và ngay lập tức thực hiện backip_fetch từ chế độ chờ và bắt đầu chế độ chờ.


2
Vui lòng mở rộng lý do tại sao quá trình này hoạt động
RolandoMySQLDBA
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.