MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách bắt đầu với Tự động hóa cơ sở dữ liệu

Tự động hóa cơ sở dữ liệu giúp làm cho các tác vụ phức tạp và tốn thời gian trở nên đơn giản và nhanh chóng. Các nhiệm vụ phổ biến và dễ dàng xác định nhất để tự động hóa là những công việc tốn nhiều thời gian nhưng lặp đi lặp lại. Những điều này thường tiêu tốn năng suất và có thể ảnh hưởng đến tài chính của công ty vì bạn phải trả lương cho những người làm những công việc này. Tuy nhiên, các quy trình tiêu tốn thời gian và công sức một cách không cần thiết có thể được chuyển đổi sang tự động hóa ảo, do đó tránh được công việc thường xuyên buồn tẻ, mệt mỏi.

Tự động hóa cơ sở dữ liệu đã là một thực tiễn phổ biến của các quản trị viên cơ sở dữ liệu và quản trị viên máy chủ, những người hiện nay thường được gọi là DevOps. DevOps cũng đề cập đến sự kết hợp của DBA và các tác vụ quản trị máy chủ. Theo cách cũ, các tác vụ tự động truyền thống và phổ biến được viết dưới dạng một chuỗi câu lệnh SQL hoặc tệp .sql, triển khai và cung cấp máy chủ thông qua tập lệnh, thiết lập mã hóa / giải mã hoặc khai thác bảo mật cho môi trường mà tự động hóa của bạn được cho là chạy. Ở đây, tự động hóa không phải là một ví dụ về việc một công ty thay thế con người bằng các tập lệnh. Nó ở đó như một trợ lý để đưa mọi thứ vào tốc độ và hoàn thành công việc nhanh hơn với ít lỗi hơn. Tự động hóa không thể thay thế cách các DBA thực hiện nhiệm vụ của họ hoặc giá trị mà họ có thể mang lại cho toàn bộ công ty hoặc tổ chức.

Các công cụ phức tạp dành cho Cơ sở hạ tầng dưới dạng mã (IaC) như Puppet, Chef, Ansible, SaltStack và Terraform giúp DBA hoàn thành những tác vụ dễ dàng sao chép đó, chẳng hạn như sao lưu và khôi phục, không thành công, triển khai các cụm mới, điều chỉnh cài đặt bảo mật, Nhân hệ điều hành và điều chỉnh hiệu suất cơ sở dữ liệu, v.v. Với sự trợ giúp của tự động hóa, nhiều DBA cũng đã cải thiện hoặc chuyển kỹ năng của họ từ việc tập trung vào các nhiệm vụ cụ thể trong miền dữ liệu sang cũng bao gồm cách viết mã để sử dụng các công cụ IaC này, giúp mọi thứ dễ dàng hơn so với cách sử dụng phương pháp truyền thống. Hiện tại cũng có các công cụ giúp quản lý nội dung của bạn trên đám mây dễ dàng hơn, chẳng hạn như quản lý tài khoản người dùng công ty, nhật ký, triển khai phiên bản hoặc quản lý máy chủ của bạn. Các công cụ dành cho đám mây từ ba nhà cung cấp đám mây lớn bao gồm AWS CloudFormation, Azure Resource Manager và Google Cloud Deployment Manager, đồng thời cho phép DBA hoặc DevOps tận dụng sức mạnh của tự động hóa và làm cho mọi thứ nhanh hơn. Điều này không chỉ gây ấn tượng với tổ chức hoặc giám đốc điều hành công ty của bạn mà còn cả những khách hàng tin cậy vào dịch vụ của bạn.

Cần gì để được tự động hóa?

Như đã đề cập ở trên, tự động hóa cơ sở dữ liệu không phải là mới đối với DBA, quản trị viên máy chủ hoặc thậm chí DevOps. Không có lý do gì để do dự hoặc đặt câu hỏi liệu có nên tự động hóa hay không. Như đã nêu trước đó, các trường hợp phổ biến dễ dàng xác định đối với tự động hóa là các tác vụ có tính chất lặp đi lặp lại.

Dưới đây, chúng tôi liệt kê những điều mang tính tiên đề từ quan điểm của DBA.

  • Cấp phép máy chủ của bạn (ví dụ:khởi chạy các phiên bản VM như sử dụng vagrant, khởi chạy docker hoặc khởi chạy Kubernetes của bạn nền tảng) và thiết lập quyền truy cập SSH hoặc thiết lập quyền truy cập VPN

  • Triển khai cụm cơ sở dữ liệu mới

    • Xác định loại nhà cung cấp cơ sở dữ liệu, kiểu thiết lập (chính / dự phòng, sao chép tổng thể, đồng bộ nhân rộng)

  • Nhập cụm cơ sở dữ liệu hiện có

  • Triển khai / nhập cơ sở dữ liệu hiện có vào cụm cơ sở dữ liệu hiện tại của bạn

  • Tự động chuyển đổi dự phòng hoặc chuyển đổi

  • Khôi phục nút hoặc cụm tự động

  • Thăng cấp bản sao / Nô lệ hoặc Hạ cấp một trang chủ

  • Triển khai bộ cân bằng tải (ví dụ:ProxySQL, HaProxy, pgpool, pgbouncer, MaxScale, Keepalived)

  • Sao lưu và Khôi phục

  • Thiết lập môi trường giám sát cơ sở dữ liệu của bạn (ví dụ:triển khai giám sát dựa trên tác nhân như Prometheus)

  • Bật điều chỉnh bảo mật

  • Thực hiện điều chỉnh và tối ưu hóa tự động phù hợp với loại môi trường

  • Bật hệ thống cảnh báo về các tích hợp bên thứ ba khác

  • Tạo cảnh báo hoặc cảnh báo và thông báo

  • Tạo báo cáo như đồ thị

  • Xử lý nhật ký truy vấn (nhật ký chậm) để phân tích truy vấn

  • Tạo phân tích truy vấn

  • Lưu trữ hoặc dọn dẹp cơ sở dữ liệu

Tất nhiên có rất nhiều trường hợp bạn có thể tự động hóa, nhưng điều này liệt kê các tác vụ phổ biến nhất và việc tự động hóa chúng là điều không cần bàn cãi. Đây là những loại công việc có tính chất lặp đi lặp lại và phần lớn dễ xảy ra sai sót, đặc biệt là khi chúng phải thực hiện nhanh chóng do hạn chế về thời gian.

Những thứ không nên tự động hóa là gì?

Những khu vực này là nơi các DBA hoặc SysAdmins của bạn thực hiện hầu hết công việc. Tự động hóa không thể thay thế bộ kỹ năng và trí thông minh của DBA khi nói đến những thứ không thể tự động hóa.

Người ta hiểu rằng một DBA phải có kỹ năng, hiểu biết sâu sắc về:cơ sở dữ liệu họ đang sử dụng và cơ sở dữ liệu sẽ được triển khai; dữ liệu đang được xử lý và lưu trữ; và liệu cách chúng đang được xử lý có an toàn hay không hoặc nó có tuân thủ các tiêu chuẩn bảo mật của công ty hay không. Các DBA cũng được xem xét và hầu hết được coi là DevOps, cũng như kiến ​​trúc sư tự động hóa. Họ ra lệnh cho những gì phải làm và những gì sẽ không được làm. Những điều phổ biến không nên được tự động hóa là những điều sau:

  • Đặt sao lưu đã lên lịch của bạn. Các bản sao lưu theo lịch trình tất nhiên là tự động và phải chạy tương ứng, nhưng ngày hoặc khoảng thời gian đã lên lịch cần phải dựa trên thời gian thấp điểm mà máy chủ sẽ thực hiện. Ví dụ:bạn không thể sao lưu nếu cụm bận vào ban ngày. Cũng có những trường hợp phổ biến khi máy chủ vẫn bận vào ban đêm tùy thuộc vào loại ứng dụng bạn đang phục vụ và vị trí địa lý của ứng dụng đó.

  • Tự động chuyển đổi dự phòng không thể thăng cấp một trang cái mới. Đây là một trong những trường hợp quan trọng nhất và phải được hiểu rõ. Nếu bạn có các tập lệnh tự động được thiết kế để chuyển đổi dự phòng, thì nó không nên được thiết kế để bắt buộc thực hiện chuyển đổi dự phòng trong trường hợp nó xảy ra lỗi .. Bạn có thể không bao giờ biết vấn đề chính là gì và nếu có sự cố, có thể có các giao dịch để được phục hồi trước khi bất cứ điều gì khác nên được thực hiện. Ví dụ:đó có thể là một giao dịch tài chính được lưu trữ trên máy chủ bị lỗi và bạn buộc phải thăng cấp cho một nô lệ, nhưng nô lệ ứng cử viên đã không thể sao chép giao dịch mới nhất. Trong trường hợp đó, bạn có thể nhận được dữ liệu bị hỏng.

  • Phục hồi dữ liệu. Tất nhiên, khi bạn gặp phải lỗi dữ liệu hoặc một cụm không thể khôi phục từ quá trình khôi phục nút / máy chủ tự động của bạn, bạn có thể phải điều tra nguyên nhân chính. Bạn phải ghi lại điều này cho RCA (Phân tích nguyên nhân gốc rễ) để tránh nó trong tương lai. Tuy nhiên, có những trường hợp lỗi là lỗi của phần mềm cơ sở dữ liệu bạn đang sử dụng hoặc có thể là lỗi máy ảo.

  • Trôi dữ liệu hoặc Không thống nhất dữ liệu. Đây chắc chắn không phải là một tình huống lý tưởng cho tự động hóa. Bạn không muốn Automaton của mình khái quát hóa hoặc rập khuôn dữ liệu của bạn theo một thực tiễn áp dụng khái niệm này:"nếu dữ liệu bị hỏng, hãy tự động sửa nó". Nó chắc chắn không phải là một thực hành tốt. Có rất nhiều trường hợp mà trước tiên bạn phải tìm hiểu kỹ và điều tra rồi mới quyết định được. Ví dụ:trong MySQL, có một công cụ Percona được gọi là pt-table-checksum, sau đó là pt-table-sync mà cả hai đều có tương quan với nhau để khắc phục sự mâu thuẫn dữ liệu. Bạn chắc chắn sẽ không muốn tự động hóa việc này trừ khi bạn biết rất rõ dữ liệu của mình, hoặc dữ liệu của bạn không rộng hoặc dữ liệu có thể được tạo lại.

  • Điều chỉnh hạt nhân và điều chỉnh cơ sở dữ liệu. Tất nhiên, điều này có thể được xem là mâu thuẫn với những gì chúng tôi đã nêu ở trên. Tuy nhiên, có các biến có thể điều chỉnh tự động được biết đến đối với các loại môi trường cụ thể, chẳng hạn như các tham số bộ nhớ, vùng đệm, HugePages hoặc bộ nhớ ảo. Tuy nhiên, chắc chắn có rất nhiều thông số cần được tìm hiểu, điều tra, thử nghiệm, đo điểm chuẩn trước khi bạn quyết định áp dụng các thay đổi hay không.

Chắc chắn, có rất nhiều thứ bạn không nên tự động hóa mà chúng tôi chưa đề cập đến. Trong thế giới cơ sở dữ liệu, có rất nhiều tình huống phụ thuộc vào loại dữ liệu và ứng dụng bạn đang phục vụ. Hãy ghi nhớ điều đó và nhạy bén với những thứ có thể tự động hóa. Nếu không, tự động hóa có thể dẫn đến phá hủy.

Công cụ Tự động hóa

Đây là nơi bạn có thể bắt đầu với các tập lệnh tự động hóa của mình. Thành phần quan trọng nhất của tự động hóa là tốc độ! Khi nói đến tốc độ, nó không được đo lường bằng cách một công cụ có thể hoàn thành nhiệm vụ nhanh như thế nào, mà là mức độ thoải mái của các nhà phát triển hoặc người bảo trì các tập lệnh hoặc IaC với công cụ. Chắc chắn, có những ưu và nhược điểm cho các công cụ tự động hóa này. Điều quan trọng hơn là xác định các thông số kỹ thuật của các công cụ tự động hóa này, vì có nhiều thứ khác để cung cấp ngoài việc chỉ là tự động hóa. Thông thường hơn, chúng cung cấp cơ chế quản lý và triển khai cấu hình.

Tự động hóa là tất cả về tốc độ, nghĩa là tốc độ của nó trái ngược với việc sử dụng cách tiếp cận truyền thống hoặc sử dụng các tập lệnh ngôn ngữ ưa thích của riêng bạn. Tất nhiên, sử dụng các tập lệnh của riêng bạn có thể là hoàn hảo, nhưng nếu tổ chức hoặc công ty của bạn là vì sự phát triển công nghệ, thì việc sử dụng các công cụ của bên thứ ba như Ansible, Puppet, Chef, SaltStack hoặc Terraform là lý tưởng hơn cả. Tại sao nó lý tưởng hơn? Các công cụ của bên thứ ba này được thiết kế để đánh bại các nhiệm vụ dài và kéo dài để thực hiện và có thể được thực hiện với vài dòng mã.

Ví dụ:Terraform được biết đến với các lợi ích về tính di động của nó. Chỉ cần tưởng tượng, với Terraform, bạn có một công cụ và một ngôn ngữ để mô tả cơ sở hạ tầng cho Google Cloud, AWS, OpenStack và BẤT KỲ đám mây nào khác. Nếu bạn chuyển sang nhà cung cấp khác, bạn không cần phải sửa đổi hoặc làm lại các tập lệnh của mình. Nó cũng cho phép bạn triển khai toàn bộ ngăn xếp và bao gồm quản lý các vùng chứa Kubernetes của bạn. Hãy tưởng tượng rằng, từ một công cụ, bạn có thể làm được nhiều việc.

Khi bắt đầu tự động hóa cơ sở dữ liệu của bạn, đừng bắt đầu từ đầu vì mục tiêu của tự động hóa là tốc độ! Một lần nữa, ở đây tốc độ không được đo bằng tốc độ hoàn thành công việc mà là tốc độ nhanh như thế nào so với cách tiếp cận truyền thống hoặc các tác vụ thủ công. Tất nhiên, tốc độ hoàn thành công việc nhanh như thế nào phụ thuộc vào tất cả, ví dụ:một phần tập lệnh của bạn có thể gây ra sự chậm trễ kéo dài do nhiều dữ liệu đã xử lý và thời gian thực thi công việc kéo dài.

Luôn Chọn Dựa trên Yêu cầu của Bạn

Khi chọn công cụ, đừng dựa vào cường điệu hoặc những gì phổ biến nhất mà bạn đã nghe nói đến. Mặc dù các công cụ chính đã được đề cập trước đó được cộng đồng chấp nhận phần lớn, nhưng chúng cũng gây ra sự phức tạp. Ví dụ:khi sử dụng Ansible, bạn phải làm quen với YAML, trong khi với Puppet hoặc Chef, bạn phải làm quen với Ruby và ngôn ngữ dành riêng cho miền cơ bản của nó.

Tận dụng các Công cụ Doanh nghiệp Có sẵn

Có rất nhiều công cụ tự động hóa cơ sở dữ liệu đầy hứa hẹn để bắt đầu. Nếu bạn cảm thấy không thoải mái và tốn thời gian khi thuê DBA, SysAdmins hoặc DevOps để mở rộng nhóm của mình, thì có những công cụ sẵn có cung cấp trợ giúp về quản lý cơ sở dữ liệu, quản lý sao lưu và khả năng quan sát.

Somenines ClusterControl để Tự động hóa Cơ sở dữ liệu

ClusterControl cung cấp rất nhiều tác vụ tự động giúp loại bỏ nhu cầu tiếp cận thủ công. ClusterControl được thiết kế để giúp các tổ chức, công ty, DBA, SysAdmins, DevOps và cả các nhà phát triển vận hành cơ sở dữ liệu dễ dàng. Mục tiêu của nó là tự động hóa các tác vụ lặp đi lặp lại và chạy dài. Ưu điểm lớn của ClusterControl là nó là một công cụ quản lý cơ sở dữ liệu hoàn thiện và có các tính năng mở rộng rất mạnh mẽ để quản lý các máy chủ cơ sở dữ liệu của bạn. Nó cũng áp dụng các phương pháp hay nhất theo tiêu chuẩn ngành, cập nhật nhất để quản lý cơ sở dữ liệu của bạn. Chúng tôi lắng nghe nhu cầu của khách hàng, sau đó chúng tôi triển khai các khả năng để đáp ứng họ.

Một số chức năng tự động hóa ClusterControl giàu tính năng nhất mà bạn có thể tận dụng là:

  • Triển khai máy chủ cơ sở dữ liệu của bạn. Chọn nhà cung cấp, chỉ định phiên bản phù hợp, xác định loại cụm, chỉ định tên máy chủ / IP của máy chủ như tên người dùng, mật khẩu, v.v.

  • Nhập các máy chủ hiện có vào ClusterControl

  • Triển khai trên đám mây

  • Theo dõi và báo cáo tình trạng cơ sở dữ liệu

  • Cảnh báo và thông báo

  • Sao lưu và Khôi phục

  • Xác minh sao lưu

  • Tự động chuyển đổi dự phòng, chuyển đổi

  • Thiết lập tính khả dụng cao

  • Thăng chức nô lệ hoặc giáng cấp bậc thầy

  • Thêm bản sao mới / hiện có vào cụm của bạn

  • Mở rộng một cụm khác dưới dạng nô lệ của một cụm khác (hoàn hảo cho thiết lập địa lý để khắc phục thảm họa của bạn)

  • Khôi phục nút và cụm

  • Tích hợp LDAP

  • Thông báo cảnh báo của bên thứ ba

  • Triển khai bất kỳ bộ cân bằng tải nào trong danh sách mở rộng (pgbouncer, ProxySQL, MaxScale, HAProxy, Keepalived, garbd )

  • Triển khai giám sát dựa trên tác nhân bằng cách sử dụng nhà xuất khẩu Prometheus

  • Phân tích truy vấn

  • Điều chỉnh bảo mật

  • Tự động điều chỉnh các tham số cơ sở dữ liệu và nhân hệ điều hành

Ngoài tất cả những điều này, ClusterControl cũng có các cố vấn tích hợp cho phép DBA hoặc DevOps tạo các tập lệnh của riêng họ và tích hợp vào ClusterControl Performance Advisors.

Tóm tắt

Tự động hóa cơ sở dữ liệu giúp tăng tốc các tác vụ phức tạp nhưng lặp đi lặp lại. Nó giúp các DBA nhanh chóng tiến hành các nhiệm vụ khác nhau và cải thiện kỹ năng của họ tùy thuộc vào phạm vi công việc liên quan. Tự động hóa cơ sở dữ liệu giải phóng các DBA trở nên đổi mới hơn trong khi vẫn quản lý cơ sở dữ liệu một cách thoải mái. Tự động hóa cơ sở dữ liệu không thay thế vai trò của DBA. Sẽ luôn cần những người có kỹ năng và thông minh để quản lý cơ sở dữ liệu của bạn, đặc biệt là khi thảm họa xảy ra. Luôn dựa vào các công cụ mà các DBA của bạn đề xuất, đồng thời tin tưởng vào các kỹ năng DBA của họ để quản lý tình trạng và tuổi thọ của cơ sở dữ liệu của bạn.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để tạo một chỉ mục lồng nhau trong MongoDB?

  2. truy vấn mongodb với cả AND và OR

  3. Hiện có sẵn:Phiên bản MongoDB được lưu trữ đầy đủ trên AWS

  4. Truy vấn MongoDB với tiêu chí độ dài

  5. Xuất json hợp lệ từ bộ sưu tập mongodb