Top 5 công cụ mã nguồn mở dành cho MySQL administrator

Sử dụng những công cụ tuyệt vời này để cải thiện CLI và web admin, SQL queries, schema migration, sao chép và phục hồi môi trường MySQL open source của bạn.

Đối với các database administrators (DBA), việc giữ cho cơ sở dữ liệu chạy ở tốc độ tối đa có thể giống như con quay: tốc độ, tập trung, phản ứng nhanh với cái đầu lạnh và thỉnh thoảng hãy nhờ vả từ người xem hữu ích. Database là trung tâm của sự thành công của hầu hết các ứng dụng. Bởi vì DBA chịu trách nhiệm về dữ liệu của tổ chức, việc tìm kiếm các công cụ đáng tin cậy giúp họ hợp lý hóa quá trình quản lý cơ sở dữ liệu và giảm bớt các công việc bảo trì hàng ngày là rất cần thiết. DBAs cần những công cụ đủ tốt để giữ cho hệ thống của họ hoạt động trơn tru.

Vậy các công cụ đáng tin cậy cho các MySQL administrator là gì? Ở đây tôi chia sẻ 5 công cụ mã nguồn mở hàng đầu các MySQL administrator và công dụng của chúng trong việc hỗ trợ các công việc quản trị hàng ngày MySQL. Đối với mỗi công cụ, tôi đã cung cấp liên kết tới kho GitHub và liệt kê số lượng GitHub star tại thời điểm viết.

  Tại sao không bao giờ nên sử dụng utf8 trong MySQL?
  MySQL ngoại truyện

Mycli

Dự án Mycli cung cấp MySQL tự động hoàn thành dòng lệnh và đánh dấu cú pháp. Đây là một trong những công cụ phổ biến nhất của MySQL.

Các hạn chế về an ninh chẳng hạn như jump host và xác thực hai yếu tố để lại nhiều MySQL DBA với lệnh chỉ truy cập vào hệ thống của họ. Trong những trường hợp như vậy, các công cụ GUI yêu thích giống như MySQL Workbench, Monyog, và các công cụ khác không phải là một lựa chọn.

Tại dòng lệnh, ta sẽ tốn nhiều thời gian tại vùng light-on-black terminal. Vì vậy, một trong những điều tuyệt vời về Mycli là sự phong phú của cú pháp. Điều này cho phép bạn, ví dụ, để trực quan seperate function và các nhà khai thác từ chuỗi query trong mệnh đề WHERE. Đối với một truy vấn ngắn, dòng đơn không phải là một vấn đề lớn, nhưng nó sẽ thay đổi khi bạn làm việc với các query thực hiện các JOIN operation trên nhiều hơn một vài bảng. Tôi đang dùng JOIN bằng cách sử dụng các cột index? Tôi có thể lọc bằng cách sử dụng ký tự đại diện trong mệnh đề WHERE? Mycli hỗ trợ các query với nhiều dòng và được đánh dấu cú pháp, điều này có nghĩa là bạn có thể tìm hiểu về các phần quan trọng nhất khi xem xét hoặc tối ưu hóa query. Bạn có thể chọn từ một số cú pháp làm nổi bật hay tạo ra một số của riêng bạn.

Các tính năng đáng giá khác của Mycli thực sự thông minh. Nó này cho phép bạn chọn tên bảng và cột từ danh sách bằng cách nhập chỉ vài ký tự đầu tiên. Đầu vào hiện tại của bạn không bị bỏ qua để chạy lệnh SHOW CREATE TABLE bởi vì bạn quên tên cột mà bạn muốn xuất hiện trong mệnh đề WHERE!

Cách thức hoạt động của Mycli

Với Mycli, bạn có thể ẩn danh các query ưa thích bằng việc sử dụng sử dụng \ fs, ví dụ: \ fs myAlias myQuery. Điều này rất tiện dụng, vì bạn có thể thực hiện tquery bằng cách sử dụng \ f myAlias bất cứ khi nào cần thiết.

Dự án Mycli sử dụng BSD 3 license. Với sự 44 comtributor, 1.2k cam kết, và 5k sao.

Gh-ost

Nếu như 99% người dùng của MySQL DBA phải đối mặt với việc thay đổi đối với bảng MySQL trong khi vẫn lo sợ tác động lên quá trình làm việc thì bạn nên cân nhắc sử dụng Gh-ost (GitHub Online Schema Migration). Gh-ost cung cấp các thay đổi lược đồ MySQL mà không blocking write, hay không sử dụng các trigger, với khả năng tạm dừng và tiếp tục quá trình di chuyển!

Tại sao việc này lại quan trọng đến vậy? Vì MySQL 5.6 được vận chuyển với ALTER TABLE mới … ALGORITHM = INPLACE DDL (Data Definition Language), có thể chỉnh sửa một bảng mà không blocking wite cho các hoạt động chung như thêm một index (B-tree). Tuy nhiên, vẫn còn một vài điều kiện mà ( DML statement) bị chặn, đáng chú ý nhất là việc bổ sung một index ĐẦY ĐỦ, mã hoá không gian bảng và chuyển đổi thành định dạng cột.

Một số công cụ thay đổi giản đồ trực tuyến phổ biến khác, chẳng hạn như trình thay đổi giản đồ-trực tuyến Percona, bằng cách thực hiện một bộ ba trình trigger (INSERT, UPDATE và DELETE) trên máy chủ để giữ một bảng sao chép để đồng bộ với sự thay đổi. Điều này giới thiệu một hình phạt hiệu suất nhỏ nhờ vào viết khuếch đại, nhưng đáng kể hơn yêu cầu bảy trường hợp khóa metadata. Điều này có hiệu quả ngăn chặn DML Data Manipulation Language).

Vì Gh-ost hoạt động sử dụng binary log, nó không dễ bị ảnh hưởng bởi những hạn chế  trigger-based. Cuối cùng, Gh-ost có thể kích hoạt hoạt động một cách hiệu quả đến mức không, cho phép bạn tạm dừng quá trình di chuyển lược đồ một thời gian nếu máy chủ của bạn bắt đầu xảy ra xung đột và tiếp tục khi bubble vẫn hoạt động.

Các chế độ vận hành của Gh-ost

Vậy Gh-ost hoạt động như thế nào? Mặc định, Gh-ost kết nối với một bản sao (slave), xác định chủ, và di chuyển trên máy chủ. Nó nhận các thay đổi trên một bản sao cho bảng nguồn trong binlog_format = ROW, phân tích cú pháp và chuyển đổi các câu lệnh này để được thực hiện lại trên shadow table của Master. Nó theo dõi việc đếm các hàng trên bản sao và xác định khi nào là thời gian để thực hiện một atomic cutover (bảng chuyển đổi).

Gh-ost cung cấp một chế độ thay thế nơi bạn thực hiện việc di chuyển trực tiếp trên master (cho dù nó có slave hay không), đọc lại các sự kiện binlog_format=ROW của Master, và sau đó áp dụng lại chúng vào sahdow table.

Gh-ost general flow.

Tùy chọn cuối cùng cho phép di chuyển chỉ trên bản sao mà không ảnh hưởng đến master, vì vậy bạn có thể thử nghiệm hoặc bằng cách khác xác thực việc di chuyển

Lưu ý rằng nếu lược đồ của bạn ở nước ngoài, thì Gh-ost có thể không hoạt động trơn tru, vì không được hỗ trợ.

Lưu ý rằng oak-online-alter-table là tiền thân của Gh-ost. Bạn có thể đọc một so sánh giữa Gh-ost và pt-online-schema-change performance của Peter Zaitsev, CEO của Percona, cùng với phản hồi từ Shlomi Noach, tác giả và người duy trì bộ công cụ OAK và Gh-ost.

Dự án Gh-ost sử dụng MIT license. Với 29 contributor, gần 1k cam kết, và 3k sao.

PhpMyAdmin

Một trong những dự án chạy dài hơi và trưởng thành nhất trong số các công cụ MySQL là công cụ PhpMyAdmin cho phép quản lý MySQL qua web. phpMyAdmin cho phép DBA để duyệt và chỉnh sửa các đối tượng cơ sở dữ liệu MySQL: database, bảng biểu, view, field, và các index. Có các tùy chọn để thực hiện xuất dữ liệu bằng cách sử dụng một tá định dạng, sửa đổi người dùng MySQL và đặc quyền của họ, và – yêu thích của tôi-thực hiện các ad-hoc query.

PhpMyAdmin status page showing questions, connections/processes, and traffic graphs.
Giao diệnPhpMyAdmin bắt đầu.

Bạn cũng sẽ tìm thấy tab Status với những câu hỏi, kết nối/quy trình và lưu lượng truy cập mạng cho trường hợp cơ sở dữ liệu cho phép, cùng với tab Advisor cho bạn thấy danh sách các vấn đề về hiệu năng có thể cùng với các đề xuất khắc phục.

PhpMyAdmin sử dụng GPLv2 license. Đây là một dự án khổng lồ với hơn 800 contributor, 112k cam kết tuyệt vời, và 2.7k sao. Bản giới thiệu trực tuyến hiện có tại https://demo.phpmyadmin.net/master-config/

Sqlcheck

SQL anti-pattern làm chậm các query, nhưng thường phải yêu cầu DBA có kinh nghiệm và nghiên cứu phát triển qua mã để xác định và giải quyết chúng. Sqlcheck phản ánh những nỗ lực của Joy Arulraj để soạn thảo cuốn sách “SQL Anti-patterns: Avoiding the Pitfalls of Database Programming” của Bill Karwin. Karwin phân loại thành bốn loại anti-pattern:

  1. Thiết kế cơ sở dữ liệu hợp lý
  2. Thiết kế cơ sở dữ liệu vật lý
  3. Query
  4. Phát triển ứng dụng
Sqlcheck khi làm việc.

Sqlcheck trở thành mục tiêu tại nhiều mức độ rủi ro, được phân loại là rủi ro thấp, trung bình hoặc cao. Điều này hữu ích nếu danh sách các anti-pattern của bạn lớn, vì bạn có thể ưu tiên các truy vấn có tác động hiệu quả lớn nhất. Tất cả những gì bạn cần làm để bắt đầu là thu thập một danh sách các truy vấn riêng biệt của bạn vào một tệp tin và chuyển chúng như một đối số cho công cụ.

Tôi đã dùng mẫu lấy từ môi trường PMM Demo để tạo ra kết quả sau:

[michael@fedora ~]$ sqlcheck —file_name PMMDemoQueries.txt
+————————————————————————-+
|                   SQLCHECK                      |
+————————————————————————-+
> RISK LEVEL    :: ALL ANTI-PATTERNS
> SQL FILE NAME :: output
> COLOR MODE    :: ENABLED
> VERBOSE MODE  :: DISABLED
> DELIMITER     :: ;
————————————————————————-
==================== Results ===================

————————————————————————-
SQL Statement: select table_schema, table_name, table_type, ifnull(engine, ‘none’) as engine,
ifnull(version, ‘0’) as version, ifnull(row_format, ‘none’) as row_format,
ifnull(table_rows, ‘0’) as table_rows, ifnull(data_length, ‘0’) as data_length,
ifnull(index_length, ‘0’) as index_length, ifnull(data_free, ‘0’) as data_free,
ifnull(create_options, ‘none’) as create_options from information_schema.tables
where table_schema = ‘innodb_small’;
[output]: (HINTS) NULL Usage
[Matching Expression: null]
...
==================== Summary ===================
All Anti-Patterns and Hints  :: 7
>  High Risk   :: 0
>  Medium Risk :: 0
>  Low Risk    :: 2
>  Hints       :: 5

Sqlcheck được bao gồm trong Apache 2.0 license. Dự án có năm người đóng góp, 187 thành viên, và 1,4k sao.

Orchestrator

Orchestrator là công cụ quản lý sẵn có với khả năng nhân rộng cao. Nó cung cấp khả năng để tìm ra replication topology của một môi trường MySQL bằng cách thu thập dữ liệu thay đổi của chuỗi để xác định các master và slave. Nó cũng có thể được sử dụng để tái cấu trúc lại replication topology thông qua GUI, cung cấp một giao diện drag-and-drop để thúc đẩy một slave cho một master. Quá trình vận hành này rất an toàn. Trong thực tế, Orchestrator từ chối bất kỳ hoạt động bất hợp pháp để không phá vỡ hệ thống của bạn.

Cuối cùng, Orchestrator có thể hỗ trợ khôi phục khi các nodes bị lỗi, vì nó sử dụng khái niệm về trạng thái để lựa chọn phương pháp khôi phục chính xác và quyết định quy trình quảng bá chính phù hợp để áp dụng.

Orchestrator là một công cụ khác được cung cấp bởi Shlomi Noach tại GitHub. Nó được bao gồm trong Apache 2.0 License. Orchestrator có 34 contributor, 2,780 cam kết, và 900 sao.

Orchestrator cung cấp một cửa sổ làm việc vào MySQL để  nhân rộng và phục hồi.

“Keeping the plates spinning”

Percona Monitoring and Management (PMM) đảm nhiệm công việc làm nổi bật các khu vực cần sự chú ý và giúp quản trị cơ sở dữ liệu xác định và giải quyết các vấn đề cơ sở dữ liệu.

PMM kết hợp một số công cụ mã nguồn mở tốt nhất, bao gồm Orchestrator, để cung cấp một cơ sở dữ liệu và quản lý cơ sở dữ liệu toàn diện. Đồ họa của nó giúp dễ dàng đồng hóa những visual clues với trạng thái của các máy chủ dữ liệu theo thời gian, và hỗ trợ các máy chủ MySQL, MariaDB, và MongoDB. Kiểm tra bản public demo của chúng tôi!

Giống như 5 công cụ hàng đầu của tôi và tất cả phần mềm của Percona, PMM hoàn toàn miễn phí và với mã nguồn mở có thể tải xuống từ trang website Percona hoặc từ GitHub.

Với công cụ tôi đã mô tả một khía cạnh khác vai trò của quản trị viên MySQL. Chúng góp phần vào kho vũ khí của bạn các công cụ quản lý cơ sở dữ liệu và cho phép bạn khai thác kinh nghiệm và kỹ năng của những contributor cho các dự án phổ biến. Chúng hoàn toàn miễn phí với mã nguồn mở và có thể được điều chỉnh cho phù hợp với nhu cầu của môi trường của bạn nếu cần thiết, hoặc bạn có thể sử dụng chúng mà không sửa đổi. Nếu bạn chưa khám phá chúng, tôi khuyên bạn hãy xem xét kỹ hơn về những phần mềm này nếu chúng cho bạn ưu thế hơn các phương pháp và công cụ hiện tại hay không.

Bài viết gốc tại Infoworld

Tham khảo thêm các vị trí tuyển dụng My SQL lương cao tại Topdev.