MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Kiểm tra tự động quá trình nâng cấp cho PXC / MariaDB Galera Cluster

Nâng cấp cơ sở dữ liệu của bạn cho các cụm dựa trên Galera như Percona XtraDB Cluster (PXC) hoặc MariaDB Galera Cluster có thể là một thách thức, đặc biệt là đối với môi trường dựa trên sản xuất. Bạn không thể để mất trạng thái sẵn sàng cao của mình và khiến nó gặp rủi ro.

Quy trình nâng cấp phải được ghi chép đầy đủ và lý tưởng nhất là tài liệu hướng dẫn, kiểm tra nghiêm ngặt và đo điểm chuẩn phải được thực hiện trước khi nâng cấp. Quan trọng nhất, bảo mật và các cải tiến cũng phải được xác định dựa trên bảng thay đổi của việc nâng cấp phiên bản cơ sở dữ liệu của nó.

Với tất cả các mối quan tâm, tự động hóa giúp đạt được quy trình nâng cấp hiệu quả hơn, đồng thời giúp tránh lỗi của con người và cải thiện RTO.

Cách Quản lý Quy trình Nâng cấp Cụm PXC / MariaDB Galera

Nâng cấp Cụm PXC / MariaDB Galera của bạn yêu cầu phải có tài liệu và quy trình phù hợp liệt kê những việc cần làm và những việc cần làm trong trường hợp mọi thứ đi xuống phía nam. Điều đó có nghĩa là một Kế hoạch Liên tục Kinh doanh cũng sẽ bao gồm Kế hoạch Khôi phục Thảm họa của bạn phải được lập. Bạn không thể để mất công việc kinh doanh của mình trong trường hợp gặp khó khăn.

Cách thông thường là bắt đầu trước với môi trường thử nghiệm. Môi trường thử nghiệm phải có cài đặt và cấu hình chính xác giống như môi trường sản xuất của bạn. Bạn không thể tiến hành trực tiếp việc nâng cấp môi trường sản xuất vì bạn không chắc chắn về ảnh hưởng và tác động của nó sẽ xảy ra nếu mọi thứ không theo kế hoạch.

Làm việc với môi trường sản xuất rất nhạy cảm, vì vậy trong hầu hết các trường hợp, thời gian ngừng hoạt động và thời gian bảo trì luôn có để tránh tác động mạnh.

Có hai loại nâng cấp cho PCX hoặc MariaDB Galera Cluster mà bạn cần lưu ý. Đây là bản nâng cấp phát hành chính và bản nâng cấp phát hành nhỏ hoặc thường được gọi là nâng cấp tại chỗ. Nâng cấp tại chỗ là nơi bạn có thể nâng cấp phiên bản cơ sở dữ liệu của mình lên phiên bản nhỏ gần đây nhất bằng cách sử dụng cùng một dữ liệu nhị phân của cơ sở dữ liệu của bạn. Sẽ không có thay đổi vật lý nào đối với bản thân dữ liệu, mà chỉ trên cơ sở dữ liệu nhị phân hoặc các gói phần mềm cơ bản.

Nâng cấp PCX hoặc MariaDB Galera Cluster lên bản phát hành chính

Nâng cấp lên bản phát hành chính có thể là một thách thức, đặc biệt là đối với môi trường sản xuất. Nó liên quan đến một kiểu cấu hình cơ sở dữ liệu phức tạp và các tính năng tích hợp đặc biệt của PXC hoặc MariaDB Galera Cluster. Dữ liệu không gian, dữ liệu được đóng dấu thời gian, dữ liệu máy hoặc bất kỳ dữ liệu đa khía cạnh nào đều rất thận trọng và nhạy cảm với việc nâng cấp. Bạn không thể áp dụng nâng cấp tại chỗ cho quá trình này vì nhiều thay đổi lớn sẽ được thực hiện. Trừ khi bạn có dữ liệu rất nhỏ hoặc dữ liệu bao gồm các dòng hoặc dữ liệu có thể được tạo dễ dàng, bạn có thể an toàn để thực hiện miễn là bạn biết tác động sẽ không ảnh hưởng đến dữ liệu của bạn.

Nếu khối lượng dữ liệu của bạn lớn, thì tốt nhất nên tự động hóa quá trình nâng cấp. Tuy nhiên, nó có thể không phải là một giải pháp lý tưởng để tự động hóa tất cả trình tự trong quá trình nâng cấp vì có thể có các sự cố không mong muốn xảy ra trong giai đoạn nâng cấp lớn. Tốt nhất là tự động hóa các bước và quy trình lặp đi lặp lại với các kết quả đã biết trong một bản nâng cấp lớn. Tại bất kỳ thời điểm nào, cần có một nguồn lực để đánh giá xem quá trình tự động hóa có an toàn hay không để tránh bất kỳ sự tạm dừng nào trong quá trình nâng cấp. Kiểm tra tự động sau khi nâng cấp cũng quan trọng không kém và nó nên được đưa vào như một phần của quá trình sau nâng cấp.

Nâng cấp PCX hoặc MariaDB Galera Cluster lên bản phát hành nhỏ

Bản nâng cấp phát hành nhỏ được gọi là bản nâng cấp tại chỗ thường là cách tiếp cận an toàn hơn để thực hiện quá trình nâng cấp. Điều này là do, các thay đổi phổ biến nhất đối với bản phát hành này là bảo mật và khai thác các bản vá hoặc cải tiến, lỗi (thường là những lỗi nghiêm trọng) hoặc các vấn đề tương thích yêu cầu bản vá, đặc biệt nếu phần cứng hoặc hệ điều hành hiện tại có các thay đổi được áp dụng có thể khiến cơ sở dữ liệu không hoạt động đúng. Mặc dù tác động thường có thể khôi phục được ở một mức độ nhỏ nhất, bạn vẫn phải xem và đọc bảng thay đổi đã được đẩy lên bản nâng cấp phiên bản nhỏ cụ thể.

Triển khai công việc để thực hiện quá trình nâng cấp là một ví dụ lý tưởng cho tự động hóa. Quy trình thông thường rất lặp đi lặp lại và hầu như không gây hại cho Cụm PXC hoặc MariaDB Galera hiện có của bạn. Điều quan trọng nhất là sau khi nâng cấp, kiểm tra tự động sẽ tiến hành để xác định thiết lập, cấu hình, hiệu quả và chức năng không bị hỏng.

Tránh Fiascoes! Hãy sẵn sàng, để nó tự động hóa!

Một khách hàng của chúng tôi đã liên hệ với chúng tôi để yêu cầu hỗ trợ vì sau khi nâng cấp nhỏ cơ sở dữ liệu, một tính năng mà họ đang sử dụng trong cơ sở dữ liệu không hoạt động bình thường. Họ yêu cầu các bước và quy trình về cách hạ cấp và mức độ an toàn của nó. Khách hàng của họ phàn nàn rằng ứng dụng của họ hoàn toàn không hoạt động, nói chung là nó không hữu ích.

Ngay cả đối với một sự cố nhỏ như vậy, một khách hàng bực mình cũng có thể đưa ra nhận xét không tốt về sản phẩm của bạn. Bài học rút ra từ tình huống này là việc không thành công trong quá trình kiểm tra sau khi nâng cấp dẫn đến giả định rằng tất cả các chức năng trong cơ sở dữ liệu đang hoạt động như mong đợi.

Giả sử bạn có kế hoạch tự động hóa quy trình nâng cấp, thì hãy lưu ý rằng loại quy trình tự động hóa khác nhau tùy theo loại nâng cấp mà bạn phải thực hiện. Như đã đề cập trước đó, nâng cấp lớn so với nâng cấp nhỏ có các cách tiếp cận riêng biệt khác nhau. Vì vậy, thiết lập tự động của bạn có thể không áp dụng cho cả hai bản nâng cấp phần mềm cơ sở dữ liệu.

Tự động hóa Sau quá trình Nâng cấp

Tại thời điểm này, lý tưởng là bạn đã hoàn thành quá trình nâng cấp của mình thông qua tự động hóa. Bây giờ cơ sở dữ liệu của bạn đã sẵn sàng để nhận các kết nối máy khách, nó phải tuân theo giai đoạn kiểm tra nghiêm ngặt.

Chạy mysql_upgrade

Việc thực thi mysql_upgrade là rất quan trọng và cực kỳ nên thực hiện sau khi quá trình nâng cấp hoàn tất. mysql_upgrade tìm kiếm sự không tương thích với máy chủ MySQL đã nâng cấp bằng cách thực hiện những việc sau:

  • Nó nâng cấp các bảng hệ thống trong lược đồ mysql để bạn có thể tận dụng các đặc quyền hoặc khả năng mới có thể đã được thêm vào.

  • Nó nâng cấp Giản đồ Hiệu suất và giản đồ hệ thống.

  • Nó kiểm tra các lược đồ của người dùng.

mysql_upgrade xác định xem bảng có vấn đề như không tương thích do những thay đổi trong phiên bản gần đây nhất sau khi nâng cấp hay không và cố gắng giải quyết bằng cách sửa chữa bảng. Ngược lại, nếu nó không thành công, thì thử nghiệm tự động hóa của bạn sẽ phải thất bại và không được tiếp tục sang việc khác. Nó phải được điều tra trước và thực hiện sửa chữa thủ công.

Kiểm tra nhật ký lỗi

Khi quá trình nâng cấp mysql_upgrade được hoàn tất, bạn cần kiểm tra và xác minh các lỗi đã xảy ra. Bạn có thể đặt điều này vào một tập lệnh và kiểm tra bất kỳ nhãn "lỗi" hoặc "cảnh báo" nào trong nhật ký lỗi. Điều rất quan trọng là phải xác định xem có như vậy hay không. Kiểm tra tự động của bạn phải có khả năng bắt các bẫy lỗi hoặc nó có thể đợi người dùng nhập tiếp tục nếu lỗi chỉ là rất nhỏ hoặc dự kiến, nếu không, hãy dừng quá trình nâng cấp.

Thực hiện kiểm tra đơn vị

Môi trường cơ sở dữ liệu TDD (Test Driven Development) là một cách tiếp cận phát triển phần mềm trong đó có một loạt các trường hợp thử nghiệm cần được xác thực và xác định xem việc xác nhận là đúng (đạt) hay sai (không đạt). Một cái gì đó giống như những gì chúng tôi có trong ảnh chụp màn hình bên dưới:

Hình ảnh được cung cấp bởi guru99.com

Đây là một loại kiểm thử đơn vị giúp tránh các lỗi không mong muốn hoặc lỗi lôgic đối với ứng dụng và trong cơ sở dữ liệu của bạn. Hãy nhớ rằng, nếu có dữ liệu không hợp lệ được lưu trữ trong cơ sở dữ liệu, điều đó sẽ gây hại cho tất cả các phân tích và giao dịch kinh doanh, đặc biệt nếu nó liên quan đến tính toán tài chính phức tạp hoặc các phương trình toán học.

Nếu bạn hỏi, có thực sự cần thiết phải thực hiện kiểm tra đơn vị sau khi nâng cấp không? Tất nhiên là thế rồi! Bạn không nhất thiết phải chạy điều này trong môi trường sản xuất. Trong giai đoạn thử nghiệm, tức là trước tiên nâng cấp QAs, môi trường phát triển / dàn dựng của bạn, nó phải được áp dụng trong lĩnh vực đó. Dữ liệu phải là một bản sao chính xác ít nhất hoặc gần giống với môi trường sản xuất của nó. Mục tiêu của bạn ở đây là tránh những kết quả không mong muốn và những kết quả logic chắc chắn sai. Tất nhiên, bạn phải chăm sóc tốt dữ liệu của mình và xác định xem kết quả có vượt qua được bài kiểm tra xác thực hay không.

Nếu bạn định chạy với quá trình sản xuất của mình, thì hãy làm điều đó. Tuy nhiên, đừng cứng nhắc như giai đoạn thử nghiệm của bạn được áp dụng trong môi trường QA, phát triển hoặc tổ chức. Đó là bởi vì bạn phải lập kế hoạch thời gian của mình dựa trên thời lượng bảo trì có sẵn và tránh sự chậm trễ và RTO lâu hơn.

Theo kinh nghiệm của tôi, trong giai đoạn nâng cấp, khách hàng chọn cách tiếp cận nhanh hơn, điều quan trọng là xác định xem tính năng đó có cung cấp kết quả chính xác hay không. Hơn nữa, bạn có thể có một tập lệnh để tự động kiểm tra một tập hợp các hàm logic nghiệp vụ hoặc các thủ tục được lưu trữ vì nó giúp lưu trữ các truy vấn và làm cho cơ sở dữ liệu của bạn trở nên ấm áp.

Khi chuẩn bị cho Unit Test cho cơ sở dữ liệu của bạn, hãy tránh phát minh lại bánh xe. Thay vào đó, hãy xem các công cụ có sẵn mà bạn có thể chọn nếu nó phù hợp với yêu cầu và nhu cầu của bạn. Hãy xem Selenium hoặc xem blog này.

Xác minh danh tính của các truy vấn

Công cụ phổ biến nhất bạn có thể sử dụng là pt-nâng cấp của Percona. Nó xác minh rằng kết quả truy vấn giống hệt nhau trên các máy chủ khác nhau. Nó thực hiện các truy vấn dựa trên các bản ghi đã cho và kết nối được cung cấp (hoặc được gọi là DSN), sau đó so sánh kết quả và báo cáo bất kỳ sự khác biệt đáng kể nào. Nó cung cấp nhiều hơn thế khi các tùy chọn của bạn để thu thập hoặc phân tích các truy vấn, chẳng hạn như thông qua tcpdump chẳng hạn.

Sử dụng pt-upgrade rất dễ dàng. Ví dụ:bạn có thể chạy bằng lệnh sau:

## Comparing via slow log for the given hosts
pt-upgrade h=host1 h=host2 slow.log

## or use fingerprints, useful for debugging purposes
pt-upgrade --fingerprints --run-time=1h mysqld-slow.log h=127.0.0.1,P=5091 h=127.0.0.1,P=5517

## or with tcpdump,
tcpdump -i eth0 port 3306 -s 65535  -x -n -q -tttt     \
  | pt-query-digest --type tcpdump --no-report --print \
  | pt-upgrade h=host1 h=host2

Một thông lệ tốt là sau khi thực hiện nâng cấp, đặc biệt là nâng cấp bản phát hành lớn, pt-lift được sử dụng để tiếp tục và thực hiện phân tích truy vấn xác định sự khác biệt dựa trên kết quả. Bạn nên làm điều này trong giai đoạn thử nghiệm trong khi thực hiện trên QAs hoặc môi trường tổ chức và phát triển để bạn có thể quyết định xem có an toàn hơn để tiếp tục hay không. Bạn có thể thêm cái này vào công cụ tự động hóa của mình và chạy nó dưới dạng một cuốn sách chơi khi nó đã sẵn sàng thực hiện nhiệm vụ của mình.

Làm thế nào để Tự động hóa Quy trình Kiểm tra?

Trong các blog trước đây của chúng tôi, chúng tôi đã trình bày các cách khác nhau để tự động hóa cơ sở dữ liệu của bạn. Các công cụ phổ biến nhất đang thịnh hành là các công cụ phần mềm triển khai IaC (Cơ sở hạ tầng dưới dạng mã) này. Bạn có thể sử dụng Puppet, Chef, SaltStack hoặc Ansible để thực hiện công việc.

Sở thích của tôi luôn là Không thể thực hiện thử nghiệm tự động của mình, nó cho phép tôi tạo sách vở theo vai trò công việc của nó. Tất nhiên, tôi không thể tạo ra một automaton toàn bộ mọi thứ sẽ làm được tất cả mọi thứ vì hoàn cảnh và môi trường khác nhau. Dựa trên các loại nâng cấp đã cho trước đó (nâng cấp lớn so với nâng cấp nhỏ), bạn nên phân biệt quy trình của nó. Ngay cả khi đó chỉ là một bản nâng cấp tại chỗ, bạn vẫn phải đảm bảo rằng sách vở của bạn sẽ thực hiện đúng công việc.

ClusterControl là Người bạn Tự động hóa Cơ sở dữ liệu của Bạn!

ClusterControl là một lựa chọn tốt để thực hiện kiểm tra cơ bản và tự động. ClusterControl không phải là một khuôn khổ để thử nghiệm; nó không phải là một công cụ để cung cấp thử nghiệm đơn vị. Tuy nhiên, đó là một công cụ giám sát và quản lý cơ sở dữ liệu kết hợp nhiều triển khai tự động dựa trên các kích hoạt được yêu cầu từ người dùng hoặc quản trị viên của phần mềm.

ClusterControl cung cấp các nâng cấp phiên bản nhỏ, mang lại sự thuận tiện cho DBA khi thực hiện nâng cấp. Nó cũng thực hiện mysql_upgrade khi đang bay. Vì vậy, bạn không cần phải thực hiện nó theo cách thủ công. ClusterControl cũng phát hiện các phiên bản mới sẽ được nâng cấp và đề xuất các bước tiếp theo để bạn thực hiện. Trong trường hợp không thành công, quá trình nâng cấp sẽ không được tiến hành.

Đây là ví dụ về công việc nâng cấp nhỏ:

Nếu bạn xem xét cẩn thận, mysql_upgrade sẽ chạy thành công. Trong khi, nó không khuyến nghị và tự động nâng cấp tổng thể, đó là vì nó không phải là cách tiếp cận phù hợp để tiến hành. Trong trường hợp đó, bạn phải thăng cấp máy chủ mới, sau đó hạ cấp máy chủ xuống làm nô lệ để thực hiện nâng cấp.

Kết luận

Điều tuyệt vời với ClusterControl là bạn có thể kết hợp kiểm tra nhật ký lỗi, thực hiện kiểm tra đơn vị, xác minh danh tính của các truy vấn bằng cách tạo Cố vấn. Không khó để làm như vậy. Bạn có thể tham khảo blog trước của chúng tôi Sử dụng Cố vấn ClusterControl để Tạo Kiểm tra cho SELinux và Meltdown / Spectre:Phần Một. Điều này minh họa cách bạn có thể tận dụng và kích hoạt công việc tiếp theo phải làm sau khi nâng cấp được thực hiện. ClusterControl có các cảnh báo hoặc cảnh báo tích hợp có thể tích hợp với hệ thống cảnh báo bên thứ ba yêu thích của bạn để thông báo cho bạn về trạng thái hiện tại của thử nghiệm tự động.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB JSON_INSERT () Giải thích

  2. Định cấu hình xác thực LDAP và ánh xạ nhóm với MariaDB

  3. Cách cài đặt, bảo mật và điều chỉnh hiệu suất của máy chủ cơ sở dữ liệu MariaDB

  4. Cách EXTRACT () hoạt động trong MariaDB

  5. Magicbricks di chuyển sang MariaDB để hỗ trợ lưu lượng truy cập khối lượng lớn