Mysqldump từ cơ sở dữ liệu sản xuất, mỗi sáng


7

Db của chúng tôi có kích thước khoảng 2GB. Chúng tôi chạy một công việc theo lịch trình vào lúc 3 giờ sáng mỗi ngày, khi lưu lượng truy cập khá thấp, nơi chúng tôi xuất toàn bộ db và thoát khỏi trang web.

Có phải thực tế xấu khi làm điều này trên một db sản xuất? Nhật ký truy vấn chậm luôn phát triển với 10 truy vấn hoặc hơn khi thực hiện việc này. Bảng mở / mở cũng phát triển một chút.

Vì vậy, đây không phải là một chiến lược sao lưu tốt? Một thay thế tốt / tiêu chuẩn cho điều này là gì? Nó thậm chí còn xấu cho db bằng cách nào đó?

Cảm ơn.

BIÊN TẬP

Chúng tôi đang ở trên Linode 4096 trong đó DB là thứ duy nhất chạy trên máy chủ đó. Nó có SSD nhưng không đẳng cấp thế giới. Chúng tôi đang sử dụng 2GB bộ nhớ 4GB cho innodb_buffer_pool. Lệnh này như sau:

mysqldump --opt --u USER -pPASSWORD DATABASE | gzip > /path/to/database.sql.gz

InnoDB hoặc myisam-bảng? Hiển thị lệnh mysqldump của bạn. Mô tả phần cứng của bạn (đĩa nhanh? Bộ nhớ đủ?)
da_didi

Xem chỉnh sửa trong câu hỏi trên
Adergaard

Có phải tất cả các bảng innodb?
da_didi

vâng, tất cả các bảng innodb
Adergaard 8/12/14

Câu trả lời:


8

vì kích thước cơ sở dữ liệu lớn, bạn nên tạo lệnh dump như sau:

mysqldump -u USER -p --single-transaction --quick --lock-tables=false --all-databases (or) DATABASE | gzip > OUTPUT.gz

--quick: Tùy chọn này hữu ích cho việc đổ các bảng lớn. Nó buộc mysqldumpphải truy xuất các hàng cho một bảng từ máy chủ một hàng thay vì truy xuất toàn bộ tập hợp hàng và đệm vào bộ nhớ trước khi ghi ra

--single-transaction: Tùy chọn này đặt chế độ cách ly giao dịch thành REPEATABLE READ và gửi SQLcâu lệnh START TRANSACTION đến máy chủ trước khi đổ dữ liệu. Nó chỉ hữu ích với các bảng giao dịch như InnoDB, bởi vì sau đó nó sẽ loại bỏ trạng thái nhất quán của cơ sở dữ liệu tại thời điểm khi START TRANSACTION được ban hành mà không chặn bất kỳ ứng dụng nào.

--lock-tables=false: tùy chọn dừng MyISAMcác bảng (nếu chúng thoát) bị khóa trong quá trình sao lưu.


1

Bạn nên sửa đổi lệnh mysqldump và sử dụng --single-transaction. Tất cả các thay đổi mới đối với cơ sở dữ liệu được lưu trữ trong một giao dịch và bạn có bản sao lưu cơ sở dữ liệu tại thời điểm hợp lệ.

Tôi có hai bước: Tôi xuất cơ sở dữ liệu dưới dạng kết xuất và bước tiếp theo là nén zip kết xuất, nhưng tôi chưa bao giờ kiểm tra nếu điều này tạo ra bất kỳ sự khác biệt nào.

Bạn có thể sử dụng các phần mềm sao lưu khác như Percona xtrabackup

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.