Tôi đã cấu hình cron để gọi pg_dump hàng ngày bằng cách sử dụng quy tắc sau:
# xyz database backups:
00 01 * * * root umask 077 && pg_dump --user=xyz_system xyz | gzip > /var/xyz/backup/db/xyz/`date -u +\%Y\%m\%dT\%H\%M\%S`.gz
Về cơ bản, nó hoạt động. Cơ sở dữ liệu phát triển tương đối nhanh và theo cấp số nhân (tuy nhiên số mũ không lớn lắm). Hiện tại bãi chứa gzipped mất khoảng 160MB. Khi cơ sở dữ liệu bị đổ, hệ thống bắt đầu thu thập dữ liệu. Tải trung bình tôi thấy bằng cách sử dụng top
lệnh là về 200, 200, 180
. Về cơ bản máy chủ hầu như không đáp ứng.
Câu hỏi đầu tiên là làm thế nào để xác định nơi tắc nghẽn. Là hiệu suất kém gây ra bởi các hoạt động I / O nặng? Có phải do vấn đề khóa bảng? Có lẽ đó là một vấn đề bộ nhớ? Đầu ra của pg_dump
lệnh được dẫn đến gzip
lệnh. Là nó tuần tự, tức là toàn bộ kết xuất được đặt trong bộ nhớ (vấn đề hoán đổi?) Và sau đó được nén hoặc đồng thời (tức là gzip nén những gì nó nhận được và chờ thêm)? Nó có thể được gây ra bởi một số yếu tố khác?
Câu hỏi thứ hai là làm thế nào để làm cho hoạt động bán phá giá ít xâm phạm hơn đối với các chức năng chính của hệ thống. Theo như tôi hiểu, việc kết xuất không thể mất quá nhiều thời gian vì tính toàn vẹn của cơ sở dữ liệu. Có khóa ghi bảng, v.v. Tôi có thể làm gì để hạn chế các vấn đề (hoặc trì hoãn nó, xem xét tăng trưởng cơ sở dữ liệu).
Câu hỏi thứ ba : Đã đến lúc tìm hiểu về các cấu hình cơ sở dữ liệu nâng cao hơn chưa? Hệ thống hoạt động tốt, khi sao lưu cơ sở dữ liệu không được thực hiện, nhưng có lẽ sự cố đổ db là triệu chứng đầu tiên của các sự cố đến?
pg_dump
CPU 100% và đó là từ gzip. Chỉ định đãpg_dump --compress=0
giải quyết nó cho tôi trên Ubuntu 16.04. Sao lưu cũng siêu nhanh sau đó. Coi chừng nén gzip trong container; có thể không làm những gì bạn mong đợi.