Làm cách nào để tăng sao lưu nhanh và khôi phục cơ sở dữ liệu 500GB bằng mysqldump?


10

Có một cơ sở dữ liệu Một kích thước 500GB. Các bảng trong cơ sở dữ liệu A chứa cả hai bảng MyISAM và INNODB. Các bảng MyISAM là các bảng chính và các bảng Innodb là các bảng giao dịch chính.

Sao lưu và khôi phục bằng cách sử dụng kết xuất mysql thoát khỏi một thời gian dài hoặc nhiều ngày.

  • max_allowed_packet = 1G
  • nước ngoài_key_checks = 0
  • auto_commit = tắt

1
Tôi chỉ muốn chắc chắn rằng bạn đang sử dụng --opt với tiện ích mysqldump. Đây là một trình tiết kiệm thời gian HUGE khi tải lại. không có nó mysqldump tạo ra hàng tệp sql theo hàng. --opt does: Thêm khóa, thả và tạo lại với tất cả các tùy chọn tạo được bật, tạm thời vô hiệu hóa các phím để tải lại nhanh chóng và sau đó bật lại các phím ở cuối để xây dựng lại các chỉ mục sau khi viết xong. Nó kết hợp một số hàng với nhau trong các phần chèn để giảm thời gian phân tích tệp VÀ phân tích cú pháp của mỗi câu lệnh (tới 70%) và cho phép --quick giảm tải chống lại DB đổ khi chạy. giảm 80% thời gian tải
ppostma1

Câu trả lời:


5

Nhưng liên kết cũng đề xuất XtraBackup từ Percona, nhanh hơn, không có khóa trên các bảng đã được sử dụng và không mất thời gian để khôi phục. Đối với 500GB dữ liệu, tôi thích Percona XtraBackup nhanh chóng và hiệu quả trừ khi bạn muốn chuyển đổi chúng thành mô hình innodb_file_per_table nếu không phải từ máy chủ DB hiện tại. Dưới đây liên kết giải thích về cách tiến hành.

http://www.percona.com/doc/percona-xtrabackup/innobackupex/creating_a_backup_ibk.html


1
Vấn đề với Percona Xtrabackup là mysqld cần phải dừng lại để khôi phục cơ sở dữ liệu.
dr_

2

Kiểm tra mydumper. Nó nhanh hơn nhiều so với mysqldump: Bản phát hành mydumper 0.6.1 mới cung cấp các tính năng hiệu suất và khả năng sử dụng

Bạn có thể tải xuống từ đây: https://github.com/maxbube/mydumper

Mydumper là gì? Tại sao?

  • Tính song song (do đó, tốc độ) và hiệu suất (tránh các thói quen chuyển đổi bộ ký tự đắt tiền, mã hiệu quả tổng thể)
  • Quản lý đầu ra dễ dàng hơn (các tệp riêng biệt cho bảng, kết xuất siêu dữ liệu, v.v., dễ xem / phân tích dữ liệu)
  • Tính nhất quán - duy trì ảnh chụp nhanh trên tất cả các luồng, cung cấp vị trí nhật ký chính và nô lệ chính xác, v.v.
  • Khả năng quản lý - hỗ trợ PCRE để chỉ định cơ sở dữ liệu và bảng bao gồm và loại trừ

1

Tôi nghĩ rằng câu hỏi là làm thế nào để khôi phục nhanh hơn từ các tệp kết xuất bị lỗi của mysqldump và không phải là một giải pháp sao lưu khác.

Một trong những cách, bạn có thể làm điều này là bằng cách tạo các nhóm bảng trong lược đồ của bạn và tạo một người dùng DB riêng cho mỗi nhóm và sử dụng quyền của MySQL để không cho phép các bảng được chèn vào để sử dụng tất cả trừ một người dùng DB.

Đây là một kỹ thuật đã được chứng minh, nhanh chóng, gần như song song nhưng không chắc chắn 100% sẽ mất bao lâu để khôi phục từ 500G. Nhưng imho, bạn cần một cái gì đó song song. Xem liên kết dưới đây cho một ví dụ.

Khôi phục nhanh, song song từ các bãi chứa SQL (mysqldump) cho MySQL


1

Hãy thử những điều sau với innobackupex:

innobackupex --parallel=7 --rsync  /var/mysql/backup

Bạn có thể thay đổi số quá trình song song như bạn muốn. Vì bạn đã đề cập rằng bạn có các bảng myisam, tham số "rsync" sẽ giúp tăng tốc độ sao lưu của các bảng đó.

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.