Người dùng cơ sở dữ liệu mã nguồn mở thường phải sử dụng hỗn hợp các công cụ và tập lệnh cây nhà lá vườn để quản lý môi trường cơ sở dữ liệu sản xuất của họ. Tuy nhiên, ngay cả khi có các tập lệnh cây nhà lá vườn riêng trong giải pháp, thật khó để duy trì nó và theo kịp các tính năng cơ sở dữ liệu mới, các yêu cầu bảo mật hoặc nâng cấp. Với các phiên bản chính mới của cơ sở dữ liệu, bao gồm MySQL 8.0, nhiệm vụ này có thể trở nên khó khăn hơn.
Trung tâm của ClusterControl là chức năng tự động hóa cho phép bạn tự động hóa các tác vụ cơ sở dữ liệu mà bạn phải thực hiện thường xuyên, như triển khai cơ sở dữ liệu mới, thêm và mở rộng các nút mới, quản lý bản sao lưu, tính khả dụng cao và chuyển đổi dự phòng, thay đổi cấu trúc liên kết, nâng cấp, v.v. Các quy trình tự động chính xác, nhất quán và có thể lặp lại để bạn có thể giảm thiểu rủi ro thay đổi trong môi trường sản xuất.
Hơn nữa, với ClusterControl, người dùng MySQL không còn bị nhà cung cấp khóa; điều mà nhiều người thắc mắc trong thời gian gần đây. Bạn có thể triển khai và nhập nhiều phiên bản và nhà cung cấp MySQL từ một bảng điều khiển duy nhất miễn phí.
Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách triển khai MySQL 8.0 với cấu hình đã được thử nghiệm trong trận chiến và quản lý nó theo cách tự động. Bạn sẽ tìm thấy ở đây cách thực hiện:
- Cài đặt ClusterControl
- Quy trình triển khai MySQL
- Triển khai một cụm mới
- Nhập cụm hiện có
- Mở rộng quy mô MySQL
- Bảo mật MySQL
- Theo dõi và thịnh hành
- Sao lưu và phục hồi
- Tự động khôi phục nút và cụm (tự động chuyển đổi dự phòng)
Cài đặt ClusterControl
Để bắt đầu với ClusterControl, bạn cần một máy ảo hoặc máy chủ lưu trữ chuyên dụng. Các yêu cầu về máy ảo và hệ thống được hỗ trợ được mô tả ở đây. Máy ảo cơ sở có thể bắt đầu từ 2 GB, 2 lõi và Dung lượng đĩa 20 GB không gian lưu trữ, tại chỗ hoặc trong đám mây.
Quá trình cài đặt được mô tả kỹ trong tài liệu nhưng về cơ bản, bạn tải xuống tập lệnh cài đặt sẽ hướng dẫn bạn qua các bước. Tập lệnh thuật sĩ thiết lập cơ sở dữ liệu nội bộ, cài đặt các gói, kho lưu trữ cần thiết và các chỉnh sửa cần thiết khác. Đối với môi trường không có truy cập internet, bạn có thể sử dụng quy trình cài đặt ngoại tuyến.
ClusterControl yêu cầu quyền truy cập SSH vào máy chủ cơ sở dữ liệu và việc giám sát có thể dựa trên tác nhân hoặc không có tác nhân. Quản lý là không cần tác nhân.
Để thiết lập SSH không cần mật khẩu cho tất cả các nút đích (ClusterControl và tất cả các máy chủ cơ sở dữ liệu), hãy chạy các lệnh sau trên máy chủ ClusterControl:
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes
Một trong những cách thuận tiện nhất để thử kiểm soát cụm có thể là tùy chọn chạy nó trong vùng chứa docker.
docker run -d --name clustercontrol \
--network db-cluster \
--ip 192.168.10.10 \
-h clustercontrol \
-p 5000:80 \
-p 5001:443 \
-v /storage/clustercontrol/cmon.d:/etc/cmon.d \
-v /storage/clustercontrol/datadir:/var/lib/mysql \
-v /storage/clustercontrol/sshkey:/root/.ssh \
-v /storage/clustercontrol/cmonlib:/var/lib/cmon \
-v /storage/clustercontrol/backups:/root/backups \
severalnines/clustercontrol
Sau khi triển khai thành công, bạn sẽ có thể truy cập giao diện người dùng Web ClusterControl tại {địa chỉ IP của host}:{host's port}, ví dụ:
HTTP: http://192.168.10.100:5000/clustercontrol
HTTPS: https://192.168.10.100:5001/clustercontrol
Triển khai và mở rộng quy mô
Triển khai MySQL 8.0
Khi chúng ta vào giao diện ClusterControl, điều đầu tiên cần làm là triển khai một cơ sở dữ liệu mới hoặc nhập một cơ sở dữ liệu hiện có. Phiên bản mới 1.7.2 giới thiệu hỗ trợ cho phiên bản 8.0 của Oracle Community Edition và Percona Server. Tại thời điểm viết blog này, các phiên bản hiện tại là Oracle MySQL Server 8.0.15 và Percona Server cho MySQL 8.0-15. Chọn tùy chọn “ Triển khai cụm cơ sở dữ liệu ”Và làm theo hướng dẫn xuất hiện.
ClusterControl:Triển khai cụm cơ sở dữ liệuKhi chọn MySQL, chúng tôi phải chỉ định Người dùng, Khóa hoặc Mật khẩu và cổng để kết nối bằng SSH với máy chủ của chúng tôi. Chúng tôi cũng cần một tên cho cụm mới của mình và nếu chúng tôi muốn ClusterControl cài đặt phần mềm và cấu hình tương ứng cho chúng tôi.
Sau khi thiết lập thông tin truy cập SSH, chúng ta phải nhập dữ liệu để truy cập cơ sở dữ liệu của mình. Chúng tôi cũng có thể chỉ định kho lưu trữ nào sẽ sử dụng. Cấu hình kho lưu trữ là một khía cạnh quan trọng đối với các máy chủ và cụm cơ sở dữ liệu. Bạn có thể có ba loại kho lưu trữ khi triển khai máy chủ / cụm cơ sở dữ liệu bằng ClusterControl:
- Sử dụng Kho lưu trữ của Nhà cung cấp
Cung cấp phần mềm bằng cách thiết lập và sử dụng kho phần mềm ưu tiên của nhà cung cấp cơ sở dữ liệu. ClusterControl sẽ cài đặt phiên bản mới nhất của những gì được cung cấp bởi kho lưu trữ của nhà cung cấp cơ sở dữ liệu. - Không Thiết lập Kho lưu trữ của Nhà cung cấp Cung cấp phần mềm
bằng cách sử dụng kho phần mềm có sẵn đã được thiết lập sẵn trên các nút. Người dùng phải thiết lập kho phần mềm theo cách thủ công trên mỗi nút cơ sở dữ liệu và ClusterControl sẽ sử dụng kho này để triển khai. Điều này rất tốt nếu các nút cơ sở dữ liệu đang chạy mà không có kết nối internet. - Sử dụng Kho lưu trữ được sao chép (Tạo kho lưu trữ mới)
Tạo và sao chép kho lưu trữ của nhà cung cấp cơ sở dữ liệu hiện tại và sau đó triển khai bằng cách sử dụng kho lưu trữ được sao chép cục bộ. Điều này cho phép bạn "đóng băng" các phiên bản hiện tại của gói phần mềm.
Trong bước tiếp theo, chúng ta cần thêm các máy chủ của mình vào cụm mà chúng ta sẽ tạo. Khi thêm máy chủ của chúng tôi, chúng tôi có thể nhập IP hoặc tên máy chủ sau đó chọn giao diện mạng. Đối với trường hợp thứ hai, chúng ta phải có máy chủ DNS hoặc đã thêm máy chủ MySQL vào tệp phân giải cục bộ (/ etc / hosts) của ClusterControl, để nó có thể phân giải tên tương ứng mà bạn muốn thêm.
Trên màn hình, chúng ta có thể thấy một ví dụ triển khai với một máy chủ chính và hai máy chủ phụ. Danh sách máy chủ là động và cho phép bạn tạo cấu trúc liên kết phức tạp có thể được mở rộng sau khi cài đặt ban đầu.
ClusterControl:Xác định cấu trúc liên kếtKhi tất cả đã được thiết lập, hãy nhấn vào nút triển khai. Bạn có thể theo dõi trạng thái của việc tạo thiết lập sao chép mới của chúng tôi từ trình giám sát hoạt động ClusterControl. Quá trình triển khai cũng sẽ chăm sóc cài đặt các công cụ mysql phổ biến như bộ công cụ percona và percona-xtradb-backup.
ClusterControl:Triển khai chi tiết cụmSau khi tác vụ kết thúc, chúng ta có thể thấy cụm của mình trong màn hình ClusterControl chính và trên chế độ xem cấu trúc liên kết. Lưu ý rằng chúng tôi cũng đã thêm bộ cân bằng tải (ProxySQL) trước các phiên bản cơ sở dữ liệu.
ClusterControl:TopologyNhư chúng ta có thể thấy trong hình ảnh, khi chúng tôi đã tạo cụm của mình, chúng tôi có thể thực hiện một số tác vụ trên đó, trực tiếp từ phần cấu trúc liên kết.
ClusterControl:Quản lý cấu trúc liên kếtNhập một cụm mới
Chúng tôi cũng có tùy chọn để quản lý thiết lập hiện có bằng cách nhập thiết lập đó vào ClusterControl. Một môi trường như vậy có thể được tạo bằng ClusterControl hoặc các phương thức khác (con rối, đầu bếp, ansible, docker…). Quá trình này đơn giản và không yêu cầu kiến thức chuyên môn.
ClusterControl:Nhập cụm hiện cóĐầu tiên, chúng ta phải nhập thông tin xác thực truy cập SSH vào máy chủ của mình. Sau đó, chúng tôi nhập thông tin xác thực truy cập vào cơ sở dữ liệu của chúng tôi, thư mục dữ liệu máy chủ và phiên bản. Chúng tôi thêm các nút theo IP hoặc tên máy chủ, giống như khi chúng tôi triển khai và nhấn vào Nhập. Khi nhiệm vụ kết thúc, chúng tôi đã sẵn sàng quản lý cụm của mình từ ClusterControl. Tại thời điểm này, chúng tôi cũng có thể xác định các tùy chọn để khôi phục tự động nút hoặc cụm.
Mở rộng quy mô MySQL
Với ClusterControl, việc thêm nhiều máy chủ hơn vào máy chủ là một bước dễ dàng. Bạn có thể làm điều đó từ GUI hoặc CLI. Đối với những người dùng nâng cao hơn, bạn có thể sử dụng ClusterControl Developer Studio và viết điều kiện cơ sở tài nguyên để tự động mở rộng cụm của bạn.
Khi thêm một nút mới vào thiết lập, bạn có tùy chọn để sử dụng bản sao lưu hiện có, do đó không cần phải làm quá tải nút chính sản xuất với công việc bổ sung.
ClusterControl Scaling MySQLVới sự hỗ trợ tích hợp cho bộ cân bằng tải (ProxySQL, Maxscale, HAProxy), bạn có thể thêm và xóa các nút MySQL động. Nếu bạn muốn biết chuyên sâu hơn về cách tốt nhất để quản lý sao chép và phân cụm MySQL, vui lòng đọc sách trắng về sao chép MySQL cho bản sao HA.
Bảo mật MySQL
MySQL đi kèm với rất ít bảo mật. Điều này đã được cải thiện với phiên bản gần đây, tuy nhiên, các hệ thống cấp sản xuất vẫn yêu cầu tweeks trong cấu hình my.cnf mặc định.
ClusterControl loại bỏ lỗi do con người gây ra và cung cấp quyền truy cập vào một bộ tính năng bảo mật, để tự động bảo vệ cơ sở dữ liệu của bạn khỏi bị tấn công và các mối đe dọa khác.
ClusterControl cho phép hỗ trợ SSL cho các kết nối MySQL. Việc kích hoạt SSL sẽ bổ sung một mức độ bảo mật khác cho giao tiếp giữa các ứng dụng (bao gồm cả ClusterControl) và cơ sở dữ liệu. Máy khách MySQL mở các kết nối được mã hóa đến máy chủ cơ sở dữ liệu và xác minh danh tính của các máy chủ đó trước khi chuyển bất kỳ thông tin nhạy cảm nào.
ClusterControl sẽ thực thi tất cả các bước cần thiết, bao gồm cả việc tạo chứng chỉ trên tất cả các nút cơ sở dữ liệu. Những chứng chỉ như vậy có thể được duy trì sau này trong tab Quản lý Khóa.
ClusterControl:Khóa SSL của trình quản lýCác cài đặt máy chủ Percona đi kèm với hỗ trợ bổ sung cho một plugin kiểm tra. Kiểm tra liên tục là một nhiệm vụ cấp thiết để theo dõi môi trường cơ sở dữ liệu của bạn. Bằng cách kiểm tra cơ sở dữ liệu của mình, bạn có thể đạt được trách nhiệm giải trình cho các hành động được thực hiện hoặc nội dung được truy cập. Hơn nữa, cuộc kiểm toán có thể bao gồm một số thành phần hệ thống quan trọng, chẳng hạn như các thành phần liên quan đến dữ liệu tài chính để hỗ trợ một bộ quy định chính xác như SOX hoặc quy định GDPR của EU. Quy trình được hướng dẫn cho phép bạn chọn những gì nên được đánh giá và cách duy trì các tệp nhật ký đánh giá.
ClusterControl:Bật Nhật ký kiểm tra cho Máy chủ Percona 8.0Giám sát
Khi làm việc với các hệ thống cơ sở dữ liệu, bạn sẽ có thể giám sát chúng. Điều đó sẽ cho phép bạn xác định xu hướng, lập kế hoạch nâng cấp hoặc cải tiến hoặc phản ứng hiệu quả với bất kỳ vấn đề hoặc lỗi nào có thể phát sinh.
ClusterControl 1.7.2 mới đi kèm với tính năng giám sát độ phân giải cao được cập nhật cho MySQL 8.0. Nó sử dụng Prometheus làm nơi lưu trữ dữ liệu với ngôn ngữ truy vấn PromQL. Danh sách các trang tổng quan bao gồm MySQL Server General, MySQL Server Caches, MySQL InnoDB Metrics, MySQL Replication Master, MySQL Replication Slave, System Overview và Cluster Overview.
ClusterControl cài đặt các tác nhân Prometheus, định cấu hình số liệu và duy trì quyền truy cập vào cấu hình trình xuất Prometheus thông qua GUI của nó, vì vậy bạn có thể quản lý tốt hơn cấu hình tham số như cờ thu thập cho trình xuất (Prometheus). Chúng tôi đã mô tả chi tiết những gì có thể được theo dõi gần đây trong bài viết Cách giám sát MySQL bằng Prometheus &ClusterControl.
ClusterControl:Trang tổng quanCảnh báo
Là một nhà điều hành cơ sở dữ liệu, chúng tôi cần được thông báo bất cứ khi nào có điều gì đó quan trọng xảy ra trên cơ sở dữ liệu của chúng tôi. Ba phương pháp chính trong ClusterControl để nhận cảnh báo bao gồm:
- thông báo qua email
- tích hợp
- cố vấn
Bạn có thể đặt thông báo qua email ở cấp độ người dùng. Đi tới Cài đặt> Thông báo qua email . Nơi bạn có thể chọn giữa mức độ nghiêm trọng và loại cảnh báo sẽ được gửi.
ClusterControl:Thông báoPhương pháp tiếp theo là sử dụng các dịch vụ Tích hợp. Điều này là để chuyển danh mục sự kiện cụ thể cho dịch vụ khác như vé ServiceNow, Slack, PagerDuty, v.v. để bạn có thể tạo tích hợp và phương pháp thông báo nâng cao trong tổ chức của mình.
ClusterControl:Tích hợpCuối cùng là liên quan đến phân tích số liệu phức tạp trong phần Advisor, nơi bạn có thể xây dựng các kiểm tra và trình kích hoạt thông minh.
ClusterControl:Trình tư vấn tự độngSao lưu và phục hồi
Bây giờ bạn đã thiết lập và chạy MySQL, đồng thời có chức năng giám sát, đã đến lúc thực hiện bước tiếp theo:đảm bảo bạn có bản sao lưu dữ liệu của mình.
ClusterControl:Tạo bản sao lưuClusterControl cung cấp một giao diện để quản lý sao lưu MySQL với hỗ trợ lập lịch và báo cáo sáng tạo. Nó cung cấp cho bạn hai tùy chọn cho các phương pháp sao lưu.
- Lôgic:mysqldump
- Nhị phân:xtrabackup / mariabackup
Một chiến lược sao lưu tốt là một phần quan trọng của bất kỳ hệ thống quản lý cơ sở dữ liệu nào. ClusterControl cung cấp nhiều tùy chọn để sao lưu và khôi phục / khôi phục.
ClusterControl:Lịch sao lưu và Kho lưu trữ sao lưuCó thể định cấu hình lưu giữ sao lưu ClusterControl; bạn có thể chọn giữ lại bản sao lưu của mình trong bất kỳ khoảng thời gian nào hoặc không bao giờ xóa bản sao lưu. Mã hóa AES256 được sử dụng để bảo vệ các bản sao lưu của bạn trước các phần tử giả mạo. Để khôi phục nhanh chóng, các bản sao lưu có thể được khôi phục trực tiếp vào một cụm mới - ClusterControl xử lý toàn bộ quá trình khôi phục từ khởi chạy thiết lập cơ sở dữ liệu mới đến khôi phục dữ liệu, loại bỏ các bước thủ công dễ xảy ra lỗi khỏi quy trình.
Các bản sao lưu có thể được tự động xác minh sau khi hoàn thành và sau đó được tải lên các dịch vụ lưu trữ đám mây (AWS, Azure và Google). Các chính sách lưu giữ khác nhau có thể được xác định cho các bản sao lưu cục bộ trong trung tâm dữ liệu cũng như các bản sao lưu được tải lên trên đám mây.
Tự động khôi phục nút và cụm
ClusterControl cung cấp hỗ trợ nâng cao để phát hiện và xử lý lỗi. Nó cũng cho phép bạn triển khai các proxy khác nhau để tích hợp chúng với ngăn xếp HA của bạn, do đó không cần điều chỉnh chuỗi kết nối ứng dụng hoặc mục nhập dns để chuyển hướng ứng dụng đến nút chính mới.
Khi máy chủ chính gặp sự cố, ClusterControl sẽ tạo một công việc để thực hiện chuyển đổi dự phòng tự động. ClusterControl thực hiện tất cả các công việc nền để chọn một máy chủ mới, triển khai các máy chủ phụ bị lỗi và định cấu hình bộ cân bằng tải.
ClusterControl:Nút tự động phục hồiChuyển đổi dự phòng tự động ClusterControl được thiết kế với các nguyên tắc sau:
- Đảm bảo rằng thiết bị chính đã thực sự chết trước khi bạn chuyển đổi dự phòng
- Chuyển đổi dự phòng chỉ một lần
- Không chuyển đổi dự phòng sang một nô lệ không nhất quán
- Chỉ viết thư cho chính chủ
- Không tự động khôi phục trang cái bị lỗi
Với các thuật toán tích hợp, chuyển đổi dự phòng thường có thể được thực hiện khá nhanh chóng, do đó bạn có thể đảm bảo SLA cao nhất cho môi trường cơ sở dữ liệu của mình.
Quá trình này có thể cấu hình cao. Nó đi kèm với nhiều tham số mà bạn có thể sử dụng để áp dụng khôi phục cho các chi tiết cụ thể của môi trường của bạn. Trong số các tùy chọn khác nhau, bạn có thể tìm thấy replication_stop_on_error, replication_auto_rebuild_slave, replication_failover_blacklist, replication_failover_whitelist, replication_skip_apply_missing_txs, replication_onfail_failover_script và nhiều loại khác.