Sao lưu là một phần rất quan trọng trong hoạt động cơ sở dữ liệu của bạn, vì doanh nghiệp của bạn phải được bảo mật khi thảm họa xảy ra. Khi thời điểm đó đến (và nó sẽ xảy ra), Mục tiêu điểm khôi phục (RPO) và Mục tiêu thời gian khôi phục (RTO) của bạn nên được xác định trước, vì đây là tốc độ bạn có thể khôi phục sau sự cố đã xảy ra.
Hầu hết các tổ chức khác nhau về cách tiếp cận sao lưu, cố gắng có sự kết hợp giữa sao lưu hình ảnh máy chủ (ảnh chụp nhanh), sao lưu logic và vật lý. Các bản sao lưu này sau đó được lưu trữ ở nhiều vị trí để tránh mọi thảm họa cục bộ hoặc khu vực. Điều đó cũng có nghĩa là dữ liệu có thể được khôi phục trong khoảng thời gian ngắn nhất, tránh thời gian ngừng hoạt động lớn có thể ảnh hưởng đến hoạt động kinh doanh của công ty bạn.
Lưu trữ cơ sở dữ liệu của bạn với nhà cung cấp dịch vụ đám mây, chẳng hạn như Microsoft Azure (mà chúng ta sẽ thảo luận trong blog này), không phải là một ngoại lệ, bạn vẫn cần chuẩn bị và xác định chính sách khôi phục sau thảm họa của mình.
Giống như các dịch vụ đám mây công cộng khác, Microsoft Azure (Azure) cung cấp phương pháp sao lưu thiết thực, tiết kiệm chi phí và được thiết kế để cung cấp cho bạn các tùy chọn khôi phục. Các giải pháp sao lưu Microsoft Azure cho phép bạn định cấu hình và vận hành cũng như dễ dàng xử lý bằng cách sử dụng Bản sao lưu Azure của họ hoặc thông qua Khôi phục dịch vụ Vault (nếu bạn đang vận hành cơ sở dữ liệu của mình bằng máy ảo).
Nếu bạn muốn có một cơ sở dữ liệu được quản lý trên đám mây, Azure cung cấp Cơ sở dữ liệu Azure cho MySQL. Điều này chỉ nên được sử dụng nếu bạn không muốn tự mình vận hành và quản lý cơ sở dữ liệu MySQL. Dịch vụ này cung cấp một giải pháp phong phú để sao lưu, cho phép bạn tạo một bản sao lưu của phiên bản cơ sở dữ liệu của mình, từ một khu vực cục bộ hoặc thông qua một vị trí địa lý dự phòng. Điều này có thể hữu ích cho việc khôi phục dữ liệu. Bạn thậm chí có thể khôi phục một nút từ một khoảng thời gian cụ thể, điều này rất hữu ích trong việc khôi phục tại thời điểm. Điều này có thể được thực hiện chỉ với một cú nhấp chuột.
Trong blog này, chúng tôi sẽ trình bày tất cả các trường hợp sao lưu và khôi phục bằng cách sử dụng cơ sở dữ liệu MySQL trên đám mây Microsoft Azure.
Thực hiện Sao lưu trên Máy ảo trên Azure
Rất tiếc, Microsoft Azure không cung cấp giải pháp sao lưu dành riêng cho MySQL (ví dụ:MySQL Enterprise Backup, Percona XtraBackup hoặc MariaDB's Mariabackup).
Sau khi tạo Máy ảo của bạn (sử dụng cổng thông tin), bạn có thể thiết lập quy trình sao lưu máy ảo của mình bằng cách sử dụng vault Dịch vụ Khôi phục. Điều này sẽ bảo vệ bạn khỏi mọi sự cố, thảm họa hoặc thảm họa và dữ liệu được lưu trữ được mã hóa theo mặc định. Thêm mã hóa là tùy chọn và mặc dù được Azure khuyến nghị, nó đi kèm với một mức giá. Bạn có thể xem trang Định giá dự phòng Azure của họ để biết thêm chi tiết.
Để tạo và thiết lập một bản sao lưu, hãy chuyển đến bảng điều khiển bên trái và nhấp vào Tất cả tài nguyên → Tính toán → Máy ảo. Bây giờ hãy thiết lập các tham số cần thiết trong các trường văn bản. Khi bạn đã ở trên trang đó, hãy chuyển đến tab Quản lý và cuộn xuống bên dưới. Bạn sẽ có thể xem cách bạn có thể thiết lập hoặc tạo bản sao lưu. Xem ảnh chụp màn hình bên dưới:
Sau đó, thiết lập chính sách sao lưu của bạn dựa trên các yêu cầu sao lưu của bạn. Chỉ cần nhấn vào liên kết Tạo mới trong trường văn bản chính sách Dự phòng để tạo chính sách mới. Xem bên dưới:
Bạn có thể định cấu hình chính sách sao lưu của mình với lưu giữ theo tuần, tháng và năm .
Khi bạn đã định cấu hình bản sao lưu, bạn có thể kiểm tra xem bạn đã bật bản sao lưu trên máy ảo cụ thể mà bạn vừa tạo chưa. Xem ảnh chụp màn hình bên dưới:
Khôi phục và khôi phục Máy ảo của bạn trên Azure
Việc thiết kế khôi phục của bạn trong Azure phụ thuộc vào loại chính sách và yêu cầu mà ứng dụng của bạn yêu cầu. Nó cũng phụ thuộc vào việc RTO và RPO phải ở mức thấp hoặc không thể nhìn thấy đối với người dùng trong trường hợp xảy ra sự cố hoặc trong quá trình bảo trì. Bạn có thể thiết lập máy ảo của mình với một mức khả dụng đã đặt hoặc trên một vùng khả dụng khác để đạt được tỷ lệ khôi phục cao hơn.
Bạn cũng có thể thiết lập khôi phục thảm họa cho máy ảo của mình để sao chép các máy ảo của bạn sang một vùng Azure khác phục vụ nhu cầu kinh doanh liên tục và phục hồi sau thảm họa. Tuy nhiên, đây có thể không phải là một ý tưởng hay cho tổ chức của bạn vì nó đi kèm với chi phí cao. Nếu đúng, Azure cung cấp cho bạn một tùy chọn để khôi phục hoặc tạo một máy ảo từ bản sao lưu đã tạo.
Ví dụ:trong quá trình tạo máy ảo, bạn có thể chuyển đến tab Đĩa, sau đó chuyển đến Đĩa dữ liệu. Bạn có thể tạo hoặc đính kèm một đĩa hiện có nơi bạn có thể đính kèm ảnh chụp nhanh mà bạn có sẵn. Xem ảnh chụp màn hình bên dưới mà bạn có thể chọn từ ảnh chụp nhanh hoặc khối lưu trữ:
Bạn cũng có thể khôi phục vào một thời điểm cụ thể giống như trong ảnh chụp màn hình dưới đây:
Việc khôi phục trong Azure có thể được thực hiện theo nhiều cách khác nhau, nhưng cách này đều giống nhau tài nguyên bạn đã tạo.
Ví dụ:nếu bạn đã tạo ảnh chụp nhanh hoặc ảnh đĩa được lưu trữ trong Azure Storage blob, nếu bạn tạo một máy ảo mới, bạn có thể sử dụng tài nguyên đó miễn là nó tương thích và có sẵn để sử dụng. Ngoài ra, bạn thậm chí có thể thực hiện một số khôi phục tệp, ngoài việc khôi phục máy ảo giống như trong ảnh chụp màn hình bên dưới:
Trong quá trình Khôi phục tệp, bạn có thể chọn từ một điểm khôi phục cụ thể , cũng như tải xuống tập lệnh để duyệt và khôi phục tệp. Điều này rất hữu ích khi bạn chỉ cần một tệp cụ thể mà không cần toàn bộ hệ thống hoặc ổ đĩa.
Việc khôi phục từ bản sao lưu trên máy ảo hiện có mất khoảng ba phút. Tuy nhiên, việc khôi phục từ bản sao lưu để tạo ra một máy ảo mới mất mười hai phút. Tuy nhiên, điều này có thể phụ thuộc vào kích thước máy ảo của bạn và băng thông mạng có sẵn trong Azure. Điều tốt là, khi khôi phục, nó sẽ cung cấp cho bạn thông tin chi tiết về những gì đã được hoàn thành và thời gian còn lại. Ví dụ:hãy xem ảnh chụp màn hình bên dưới:
Bản sao lưu cho Cơ sở dữ liệu Azure Cho MySQL
Cơ sở dữ liệu Azure cho MySQL là dịch vụ cơ sở dữ liệu được quản lý hoàn toàn bởi Microsoft Azure. Dịch vụ này cung cấp một cách rất linh hoạt và thuận tiện để thiết lập khả năng sao lưu và khôi phục của bạn.
Sau khi tạo phiên bản máy chủ MySQL của bạn, sau đó bạn có thể thiết lập lưu giữ sao lưu và tạo các tùy chọn dự phòng sao lưu của mình; dự phòng cục bộ (vùng cục bộ) hoặc dư thừa địa lý (trên một vùng khác). Azure sẽ cung cấp cho bạn chi phí ước tính mà bạn sẽ phải trả cho một tháng. Xem ảnh chụp màn hình mẫu bên dưới:
Lưu ý rằng các tùy chọn sao lưu dự phòng theo địa lý chỉ khả dụng cho Mục đích chung và Các loại nút máy tính được tối ưu hóa bộ nhớ. Nó không có sẵn trên nút Máy tính cơ bản, nhưng bạn có thể có dự phòng của mình trong khu vực cục bộ (tức là trong các khu vực khả dụng có sẵn).
Khi bạn đã có thiết lập chính, thật dễ dàng tạo bản sao bằng cách đi tới Cơ sở dữ liệu Azure cho máy chủ MySQL → Chọn bản sao MyQL của bạn → Bản sao → và nhấp vào Thêm bản sao. Bản sao của bạn có thể được sử dụng làm nguồn hoặc mục tiêu khôi phục khi cần thiết.
Hãy nhớ rằng trong Azure, khi bạn dừng quá trình sao chép giữa bản chính và bản sao, điều này sẽ vĩnh viễn và không thể thay đổi vì nó làm cho bản sao trở thành một máy chủ độc lập. Một bản sao được tạo bằng Microsoft Azure lý tưởng là một bản sao được quản lý và bạn có thể dừng và bắt đầu các luồng bản sao giống như những gì bạn làm trên bản sao chủ-nô lệ thông thường. Bạn có thể khởi động lại và chỉ có vậy. Nếu bạn đã tạo bản sao theo cách thủ công, bằng cách khôi phục từ bản chính hoặc bản sao lưu, (ví dụ:thông qua khôi phục tại thời điểm), thì bạn sẽ có thể dừng / bắt đầu các luồng nhân bản hoặc thiết lập độ trễ nô lệ nếu cần.
Khôi phục cơ sở dữ liệu Azure của bạn cho MySQL từ bản sao lưu
Việc khôi phục rất dễ dàng và nhanh chóng bằng cách sử dụng cổng Azure. Bạn có thể chỉ cần nhấn nút khôi phục với nút phiên bản MySQL của mình và chỉ cần làm theo giao diện người dùng như được hiển thị trong ảnh chụp màn hình bên dưới:
Sau đó, bạn có thể chọn một khoảng thời gian và tạo / sinh ra một phiên bản mới dựa trên bản sao lưu này được chụp:
Khi bạn có sẵn nút, nút này sẽ không phải là bản sao của chính chủ chưa. Bạn cần thiết lập thủ công điều này với các bước đơn giản bằng cách sử dụng các quy trình được lưu trữ sẵn có:
CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');
ở đâu,
master_host:tên máy chủ của máy chủ chính
master_user:tên người dùng cho máy chủ chính
master_password:mật khẩu cho máy chủ chính
master_log_file:tên tệp nhật ký nhị phân từ trạng thái chạy chương trình chính
master_log_pos:vị trí nhật ký nhị phân từ trạng thái chạy chương trình chính
master_ssl_ca:ngữ cảnh của chứng chỉ CA. Nếu không sử dụng SSL, hãy chuyển vào chuỗi trống.
Sau đó, bắt đầu các chuỗi MySQL như sau,
CALL mysql.az_replication_start;
hoặc bạn có thể dừng các chuỗi sao chép như sau,
CALL mysql.az_replication_stop;
hoặc bạn có thể xóa trang cái dưới dạng,
CALL mysql.az_replication_remove_master;
hoặc bỏ qua lỗi chuỗi SQL vì,
CALL mysql.az_replication_skip_counter;
Như đã đề cập trước đó, khi một bản sao được tạo bằng Microsoft Azure trong tính năng Thêm bản sao trong bản sao MySQL, các thủ tục được lưu trữ cụ thể này không khả dụng. Tuy nhiên, thủ tục mysql.az_replication_restart sẽ khả dụng vì bạn không được phép dừng cũng như bắt đầu các chuỗi sao chép của một bản sao được quản lý bởi Azure. Vì vậy, ví dụ chúng ta có ở trên đã được khôi phục từ một cái chính, lấy bản sao đầy đủ của cái chính nhưng hoạt động như một nút duy nhất và cần thiết lập thủ công để trở thành một bản sao của một cái hiện có.
Ngoài ra, khi bạn có một bản sao thủ công mà bạn đã thiết lập, bạn sẽ không thể thấy bản sao này trong Cơ sở dữ liệu Azure dành cho máy chủ MySQL → Chọn bản sao MyQL của bạn → Bản sao vì bạn đã tạo hoặc thiết lập bản sao theo cách thủ công .
Giải pháp Sao lưu Thay thế và Khôi phục Đám mây
Có một số trường hợp bạn muốn có toàn quyền truy cập khi sao lưu toàn bộ cơ sở dữ liệu MySQL của mình trên đám mây. Để làm điều này, bạn có thể tạo tập lệnh của riêng mình hoặc sử dụng các công nghệ mã nguồn mở. Với những điều này, bạn có thể kiểm soát cách dữ liệu trong cơ sở dữ liệu MySQL của bạn nên được sao lưu và chính xác cách nó nên được lưu trữ.
Bạn cũng có thể tận dụng Giao diện Dòng lệnh Azure (CLI) để tạo tự động hóa tùy chỉnh của mình. Ví dụ:bạn có thể tạo ảnh chụp nhanh bằng lệnh sau với Azure CLI:
az snapshot create -g myResourceGroup -source "$osDiskId" --name osDisk-backup
hoặc tạo bản sao máy chủ MySQL của bạn bằng lệnh sau:
az mysql server replica create --name mydemoreplicaserver --source-server mydemoserver --resource-group myresourcegroup
Ngoài ra, bạn cũng có thể tận dụng một công cụ dành cho doanh nghiệp có các cách thực hiện sao lưu của bạn với các tùy chọn khôi phục. Việc sử dụng các công nghệ mã nguồn mở hoặc các công cụ của bên thứ 3 đòi hỏi kiến thức và kỹ năng để tận dụng và tạo ra quá trình triển khai của riêng bạn. Đây là danh sách bạn có thể tận dụng:
- ClusterControl - Mặc dù chúng tôi có thể hơi thiên vị, nhưng ClusterControl cung cấp khả năng quản lý các bản sao lưu vật lý và logic của cơ sở dữ liệu MySQL của bạn bằng cách sử dụng các công nghệ mã nguồn mở, đã được thử nghiệm trong trận chiến (PXB, Mariabackup và mydumper). Nó hỗ trợ cơ sở dữ liệu MySQL, Percona, MariaDB, Galera. Bạn có thể dễ dàng tạo chính sách sao lưu của chúng tôi và lưu trữ các bản sao lưu cơ sở dữ liệu của mình trên bất kỳ đám mây nào (AWS, GCP hoặc Azure) Xin lưu ý rằng phiên bản miễn phí của ClusterControl không bao gồm các tính năng sao lưu.
- Ảnh chụp nhanh LVM - Bạn có thể sử dụng LVM để chụp nhanh khối lượng hợp lý của mình. Điều này chỉ áp dụng cho máy ảo của bạn vì nó yêu cầu quyền truy cập vào bộ nhớ cấp khối. Việc sử dụng công cụ này cần lưu ý vì nó có thể khiến nút cơ sở dữ liệu của bạn không phản hồi trong khi quá trình sao lưu đang chạy.
- Percona XtraBackup (PXB) - Một công nghệ mã nguồn mở của Percona. Với PXB, bạn có thể tạo một bản sao lưu vật lý của cơ sở dữ liệu MySQL của mình. Bạn cũng có thể thực hiện sao lưu nóng với PXB cho công cụ lưu trữ InnoDB nhưng bạn nên chạy điều này trên máy chủ db MySQL không bận hoặc không bận rộn. Điều này chỉ áp dụng cho phiên bản VM của bạn vì nó yêu cầu quyền truy cập tệp nhị phân hoặc tệp vào chính máy chủ cơ sở dữ liệu.
- Mariabackup - Tương tự với PXB, đó là một công nghệ mã nguồn mở được phân tách từ PXB nhưng được duy trì bởi MariaDB. Cụ thể, nếu cơ sở dữ liệu của bạn đang sử dụng MariaDB, bạn nên sử dụng Mariabackup để tránh các vấn đề không tương thích với không gian bảng.
- mydumper / myloader - Các công cụ sao lưu này tạo ra một bản sao lưu hợp lý của cơ sở dữ liệu MySQL của bạn. Bạn có thể sử dụng điều này với cơ sở dữ liệu Azure cho MySQL của mình mặc dù tôi chưa thử mức độ thành công của điều này đối với quy trình sao lưu và khôi phục của bạn.
- mysqldump - đó là một công cụ sao lưu hợp lý rất hữu ích khi bạn cần sao lưu và kết xuất (hoặc khôi phục) một bảng hoặc cơ sở dữ liệu cụ thể sang một phiên bản khác. Điều này thường được sử dụng bởi DBA nhưng bạn cần chú ý đến dung lượng ổ đĩa của mình vì các bản sao lưu hợp lý rất lớn so với các bản sao lưu vật lý.
- Sao lưu MySQL Enterprise - Nó cung cấp các bản sao lưu nóng, trực tuyến, không chặn trên nhiều nền tảng bao gồm Linux, Windows, Mac &Solaris. Nó không phải là một công cụ sao lưu miễn phí nhưng cung cấp rất nhiều tính năng.
- rsync - Đây là một công cụ sao chép tệp nhanh chóng và cực kỳ linh hoạt. Nó có thể sao chép cục bộ, đến / từ một máy chủ khác qua bất kỳ trình bao từ xa nào hoặc đến / từ một daemon rsync từ xa. Nó cung cấp một số lượng lớn các tùy chọn kiểm soát mọi khía cạnh của hành vi và cho phép sao chép các đặc điểm kỹ thuật rất linh hoạt của tập hợp các tệp. Hầu hết trong các hệ thống Linux, rsync được cài đặt như một phần của gói hệ điều hành.