Cách được đề xuất để sao lưu cơ sở dữ liệu MySQL / Amazon RDS sang S3 là gì?


31

Tôi có hai mục đích cho việc này:

  1. Để có bản sao lưu ngoại vi trong trường hợp có vấn đề trên toàn khu vực với Dịch vụ web của Amazon.
  2. Để sao chép dữ liệu sản xuất từ ​​tài khoản thanh toán sản xuất sang tài khoản thanh toán beta.

Hiện tại, có vẻ như Amazon không hỗ trợ một trong hai trường hợp sử dụng này.

Tôi đã thấy mysqldump và xtrabackup (xem bài mẫu ) được đề cập.

Tôi cũng đã thấy một quá trình phức tạp hơn (tài liệu ở đây )

  1. Một máy chủ RDS mới trong tài khoản thanh toán nguồn (prod) sẽ xuất hiện một bản sao lưu gần đây.
  2. Một phiên bản EC2 mới được tạo ra có quyền truy cập vào máy chủ RDS trong bước 1.
  3. mysqldump được sử dụng để tạo bản sao lưu cơ sở dữ liệu này.
  4. Sao lưu được sao chép vào một vị trí ngoại vi (S3?).
  5. Trong một tài khoản và / hoặc khu vực riêng biệt, một máy chủ RDS mới sẽ xuất hiện.
  6. Cơ sở dữ liệu kết xuất được nhập khẩu.

Lời khuyên và đề xuất được đánh giá cao.

Câu trả lời:


22

Cách được đề xuất để sao lưu RDS là sao lưu tự độngảnh chụp nhanh DB . Ảnh chụp nhanh DB về cơ bản giống như ảnh chụp nhanh EBS, được lưu trữ trong S3 phía sau hậu trường, nhưng chỉ khả dụng trong cùng một khu vực.

Nếu bạn cần khả năng chịu lỗi xuyên khu vực (kế hoạch tốt!), Không có cách nào để khôi phục dữ liệu của bạn ở khu vực khác mà không thực hiện "cách khó" từ mysqldump. Các lựa chọn thay thế của bạn là sao lưu bằng mysqldump (chậm và khủng khiếp cho bất kỳ tập dữ liệu có kích thước hợp lý nào) hoặc thiết lập nô lệ dựa trên EC2 của bạn ở một khu vực khác và sao lưu bằng bất kỳ phương pháp có sẵn nào (xtrabackup, ảnh chụp nhanh EBS, v.v.). Tuy nhiên, sau đó bạn quay lại quản lý các phiên bản MySQL của riêng bạn, vì vậy bạn cũng có thể từ bỏ RDS hoàn toàn.

Đối với tiền của tôi, RDS hoàn toàn không có lợi ích theo bất kỳ cách nào và rất nhiều nhược điểm về hiệu suất, tính linh hoạt và độ tin cậy. Tôi sẽ tự hỏi RDS cung cấp giá trị gì cho bạn.


Đối với nhu cầu hiện tại của tôi, mysqldump có thể hoạt động tốt. Tôi không mong đợi các bộ dữ liệu lớn và tôi thường không cần dữ liệu di chuyển quá nhanh. Tôi hy vọng rằng RDS sẽ hỗ trợ một tính năng để khởi động một máy chủ mới khỏi một ảnh chụp nhanh trong một tài khoản khác. Một tính năng hữu ích khác là nhập / xuất các ảnh chụp nhanh ra khỏi Amazon bằng S3 hoặc máy chủ Nhập / Xuất của họ. Dù sao, cảm ơn câu trả lời.
Peter Stephens

4
Ảnh chụp nhanh RDS hiện có thể được sao chép sang các khu vực khác. Xem thông báo nàytài liệu này để biết chi tiết.
Shelley

9

Tôi gặp vấn đề tương tự. Giải pháp của tôi là viết một kịch bản bash đơn giản . Nó chỉ giới hạn trong một khu vực duy nhất.

Đây là kịch bản trong câu hỏi:

#!/bin/bash
NOWDATE=`date +%Y-%m-%d`
BACKUPNAME="$NOWDATE.sql.gz"

echo "Creating backup of database finances to $BACKUPNAME"
mysqldump user=user password=password database_name | gzip -9 > $BACKUPNAME

echo "Succesfully created database backup"

echo "Uploading backup to Amazon S3 bucket…"
s3cmd put $BACKUPNAME s3://path/to/file/$BACKUPNAME

echo "Successfully uploaded backup to S3"

echo "Deleting backup file…"
rm $BACKUPNAME

echo "Done"

Tôi thực sự khuyên bạn nên - giao dịch đơn lẻ khi chạy mysqldump
user1250

7

AWS RDS hiện hỗ trợ sao chép ảnh chụp nhanh giữa các vùng và tài khoản chéo , điều này sẽ cho phép bạn hoàn thành mục tiêu của mình chỉ bằng cách sử dụng RDS.

Bạn vẫn phải sử dụng phương thức kết xuất tập lệnh để nhận bản sao lưu lên S3 vào thời điểm này. Khả năng sử dụng S3-IA hoặc Glacier sẽ tốt về mặt tiết kiệm chi phí vì chi phí sao lưu RDS ở S3 Standard hoặc cao hơn (thay đổi theo db).


1
Có giới hạn mềm là 100 ảnh chụp thủ công cho mỗi vùng, trên mỗi tài khoản.
Giu-đa
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.