MySQL rất dễ cài đặt và sử dụng, nó luôn được các nhà phát triển và quản trị hệ thống ưa chuộng. Mặt khác, việc triển khai môi trường MySQL sẵn sàng sản xuất cho khối lượng công việc doanh nghiệp quan trọng là một câu chuyện khác. Nó có thể là một chút thách thức và đòi hỏi kiến thức chuyên sâu về cơ sở dữ liệu. Trong bài đăng trên blog này, chúng ta sẽ thảo luận về một số bước phải thực hiện trước khi chúng ta có thể xem xét việc triển khai MySQL của mình đã sẵn sàng.
Tính khả dụng cao
Nếu bạn thuộc những người may mắn có thể chấp nhận thời gian chết hàng giờ, bạn có thể dừng đọc ở đây và chuyển sang đoạn tiếp theo. Đối với 99,999% hệ thống quan trọng trong kinh doanh, nó sẽ không được chấp nhận. Do đó, việc triển khai sẵn sàng sản xuất phải bao gồm các biện pháp sẵn sàng cao. Chuyển đổi dự phòng tự động của các cá thể cơ sở dữ liệu, cũng như lớp proxy phát hiện những thay đổi trong cấu trúc liên kết và trạng thái của MySQL và định tuyến lưu lượng truy cập cho phù hợp, sẽ là yêu cầu chính. Có rất nhiều công cụ có thể được sử dụng để xây dựng các môi trường như vậy, chẳng hạn như MHA, MRM hoặc ClusterControl.
Lớp proxy
Phát hiện lỗi chính, chuyển đổi dự phòng tự động và phục hồi - đây là những yếu tố quan trọng khi xây dựng cơ sở hạ tầng sẵn sàng sản xuất. Nhưng đối với riêng họ, nó là không đủ. Vẫn có một ứng dụng sẽ phải thích ứng với sự thay đổi cấu trúc liên kết được kích hoạt bởi chuyển đổi dự phòng. Tất nhiên, có thể viết mã ứng dụng để nó nhận biết được các lỗi phiên bản. Tuy nhiên, đây là một cách xử lý phức tạp và không linh hoạt để xử lý các thay đổi cấu trúc liên kết. Ở đây có proxy cơ sở dữ liệu - một lớp trung gian giữa ứng dụng và cơ sở dữ liệu. Proxy có thể che giấu sự phức tạp của lớp cơ sở dữ liệu của bạn khỏi ứng dụng - tất cả những gì ứng dụng làm là kết nối với proxy và proxy sẽ lo phần còn lại. Proxy sẽ định tuyến các truy vấn đến một cá thể cơ sở dữ liệu, nó sẽ xử lý các thay đổi cấu trúc liên kết và định tuyến lại nếu cần. Một proxy cũng có thể được sử dụng để thực hiện phân tách đọc-ghi, giải quyết ứng dụng khỏi một trường hợp phức tạp hơn. Điều này tạo ra một thách thức khác - sử dụng proxy nào? Làm thế nào để cấu hình nó? Làm thế nào để giám sát nó? Làm thế nào để làm cho nó có tính khả dụng cao để nó không trở thành SPOF?
ClusterControl có thể hỗ trợ tại đây. Nó có thể được sử dụng để triển khai các proxy khác nhau để tạo thành một lớp proxy:ProxySQL, HAProxy và MaxScale. Nó cấu hình trước các proxy để đảm bảo rằng chúng sẽ xử lý lưu lượng truy cập một cách chính xác. Nó cũng giúp bạn dễ dàng thực hiện bất kỳ thay đổi cấu hình nào nếu bạn cần tùy chỉnh thiết lập proxy cho ứng dụng của mình. Phân chia đọc-ghi có thể được cấu hình bằng bất kỳ proxy nào mà ClusterControl hỗ trợ. ClusterControl cũng giám sát proxy và sẽ khôi phục chúng trong trường hợp bị lỗi. Lớp proxy có thể trở thành một điểm lỗi duy nhất, vì quá trình khôi phục tự động có thể không đủ - để giải quyết vấn đề đó, ClusterControl có thể triển khai Keepalived và định cấu hình Virtual IP để tự động chuyển đổi dự phòng.
Bản sao lưu
Ngay cả khi bạn không cần triển khai tính khả dụng cao, bạn có thể vẫn phải quan tâm đến dữ liệu của mình. Sao lưu là điều bắt buộc đối với hầu hết mọi cơ sở dữ liệu sản xuất. Không có gì khác hơn là một bản sao lưu có thể cứu bạn khỏi BẢNG HIỆU QUẢ hoặc DROP SCHEMA ngẫu nhiên (tốt, có thể là một nô lệ sao chép bị trì hoãn, nhưng chỉ trong một khoảng thời gian). MySQL cung cấp nhiều phương pháp sao lưu - mysqldump, xtrabackup, các loại snapshot khác nhau (một số chỉ khả dụng với nhà cung cấp phần cứng hoặc đám mây cụ thể). Không dễ dàng để thiết kế chiến lược sao lưu chính xác, quyết định sử dụng công cụ nào và sau đó tập lệnh cho toàn bộ quy trình để chiến lược sẽ thực thi chính xác. Nó cũng không phải là khoa học tên lửa và đòi hỏi phải lập kế hoạch và thử nghiệm cẩn thận. Sau khi một bản sao lưu được thực hiện, bạn vẫn chưa hoàn tất. Bạn có chắc chắn bản sao lưu có thể được khôi phục và dữ liệu không phải là rác? Việc xác minh các bản sao lưu của bạn tốn nhiều thời gian và có lẽ không phải là điều thú vị nhất mà bạn có trong danh sách việc cần làm của mình. Nhưng nó vẫn quan trọng và cần được thực hiện thường xuyên.
ClusterControl có chức năng sao lưu và khôi phục mở rộng. Nó hỗ trợ mysqldump để sao lưu logic và Percona Xtrabackup để sao lưu vật lý - những công cụ này có thể được sử dụng trong hầu hết mọi môi trường, đám mây hoặc tại chỗ. Có thể xây dựng chiến lược sao lưu với sự kết hợp giữa các bản sao lưu logic và vật lý, tăng dần hoặc đầy đủ, theo cách trực tuyến.
Ngoài khôi phục, nó cũng có các tùy chọn để xác minh một bản sao lưu - ví dụ:khôi phục nó trên một máy chủ riêng biệt để xác minh xem quá trình sao lưu có hoạt động tốt hay không.
Nếu bạn muốn thường xuyên theo dõi các bản sao lưu (và bạn có thể muốn làm điều này), ClusterControl có khả năng tạo báo cáo hoạt động. Báo cáo sao lưu giúp bạn theo dõi các bản sao lưu đã thực thi và thông báo nếu có bất kỳ sự cố nào khi thực hiện chúng.
Somenines DevOps Guide to Management DatabaseTìm hiểu về những điều bạn cần biết để tự động hóa và quản lý cơ sở dữ liệu nguồn mở của mìnhTải xuống miễn phíGiám sát và Xu hướng
Không có việc triển khai nào sẵn sàng cho quá trình sản xuất mà không có sự giám sát thích hợp của các dịch vụ. Bạn muốn đảm bảo rằng bạn sẽ được cảnh báo nếu một số dịch vụ không khả dụng để bạn có thể thực hiện hành động, điều tra hoặc bắt đầu quy trình khôi phục. Tất nhiên, bạn cũng muốn có giải pháp theo xu hướng. Không thể nhấn mạnh đủ tầm quan trọng của việc có dữ liệu giám sát để đánh giá trạng thái của cơ sở hạ tầng hoặc cho bất kỳ cuộc điều tra nào, sau khi khám nghiệm tử thi hoặc giám sát thời gian thực về trạng thái của dịch vụ. Các chỉ số không có tầm quan trọng như nhau - nếu bạn không quen thuộc với một sản phẩm cơ sở dữ liệu cụ thể, rất có thể bạn sẽ không biết đâu là chỉ số quan trọng nhất để thu thập và xem. Chắc chắn, bạn có thể thu thập mọi thứ nhưng khi xem xét dữ liệu, bạn khó có thể xem qua hàng trăm chỉ số trên mỗi máy chủ lưu trữ - bạn cần biết mình nên tập trung vào số liệu nào.
Thế giới nguồn mở có đầy đủ các công cụ được thiết kế để theo dõi và thu thập số liệu từ các cơ sở dữ liệu khác nhau - hầu hết chúng sẽ yêu cầu bạn tích hợp chúng với cơ sở hạ tầng giám sát tổng thể, nền tảng chatops hoặc các công cụ hỗ trợ oncall (như PagerDuty). Nó cũng có thể được yêu cầu cài đặt và tích hợp nhiều thành phần - bộ nhớ (một số loại cơ sở dữ liệu chuỗi thời gian), lớp trình bày và các công cụ thu thập dữ liệu.
ClusterControl là một cách tiếp cận hơi khác, vì nó là một sản phẩm duy nhất có tính năng theo dõi thời gian thực, xu hướng và bảng điều khiển hiển thị các chi tiết quan trọng nhất. Cố vấn cơ sở dữ liệu, có thể là bất cứ điều gì từ lời khuyên cấu hình đơn giản, cảnh báo về ngưỡng hoặc các quy tắc phức tạp hơn cho các dự đoán, thường sẽ đưa ra các khuyến nghị toàn diện.
Khả năng mở rộng quy mô
Cơ sở dữ liệu có xu hướng phát triển về quy mô và không có khả năng phát triển về khối lượng giao dịch hoặc số lượng người dùng. Khả năng mở rộng hoặc mở rộng quy mô có thể rất quan trọng đối với sản xuất. Ngay cả khi bạn làm rất tốt trong việc ước tính các yêu cầu phần cứng của mình khi bắt đầu vòng đời sản phẩm, bạn có thể sẽ phải xử lý giai đoạn tăng trưởng - miễn là sản phẩm của bạn thành công (nhưng đó là điều mà tất cả chúng ta đều lên kế hoạch, đúng không ?). Bạn phải có phương tiện để dễ dàng mở rộng quy mô cơ sở hạ tầng của mình để đối phó với tải đến. Đối với các dịch vụ không trạng thái như máy chủ web, điều này khá dễ dàng - bạn chỉ cần cung cấp thêm phiên bản bằng cách sử dụng hình ảnh hoặc mã sản xuất mới nhất từ công cụ kiểm soát phiên bản của mình. Đối với các dịch vụ nhà nước như cơ sở dữ liệu, việc này phức tạp hơn. Bạn phải cung cấp các phiên bản mới bằng cách sử dụng dữ liệu sản xuất hiện tại của mình, thiết lập bản sao hoặc một số hình thức phân cụm giữa các phiên bản hiện tại và mới. Đây có thể là một quá trình phức tạp và để thực hiện đúng, bạn cần có kiến thức chuyên sâu hơn về mô hình phân cụm hoặc nhân rộng đã chọn.
ClusterControl, như tên cho thấy, cung cấp hỗ trợ rộng rãi cho việc xây dựng các thiết lập cơ sở dữ liệu được phân cụm hoặc nhân rộng. Các phương pháp được sử dụng đã được thử nghiệm trong trận chiến qua hàng nghìn lần triển khai. Nó đi kèm với Giao diện dòng lệnh (CLI) để có thể dễ dàng tích hợp với các hệ thống quản lý cấu hình. Tuy nhiên, hãy ghi nhớ rằng bạn có thể không muốn thực hiện các thay đổi đối với nhóm cơ sở dữ liệu của mình quá thường xuyên - việc cung cấp phiên bản mới sẽ mất thời gian và thêm một số chi phí trong cơ sở dữ liệu hiện có. Do đó, bạn có thể muốn ở bên "được cung cấp quá mức" một chút để bạn có thời gian xoay vòng phiên bản mới trước khi cụm của bạn bị quá tải.
Nói chung, có một số bước bạn vẫn phải thực hiện sau khi triển khai ban đầu, để đảm bảo rằng môi trường của bạn đã sẵn sàng cho quá trình sản xuất. Với các công cụ phù hợp, bạn sẽ dễ dàng đạt được điều đó hơn nhiều.