Tất nhiên, mục tiêu chính của việc sao lưu dữ liệu của bạn là khả năng khôi phục và truy cập các kho lưu trữ của bạn trong trường hợp lỗi phần cứng. Để kinh doanh ngày nay, bạn cần biết chắc chắn rằng trong trường hợp xảy ra thảm họa, dữ liệu của bạn sẽ được bảo vệ và có thể truy cập được. Bạn sẽ cần lưu trữ các bản sao lưu của mình bên ngoài trang web, trong trường hợp trung tâm dữ liệu của bạn bị cháy.
Bảo vệ dữ liệu vẫn là một thách thức đối với các doanh nghiệp vừa và nhỏ. Các doanh nghiệp vừa và nhỏ thích lưu trữ dữ liệu của công ty họ bằng cách sử dụng bộ nhớ gắn trực tiếp, với phần lớn các công ty có kế hoạch thực hiện các bản sao lưu ngoại vi. Phương pháp lưu trữ cục bộ có thể dẫn đến một trong những tình huống khó xử nghiêm trọng nhất mà công ty hiện đại có thể gặp phải - mất dữ liệu trong trường hợp thảm họa.
Nhiều yếu tố được đưa ra cân nhắc khi đánh giá liệu có nên cho phép chuyển cơ sở dữ liệu quan trọng của doanh nghiệp ra bên ngoài và khi chọn một nhà cung cấp phù hợp để làm điều đó. Các phương pháp truyền thống như ghi vào băng và vận chuyển đến một địa điểm từ xa có thể là một quá trình phức tạp đòi hỏi phần cứng đặc biệt, nhân viên được đào tạo đầy đủ và các quy trình để đảm bảo rằng các bản sao lưu được sản xuất, bảo vệ thường xuyên và thông tin chứa trong chúng được xác minh về tính toàn vẹn. Các doanh nghiệp nhỏ thường có ngân sách CNTT nhỏ. Thường thì họ không đủ khả năng để có một trung tâm dữ liệu thứ cấp, ngay cả khi họ có một trung tâm dữ liệu chuyên dụng. Nhưng tuy nhiên, điều quan trọng vẫn là giữ một bản sao của các tệp sao lưu của bạn ở bên ngoài. Các thảm họa như bão, lũ lụt, hỏa hoạn hoặc trộm cắp có thể phá hủy máy chủ và bộ nhớ của bạn. Giữ dữ liệu đã sao lưu trong trung tâm dữ liệu riêng biệt đảm bảo dữ liệu được an toàn, bất kể điều gì đang xảy ra trong trung tâm dữ liệu chính của bạn. Lưu trữ đám mây là một cách tuyệt vời để giải quyết vấn đề này.
Với cách tiếp cận sao lưu đám mây, có một số yếu tố cần xem xét. Một số câu hỏi bạn có là:
- Dữ liệu đã sao lưu có được bảo mật an toàn trong trung tâm dữ liệu bên ngoài không?
- Việc chuyển đến hoặc từ trung tâm dữ liệu bên ngoài qua mạng internet công cộng có an toàn không?
- Có ảnh hưởng đến RTO (Mục tiêu thời gian khôi phục) không?
- Quá trình sao lưu và khôi phục có đủ dễ dàng cho nhân viên CNTT của chúng tôi không?
- Có bất kỳ thay đổi nào cần thiết đối với các quy trình hiện có không?
- Có cần các công cụ sao lưu của bên thứ 3 không?
- Các chi phí bổ sung về phần mềm bắt buộc hoặc truyền dữ liệu là gì?
- Chi phí lưu trữ là bao nhiêu?
Các tính năng sao lưu khi sao lưu lên đám mây
Nếu máy chủ MySQL hoặc điểm đến sao lưu của bạn nằm trong cơ sở hạ tầng lộ thiên như đám mây công cộng, nhà cung cấp dịch vụ lưu trữ hoặc được kết nối thông qua mạng WAN không đáng tin cậy, bạn cần phải suy nghĩ về các hành động bổ sung trong chính sách sao lưu của mình. Có một số cách khác nhau để thực hiện sao lưu cơ sở dữ liệu cho MySQL và tùy thuộc vào loại sao lưu, thời gian khôi phục, kích thước và các tùy chọn cơ sở hạ tầng sẽ khác nhau. Vì nhiều giải pháp lưu trữ đám mây chỉ đơn giản là lưu trữ với các giao diện người dùng API khác nhau, nên bất kỳ giải pháp sao lưu nào cũng có thể được thực hiện với một chút tập lệnh. Vậy chúng tôi có những tùy chọn nào để làm cho quá trình diễn ra suôn sẻ và an toàn?
Mã hóa
Luôn luôn là một ý kiến hay để thực thi mã hóa để tăng cường bảo mật cho dữ liệu sao lưu. Một trường hợp sử dụng đơn giản để triển khai mã hóa là nơi bạn muốn đẩy bản sao lưu vào bộ nhớ sao lưu ngoại vi nằm trong đám mây công cộng.
Khi tạo một bản sao lưu được mã hóa, một điều cần lưu ý là thường mất nhiều thời gian hơn để khôi phục. Bản sao lưu phải được giải mã trước khi có bất kỳ hoạt động khôi phục nào. Với một tập dữ liệu lớn, điều này có thể gây ra một số sự chậm trễ cho RTO.
Mặt khác, nếu bạn đang sử dụng khóa riêng tư để mã hóa, hãy đảm bảo cất giữ khóa ở một nơi an toàn. Nếu khóa cá nhân bị thiếu, bản sao lưu sẽ vô dụng và không thể khôi phục được. Nếu khóa bị đánh cắp, tất cả các bản sao lưu đã tạo sử dụng cùng một khóa sẽ bị xâm phạm vì chúng không còn được bảo mật. Bạn có thể sử dụng GnuPG hoặc OpenSSL phổ biến để tạo khóa riêng tư hoặc khóa công khai.
Để thực hiện mã hóa mysqldump bằng GnuPG, hãy tạo khóa riêng tư và làm theo hướng dẫn tương ứng:
$ gpg --gen-key
Tạo một bản sao lưu mysqldump đơn giản như bình thường:
$ mysqldump --routines --events --triggers --single-transaction db1 | gzip > db1.tar.gz
Mã hóa tệp kết xuất và xóa bản sao lưu thuần túy cũ hơn:
$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz
$ rm -f db1.tar.gz
GnuPG sẽ tự động thêm phần mở rộng .gpg vào tệp được mã hóa. Để giải mã,
chỉ cần chạy lệnh gpg với cờ --decrypt:
$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg
Để tạo mysqldump được mã hóa bằng OpenSSL, người ta phải tạo khóa riêng tư và khóa công khai:
OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem
Khóa riêng tư này (dump.priv.pem) phải được giữ ở một nơi an toàn để giải mã trong tương lai. Đối với mysqldump, một bản sao lưu được mã hóa có thể được tạo bằng cách chuyển nội dung đến openssl, chẳng hạn như
mysqldump --routines --events --triggers --single-transaction database | openssl smime -encrypt -binary -text -aes256
-out database.sql.enc -outform DER dump.pub.pem
Để giải mã, chỉ cần sử dụng khóa riêng (dump.priv.pem) cùng với cờ -decrypt:
openssl smime -decrypt -in database.sql.enc -binary -inform
DEM -inkey dump.priv.pem -out database.sql
Percona XtraBackup có thể được sử dụng để mã hóa hoặc giải mã các bản sao lưu cục bộ hoặc phát trực tuyến với tùy chọn xbstream để thêm một lớp bảo vệ khác cho các bản sao lưu. Mã hóa được thực hiện với thư viện libgcrypt. Cả tùy chọn --encrypt-key và --encryptkey-file đều có thể được sử dụng để chỉ định khóa mã hóa. Khóa mã hóa có thể được tạo bằng các lệnh như
$ openssl rand -base64 24
$ bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1
Giá trị này sau đó có thể được sử dụng làm khóa mã hóa. Ví dụ về lệnh innobackupex sử dụng --encrypt-key:
$ innobackupex --encrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1” /storage/backups/encrypted
Đầu ra của lệnh OpenSSL ở trên cũng có thể được chuyển hướng đến một tệp và có thể được coi là tệp khóa:
openssl rand -base64 24 > /etc/keys/pxb.key
Thay vào đó, hãy sử dụng nó với tùy chọn --encrypt-key-file:
innobackupex --encrypt=AES256 --encrypt-key-file=/etc/keys/pxb.key /storage/backups/encrypted
Để giải mã, chỉ cần sử dụng tùy chọn --decrypt với --encrypt-key hoặc --encrypt-key-file:
$ innobackupex --decrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1”
/storage/backups/encrypted/2018-11-18_11-10-09/
Để biết thêm thông tin về mã hóa MySQL và MariaDB, vui lòng kiểm tra một bài đăng trên blog khác của chúng tôi.
Nén
Trong thế giới sao lưu cơ sở dữ liệu đám mây, nén là một trong những người bạn tốt nhất của bạn. Nó không chỉ có thể tiết kiệm không gian lưu trữ mà còn có thể giảm đáng kể thời gian cần thiết để tải xuống / tải lên dữ liệu.
Có rất nhiều công cụ nén hiện có, cụ thể là gzip, bzip2, zip, rar và 7z.
Thông thường, mysqldump có thể có tốc độ nén tốt nhất vì nó là một tệp văn bản phẳng. Tùy thuộc vào công cụ nén và tỷ lệ, một mysqldump được nén có thể nhỏ hơn tới 6 lần so với kích thước sao lưu ban đầu. Để nén bản sao lưu, bạn có thể chuyển đầu ra mysqldump tới một công cụ nén và chuyển hướng nó đến một tệp đích. Bạn cũng có thể bỏ qua một số nội dung như nhận xét, tuyên bố bảng khóa (nếu InnoDB), bỏ qua GTID bị xóa và kích hoạt:
mysqldump --single-transaction --skip-comments --skip-triggers --skip-lock-tables --set-gtid-purged OFF --all-databases | gzip > /storage/backups/all-databases.sql.gz
Với Percona Xtrabackup, bạn có thể sử dụng chế độ phát trực tuyến (innobackupex), chế độ này sẽ gửi bản sao lưu tới STDOUT ở định dạng tar hoặc xbstream đặc biệt thay vì sao chép tệp vào thư mục sao lưu. Có một bản sao lưu nén có thể giúp bạn tiết kiệm tới 50% kích thước bản sao lưu ban đầu, tùy thuộc vào tập dữ liệu. Thêm tùy chọn --compress vào lệnh sao lưu. Bằng cách sử dụng xbstream trong sao lưu trực tuyến, bạn có thể tăng tốc quá trình nén bằng cách sử dụng tùy chọn --compress-thread. Tùy chọn này chỉ định số lượng luồng được tạo bởi xtrabackup để nén dữ liệu song song. Giá trị mặc định cho tùy chọn này là 1. Để sử dụng tính năng này, hãy thêm tùy chọn vào bản sao lưu cục bộ. Một ví dụ về sao lưu với nén:
innobackupex --stream=xbstream --compress --compress-threads=4 > /storage/backups/backup.xbstream
Trước khi áp dụng nhật ký trong giai đoạn chuẩn bị, các tệp nén sẽ cần được
giải nén bằng xbstream:
Sau đó, sử dụng qpress để giải nén từng tệp có đuôi .qp trong thư mục tương ứng của chúng trước khi
chạy - lệnh apply-log để chuẩn bị dữ liệu MySQL.
$ xbstream -x < /storage/backups/backup.xbstream
Giới hạn thông lượng mạng
Một lựa chọn tuyệt vời cho sao lưu đám mây là giới hạn băng thông phát trực tuyến mạng (Mb / s) khi thực hiện sao lưu. Bạn có thể đạt được điều đó với công cụ pv. Tiện ích pv đi kèm với tùy chọn sửa đổi dữ liệu -L RATE, --rate-limit RATE giới hạn việc truyền tải xuống tối đa là RATE byte mỗi giây. Ví dụ dưới đây sẽ giới hạn nó ở 2MB / s.
$ pv -q -L 2m
Trong ví dụ dưới đây, bạn có thể thấy xtrabackup với gzip song song, mã hóa
/usr/bin/innobackupex --defaults-file=/etc/mysql/my.cnf --galera-info --parallel 4 --stream=xbstream --no-timestamp . | pv -q -L 2m | pigz -9 - | openssl enc -aes-256-cbc -pass file:/var/tmp/cmon-008688-19992-72450efc3b6e9e4f.tmp > /home/ubuntu/backups/BACKUP-3445/backup-full-2018-11-28_213540.xbstream.gz.aes256 ) 2>&1.
Chuyển bản sao lưu sang Đám mây
Bây giờ khi bản sao lưu của bạn được nén và mã hóa, nó đã sẵn sàng để chuyển.
Google cloud
Công cụ dòng lệnh gsutil được sử dụng để quản lý, giám sát và sử dụng nhóm lưu trữ của bạn trên Google Cloud Storage. Nếu bạn đã cài đặt tiện ích gcloud, bạn đã cài đặt gsutil. Nếu không, hãy làm theo hướng dẫn cho bản phân phối Linux của bạn từ đây.
Để cài đặt gcloud CLI, bạn có thể làm theo quy trình dưới đây:
curl https://sdk.cloud.google.com | bash
Khởi động lại shell của bạn:
exec -l $SHELL
Chạy gcloud init để khởi tạo môi trường gcloud:
gcloud init
Với công cụ dòng lệnh gsutil được cài đặt và xác thực, hãy tạo một nhóm lưu trữ khu vực có tên mysql-backup-storage trong dự án hiện tại của bạn.
gsutil mb -c regional -l europe-west1 gs://severalnines-storage/
Creating gs://mysql-backups-storage/
Amazon S3
Nếu bạn không sử dụng RDS để lưu trữ cơ sở dữ liệu của mình, rất có thể bạn đang thực hiện sao lưu của riêng mình. Nền tảng AWS của Amazon, S3 (Amazon Simple Storage Service) là một dịch vụ lưu trữ dữ liệu có thể được sử dụng để lưu trữ các bản sao lưu cơ sở dữ liệu hoặc các tệp quan trọng khác của doanh nghiệp. Bạn có thể sử dụng dịch vụ này để bảo mật dữ liệu của mình.
Trong khi các bản sao lưu có thể được tải lên thông qua giao diện web, giao diện dòng lệnh s3 chuyên dụng có thể được sử dụng để thực hiện việc đó từ dòng lệnh và thông qua các tập lệnh tự động hóa sao lưu. Nếu các bản sao lưu được lưu giữ trong thời gian rất dài và thời gian khôi phục không phải là vấn đề đáng lo ngại, thì các bản sao lưu có thể được chuyển sang dịch vụ Amazon Glacier, cung cấp dung lượng lưu trữ dài hạn rẻ hơn nhiều. Các tệp (đối tượng amazon) được lưu trữ một cách hợp lý trong một thùng phẳng khổng lồ có tên là bucket. S3 trình bày một giao diện REST cho bên trong của nó. Bạn có thể sử dụng API này để thực hiện các hoạt động CRUD trên nhóm và đối tượng, cũng như để thay đổi quyền và cấu hình trên cả hai.
Phương thức phân phối chính cho AWS CLI trên Linux, Windows và macOS là pip, một trình quản lý gói cho Python. Hướng dẫn có thể được tìm thấy tại đây.
aws s3 cp severalnines.sql s3://severalnine-sbucket/mysql_backups
Theo mặc định, S3 cung cấp độ bền đối tượng 11 9 giây. Có nghĩa là nếu bạn lưu trữ 1.000.000.000 (1 tỷ) đồ vật trong đó, thì trung bình cứ 10 năm bạn có thể mất 1 đồ vật. Cách S3 đạt được con số 9 giây ấn tượng đó là bằng cách tự động sao chép đối tượng trong nhiều Vùng khả dụng mà chúng ta sẽ nói đến trong một bài đăng khác. Amazon có các trung tâm dữ liệu khu vực trên khắp thế giới.
Bộ nhớ Microsoft Azure
Nền tảng đám mây công cộng của Microsoft, Azure, có các tùy chọn lưu trữ với giao diện dòng điều khiển của họ. Thông tin có thể được tìm thấy ở đây. Azure CLI đa nền tảng, mã nguồn mở cung cấp một tập hợp các lệnh để làm việc với nền tảng Azure. Nó cung cấp nhiều chức năng được thấy trong cổng Azure, bao gồm cả quyền truy cập dữ liệu phong phú.
Việc cài đặt Azure CLI khá đơn giản, bạn có thể xem hướng dẫn tại đây. Dưới đây, bạn có thể tìm thấy cách chuyển bản sao lưu của mình sang bộ nhớ Microsoft.
az storage blob upload --container-name severalnines --file severalnines.sql --name severalnines_backup
Bộ nhớ kết hợp để sao lưu MySQL và MariaDB
Với ngành công nghiệp lưu trữ đám mây công cộng và riêng tư đang phát triển, chúng tôi có một danh mục mới được gọi là lưu trữ kết hợp. Công nghệ này cho phép các tệp được lưu trữ cục bộ, với các thay đổi được tự động đồng bộ hóa với điều khiển từ xa trên đám mây. Cách tiếp cận như vậy xuất phát từ nhu cầu có các bản sao lưu gần đây được lưu trữ cục bộ để khôi phục nhanh (RTO thấp hơn), cũng như các mục tiêu liên tục của doanh nghiệp.
Khía cạnh quan trọng của việc sử dụng tài nguyên hiệu quả là có các bản sao lưu dự phòng riêng biệt. Dữ liệu được lưu trữ cục bộ trên các ổ đĩa dự phòng sẽ được lưu giữ trong thời gian ngắn hơn trong khi lưu trữ sao lưu đám mây sẽ được lưu giữ trong thời gian dài hơn. Nhiều khi yêu cầu về việc lưu giữ bản sao lưu lâu hơn xuất phát từ các nghĩa vụ pháp lý đối với các ngành khác nhau (như viễn thông phải lưu trữ siêu dữ liệu kết nối). Mỗi nhà cung cấp dịch vụ đám mây như Google Cloud Services, Microsoft Azure và Amazon S3 đều cung cấp bộ nhớ hầu như không giới hạn, làm giảm nhu cầu không gian cục bộ. Nó cho phép bạn lưu giữ các tệp sao lưu của mình lâu hơn, miễn là bạn muốn và không lo ngại về dung lượng ổ đĩa cục bộ.
Khi lập lịch sao lưu với ClusterControl, mỗi phương pháp sao lưu đều có thể định cấu hình với một tập hợp các tùy chọn về cách bạn muốn thực hiện sao lưu. Điều quan trọng nhất đối với lưu trữ đám mây kết hợp sẽ là:
- Điều chỉnh mạng
- Mã hóa với bản dựng trong quản lý khóa
- Nén
- Khoảng thời gian lưu giữ cho các bản sao lưu cục bộ
- Khoảng thời gian lưu giữ cho các bản sao lưu trên đám mây
Kết luận
Đám mây đã thay đổi ngành công nghiệp sao lưu dữ liệu. Do mức giá phải chăng, các doanh nghiệp nhỏ hơn có giải pháp ngoại vi để sao lưu tất cả dữ liệu của họ.
Công ty của bạn có thể tận dụng khả năng mở rộng của đám mây và định giá tùy ý cho nhu cầu lưu trữ ngày càng tăng. Bạn có thể thiết kế chiến lược sao lưu để cung cấp cả bản sao cục bộ trong trung tâm dữ liệu để khôi phục ngay lập tức và một cổng liền mạch đến các dịch vụ lưu trữ đám mây từ AWS, Google và Azure.
Các tính năng nén và mã hóa TLS và AES 256-bit nâng cao hỗ trợ các bản sao lưu an toàn chiếm ít dung lượng hơn đáng kể trên đám mây.