MariaDB Server không còn là một bản sao của MySQL. Nó đã phát triển thành một ngã ba trưởng thành, triển khai các chức năng mới tương tự như những gì hệ thống cơ sở dữ liệu độc quyền cung cấp ở thượng nguồn. MariaDB 10.3 mở rộng đáng kể danh sách các tính năng doanh nghiệp và với SQL_MODE =Oracle mới trở thành một lựa chọn thú vị cho các công ty muốn chuyển cơ sở dữ liệu Oracle của họ sang cơ sở dữ liệu mã nguồn mở. Tuy nhiên, quản lý vận hành là một lĩnh vực vẫn còn một số việc phải làm và MariaDB yêu cầu bạn xây dựng các tập lệnh của riêng mình.
Có lẽ là một cơ hội tốt để xem xét một hệ thống tự động hóa?
Các thủ tục tự động là chính xác và nhất quán. Chúng có thể cung cấp cho bạn khả năng lặp lại rất cần thiết để bạn có thể giảm thiểu rủi ro thay đổi trong hệ thống sản xuất. Tuy nhiên, khi cơ sở dữ liệu mã nguồn mở hiện đại phát triển quá nhanh, việc giữ cho hệ thống quản lý của bạn ngang hàng với tất cả các tính năng mới là một thách thức khó khăn hơn.
Bước tiếp theo tự nhiên là tìm kiếm các nền tảng tự động hóa. Có nhiều nền tảng mà bạn có thể sử dụng để triển khai hệ thống. Puppet, Chef và Ansible có lẽ là những ví dụ điển hình nhất cho xu hướng mới đó. Những nền tảng này thích hợp cho việc triển khai nhanh chóng các dịch vụ phần mềm khác nhau. Chúng hoàn hảo để triển khai, nhưng vẫn yêu cầu bạn duy trì mã, thay đổi tính năng và thông thường, chúng chỉ bao gồm một khía cạnh công việc của bạn. Những thứ như sao lưu, hiệu suất và bảo trì vẫn cần các công cụ hoặc tập lệnh bên ngoài.
Mặt khác, chúng tôi có các nền tảng đám mây, với giao diện được đánh bóng và nhiều dịch vụ bổ sung để mang lại trải nghiệm được quản lý đầy đủ. Tuy nhiên, nó có thể không khả thi; ví dụ:môi trường kết hợp nơi bạn có thể đang sử dụng đám mây, nhưng vẫn có dấu ấn tại chỗ đáng kể.
Vậy còn lớp quản lý dành riêng cho cơ sở dữ liệu MariaDB của bạn thì sao?
ClusterControl được thiết kế để tự động hóa việc triển khai và quản lý MariaDB cũng như các cơ sở dữ liệu mã nguồn mở khác. Cốt lõi của ClusterControl là chức năng 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ác cụm và phiên bản cơ sở dữ liệu mới, quản lý các 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, mở rộng các nút mới và hơn thế nữa.
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ức tối thiểu, bạn có thể bắt đầu từ RAM VM 2 GB nhỏ, 2 lõi CPU và không gian lưu trữ 20 GB, tại chỗ hoặc trong đám mây.
Phương pháp cài đặt chính là tải xuống trình hướng dẫn cài đặt hướng dẫn bạn qua tất cả các bước (cấu hình hệ điều hành, tải xuống gói và cài đặt, tạo siêu dữ liệu và các bước 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 là không có tác nhân nên bạn không cần cài đặt thêm phần mềm. Nó chỉ yêu cầu quyền truy cập SSH vào máy chủ cơ sở dữ liệu. Nó cũng hỗ trợ giám sát dựa trên tác nhân để có dữ liệu giám sát có độ phân giải cao hơ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
Cài đặt MariaDB Cluster
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 1.7.2 đã giới thiệu hỗ trợ cho phiên bản 10.3 (cùng với 10.0,10.1,10.2). Trong 1.7.3 được phát hành trong tuần này, chúng ta có thể thấy việc triển khai cài đặt trên đám mây được cải thiện.
ClusterControl:Triển khai / NhậpTại thời điểm viết blog này, các phiên bản hiện tại là 10.3.16. Các gói mới nhất được chọn theo mặc định. 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.
Bây giờ là lúc cung cấp dữ liệu cần thiết cho kết nối giữa các nút ClusterControl và DB. Ở bước này, bạn sẽ có máy ảo sạch hoặc hình ảnh của hệ điều hành mà bạn sử dụng bên trong tổ chức của mình. Khi chọn MariaDB, 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.
ClusterControl:Triển khai cụm cơ sở dữ liệuSau 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, đối với MariaDB sẽ là superuser root. Chúng tôi cũng có thể chỉ định kho lưu trữ nào sẽ sử dụng. 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. Không có kho lưu trữ nào sẽ được thiết lập bởi ClusterControl. ClusterControl sẽ dựa trên cấu hình hệ thống (các tệp kho lưu trữ mặc định của bạn).
- 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.
Khi tất cả đã được thiết lập, hãy nhấn vào nút triển khai. Quá trình triển khai cũng sẽ quan tâm đến việc cài đặt các công cụ bổ sung do MariaDB cung cấp như mariabackup và các công cụ từ các nhà cung cấp bên ngoài, phổ biến trong quản trị cơ sở dữ liệu.
Nhậ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.
Đầu tiên, chúng ta phải nhập thông tin xác thực truy cập SSH vào các máy chủ cơ sở dữ liệu hiện có 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 để tự động khôi phục nút hoặc cụm.
ClusterControl:Nhập cụm cơ sở dữ liệu 10.3 hiện cóChia tỷ lệ MariaDB, thêm các nút khác vào cụm cơ sở dữ liệu
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.
ClusterControl:Thêm nút MariaDBClusterControl hỗ trợ một tùy chọn để sử dụng bản sao lưu hiện có, vì vậy 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.
Bảo mật MariaDB
Cài đặt MariaDB mặc định đi kèm với tính năng bảo mật thoải mái. Điều này đã được cải thiện với các 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 các chỉnh sửa trong cấu hình my.cnf mặc định. Việc triển khai ClusterControl đi kèm với cài đặt my.cnf không mặc định (khác nhau đối với các loại cụm khác nhau).
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:Bảng bảo mậtClusterControl cho phép hỗ trợ SSL cho các kết nối MariaDB. 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 MariaDB 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.
Với ClusterControl, bạn cũng có thể kích hoạt kiểm tra. Nó sử dụng plugin kiểm tra do MariaDB cung cấp. 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á.
Giám sát và Cảnh báo
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:Tổng quanClusterControl mới đang 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 Server General, Server Cache, InnoDB Metrics, Replication Master, Replication Slave, System Overview và Cluster Overview.
ClusterControl:DashBoardClusterControl cài đặt các tác nhân Prometheus, định cấu hình các chỉ số 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 các trình xuất (Prometheus).
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 trong 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.
Phươ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 các phương pháp thông báo nâng cao và tích hợp trong tổ chức của mình.
Cuối cùng là liên quan đến phân tích số liệu phức tạp trong phần Cố vấn, 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:Cố vấnGiám sát SQL
Giám sát SQL được chia thành ba phần.
- Truy vấn hàng đầu - trình bày thông tin về các truy vấn chiếm một lượng lớn tài nguyên. Trình theo dõi truy vấn:Các truy vấn hàng đầu
- Truy vấn đang chạy - đó là một danh sách quy trình thông tin được kết hợp từ tất cả các nút của cụm cơ sở dữ liệu vào một chế độ xem. Bạn có thể sử dụng nó để loại bỏ các truy vấn ảnh hưởng đến hoạt động cơ sở dữ liệu của bạn. Giám sát truy vấn:Truy vấn đang chạy
- Ngoại lệ truy vấn - trình bày danh sách các truy vấn có thời gian thực hiện lâu hơn mức trung bình. Giám sát truy vấn:Ngoại lệ truy vấn
Sao lưu và phục hồi
Bây giờ bạn đã thiết lập và chạy MariaDB, đồ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:Kho lưu trữ sao lưuClusterControl cung cấp một giao diện để quản lý sao lưu MariaDB 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.
- Sao lưu lôgic (văn bản):mysqldump
- Bản sao lưu nhị phân:xtrabackup (phiên bản thấp hơn), 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.
Có 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ừ khi 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, vì vậy 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ụ chuyển đổi dự phòng và định cấu hình bộ cân bằng tải.
Chuyể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.
ClusterControl:Auto RecoveryQuá 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.
Chuyển đổi dự phòng là quá trình chuyển sang một thành phần dự phòng lành mạnh, trong sự kiện hỏng hóc hoặc bảo trì, để duy trì thời gian hoạt động. Việc đó có thể được thực hiện càng nhanh, bạn có thể trực tuyến trở lại càng nhanh. Nếu bạn đang tìm cách giảm thiểu thời gian chết và đáp ứng SLA của mình thông qua phương pháp tiếp cận tự động cho TimescaleDB, thì blog này là dành cho bạn.
Bộ cân bằng tải MaxScale
Ngoài MariaDB 10.3, ClusterControl thêm một tùy chọn của bộ cân bằng tải MaxScale 2.3. MaxScale là một proxy nhận biết SQL có thể được sử dụng để xây dựng các môi trường có tính khả dụng cao. Nó đi kèm với nhiều tính năng, tuy nhiên, mục tiêu chính là cho phép cân bằng tải và tính sẵn sàng cao.
ClusterControl:MaxScaleMaxScale có thể được sử dụng để theo dõi tình trạng của nút MariaDB chính và nếu nó bị lỗi, hãy thực hiện chuyển đổi dự phòng nhanh chóng, tự động. Chuyển đổi dự phòng tự động đóng vai trò quan trọng trong việc xây dựng một giải pháp có tính khả dụng cao có thể khôi phục kịp thời sau sự cố.
Phiên cơ sở dữ liệu cân bằng tải
Chia tách đọc-ghi là một tính năng quan trọng để cho phép chia tỷ lệ đọc. Nó là đủ để ứng dụng kết nối với MaxScale và nó phát hiện cấu trúc liên kết, xác định MariaDB nào hoạt động như một chủ và cái nào hoạt động như nô lệ. Nó định tuyến giao thông phù hợp với điều này.
Tóm tắt
Chúng tôi hy vọng rằng blog này sẽ giúp bạn làm quen với các mô-đun quản trị ClusterControl và MariaDB 10.3. Tùy chọn tốt nhất là tải xuống ClusterControl và kiểm tra từng cái.