HƯỚNG DẪN Sử dụng Mytop để giám sát hiệu suất MySQL

Thảo luận trong 'KIẾN THỨC VPS/SERVER' bắt đầu bởi quyet1990, 22/10/16.

?

Bạn thấy bài viết này thế nào?

Poll closed 29/10/16.
  1. Quá dài, cần rút ngắn lại

    0 phiếu
    0.0%
  2. Tạm được

    0 phiếu
    0.0%
  3. Tốt

    0 phiếu
    0.0%
Multiple votes are allowed.
  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    Giới thiệu
    Mytop là một mã nguồn mở, công cụ dòng lệnh được sử dụng để giám sát hiệu suất MySQL. Nó được lấy cảm hứng từ các công cụ giám sát hệ thống Linux có tên là top và là tương tự với nó trong cái nhìn và cảm nhận.Mytop kết nối đến một máy chủ MySQL và định kỳ chạy hiển thị quá trình và hiển thị các lệnh tình trạng toàn cầu. Nó sau đó tóm tắt các thông tin trong một định dạng hữu ích.

    Sử dụng mytop, chúng tôi có thể giám sát (trong thời gian thực) luồng MySQL, truy vấn, và thời gian hoạt động cũng như thấy người dùng đang chạy các truy vấn cơ sở dữ liệu trên đó, đó là những truy vấn chậm, và nhiều hơn nữa. Tất cả các thông tin này có thể được sử dụng để tối ưu hóa hiệu suất máy chủ MySQL.
    Trong hướng dẫn này, chúng tôi sẽ thảo luận làm thế nào để cài đặt, cấu hình và sử dụng mytop.

    Điều kiện tiên quyết
    Trước khi bạn bắt đầu với hướng dẫn này, bạn cần phải có những điều sau đây:

    - CentOS 7 64-bit Droplet (làm việc với CentOS 6 cũng được)
    - Người sử dụng không phải root với quyền sudo. Để thiết lập một người sử dụng của loại hình này, hãy làm theo các cài đặt máy chủ ban đầu với CentOS 7 hướng dẫn. Tất cả các lệnh sẽ được chạy như người dùng này.
    - MySQL server chạy trên các Droplet.

    Bước 1 - Cài đặt Mytop
    Hãy để chúng tôi cài đặt các gói cần thiết cho mytop.
    Đầu tiên, chúng ta cần phải cài đặt các EPEL (Gói bổ sung cho Enterprise Linux) kho yum trên máy chủ. EPEL là một Fedora Special Interest Group tạo, bảo trì và quản lý một bộ chất lượng cao của mã nguồn mở thêm về các gói phần mềm cho Enterprise Linux. Chạy lệnh sau để cài đặt và kích hoạt các kho EPEL trên máy chủ của bạn:

    Trên CentOS 7:
    Mã:
    sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
    Trên CentOS 6:
    Mã:
    sudo rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
    Trước khi tiếp tục, xác minh rằng các repo EPEL được kích hoạt sử dụng:
    Mã:
    sudo yum repolist
    Nếu được kích hoạt, bạn sẽ thấy những repo sau đây được liệt kê ở đầu ra:
    Mã:
    epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64
    Tiếp theo, chúng ta hãy bảo vệ các gói cơ bản từ EPEL sử dụng plugin protectbase yum.
    Mã:
    sudo yum install yum-plugin-protectbase.noarch -y
    Mục đích của các plugin protectbase là để bảo vệ kho yum nhất định từ thông tin cập nhật từ các kho khác. Gói trong kho được bảo vệ sẽ không được cập nhật hoặc ghi đè bởi các gói trong kho không được bảo vệ ngay cả khi kho không bị bảo vệ có một phiên bản sau này.
    Bây giờ chúng tôi đã sẵn sàng để cài đặt gói mytop. Chạy lệnh sau để cài đặt nó:
    Mã:
    sudo yum install mytop -y
    Điều này sẽ cài đặt các gói mytop cũng như tất cả phụ thuộc của nó, chủ yếu là các module perl.

    Bước 2 - Cấu hình Mytop

    Trước khi sử dụng mytop, tạo ra một tập tin cấu hình tùy biến cho mytop tên .mytop. Chạy lệnh:
    Mã:
    sudo nano /root/.mytop
    và thêm các nội dung sau đây trong tập tin và lưu và thoát.
    Mã:
    /root/.mytop
    host=localhost
    db=mysql
    delay=5
    port=3306
    socket=
    batchmode=0
    color=1
    idle=1
    
    Tập tin cấu hình này sẽ được sử dụng khi bạn chạy mytop trực tiếp như root và khi bạn chạy nó với lệnh sudo trước mặt nó như là một người sử dụng sudo không phải root.
    Bạn có thể thay đổi tập tin cấu hình này tùy thuộc vào nhu cầu của bạn. Ví dụ, tùy chọn trì hoãn xác định số lượng thời gian trong vài giây giữa làm mới màn hình. Nếu bạn muốn làm mới mytop hiển thị mỗi 3 giây, bạn có thể chỉnh sửa các tập tin /root/.mytop sử dụng
    Mã:
    sudo nano /root/.mytop
    và thay đổi như sau:
    Mã:
    delay=3
    Các tham số idle quy định liệu có cho phép idle (ngủ) luồng xuất hiện trong danh sách ở màn hình hiển thị mytop. Mặc định là để hiển thị luồng idle. Nếu luồng idle được bỏ qua, thứ tự sắp xếp mặc định được đảo ngược để các truy vấn dài nhất xuất hiện ở đầu danh sách. Nếu bạn muốn làm điều này, chỉnh sửa các tập tin /root/.mytop và thay đổi như sau:
    Mã:
    idle=0
    Bạn có thể tham khảo các trang hướng dẫn của mytop cho thông tin về tất cả các thông số trong tập tin cấu hình - nó có chứa một mô tả của mỗi tham số. Để truy cập vào các trang hướng dẫn, sử dụng lệnh:
    Mã:
    man mytop
    Bạn có thể gõ q để thoát hướng dẫn.

    Bước 3 - Kết nối với Mytop
    Trong phần này, chúng tôi sẽ thảo luận làm thế nào để kết nối với mytop và sử dụng nó để xem các truy vấn MySQL.
    Mytop yêu cầu quyền truy cập vào cơ sở dữ liệu, có thể được cung cấp thông qua một cửa sổ, trên dòng lệnh, hoặc được lưu trữ trong tập tin cấu hình. Để bảo mật tốt hơn, chúng tôi sẽ sử dụng các tùy chọn tới --prompt mytop, mà yêu cầu mật khẩu mỗi lần.
    Hãy để chúng tôi kết nối với mytop sử dụng:
    Mã:
    sudo mytop --prompt
    và nhập mật khẩu root MySQL tại cửa sổ. Bạn cũng có thể sử dụng một vài đối số dòng lệnh với lệnh mytop. Vui lòng tham khảo trang hướng dẫn cho danh sách đầy đủ. Ví dụ, nếu bạn muốn sử dụng một người sử dụng mysql khác nhau như sammy để kết nối với mytop, chạy lệnh:
    Mã:
    sudo -u mytop sammy --prompt
    Để kết nối và giám sát chỉ có một cơ sở dữ liệu cụ thể, bạn có thể sử dụng lệnh:
    Mã:
    sudo mytop -d databasename --prompt
    Để thoát khỏi mytop và trở về cửa sổ shell của bạn, gõ q.

    Bước 4 - Xem và giải thích hiển thị Mytop

    Trong phần này, chúng tôi sẽ xem làm thế nào để giải thích hiển thị mytop và các tính năng khác nhau được cung cấp bởi công cụ.
    Một khi chúng ta kết nối với mytop sử dụng mytop --prompt chúng ta sẽ được đưa đến luồng xem Nó sẽ hiển thị một cái gì đó tương tự như:

    Mã:
    
    Output of mytop
    MySQL on localhost (5.5.41-MariaDB)                    up 0+00:05:52 [01:33:15]
    Queries: 148  qps:    0 Slow:     0.0         Se/In/Up/De(%):    09/00/00/00
                 qps now:    2 Slow qps: 0.0  Threads:    6 (   5/   0) 67/00/00/00
    Key Efficiency: 2.0%  Bps in/out:  14.7/320.7k   Now in/out: 192.5/731.8k
    
           Id      User         Host/IP         DB      Time    Cmd Query or State
           --      ----         -------         --      ----    --- ----------
            2      root       localhost      mysql         0  Query show full processlist                        
           16      root       localhost                    0  Sleep
           17      root       localhost     testdb         0  Query SELECT * FROM dept_emp
           18      root       localhost     testdb         0  Query SELECT * FROM dept_emp
           19      root       localhost     testdb         0  Query SELECT * FROM dept_emp
           20      root       localhost     testdb         0  Query SELECT * FROM dept_emp
    
    Bạn có thể lấy lại chế độ này, nếu bạn đang ở trong chế độ xem khác bằng cách gõ t.

    Màn hình hiển thị ở trên được chia thành hai phần. Bốn dòng đầu bao gồm các tiêu đề mà có thể được bật hoặc tắt bằng cách nhấn Shift-H. Các tiêu đề chứa thông tin tóm tắt về máy chủ MySQL của bạn.

    Dòng đầu tiên xác định tên máy chủ và các phiên bản của MySQL nó đang chạy. Phía bên phải cho thấy thời gian hoạt động của quá trình máy chủ MySQL trong định dạng ngày + giờ: phút: giây cũng như thời điểm hiện tại.

    Dòng thứ hai hiển thị tổng số truy vấn các máy chủ đã được xử lý (148 trong trường hợp của chúng tôi), số truy vấn trung bình mỗi giây, số lượng các truy vấn chậm, và tỷ lệ Select, Insert, Update và Delete câu truy vấn.

    Dòng thứ ba cho thấy giá trị thời gian thực từ làm mới mytop lần cuối. Việc làm mới (chậm trễ) thời gian bình thường cho mytop là 5 giây, vì vậy nếu 100 truy vấn được chạy trong 5 giây cuối cùng kể từ khi làm mới, thì QPS hiện giờ có số sẽ là 20.
    Trường đầu tiên là số lượng các truy vấn trên giây (QPS bây giờ: 2). Giá trị thứ hai là số lượng các truy vấn chậm mỗi giây.
    Các Luồng 6 (5/0) phân đoạn chỉ có tổng cộng 6 luồng kết nối, 5 đang hoạt động (một đang ngủ), và có 0 luồng trong bộ nhớ cache luồng. Các trường cuối cùng trong dòng thứ ba cho thấy tỷ lệ phần trăm truy vấn, như trong các dòng trước đó, nhưng kể từ khi làm mới mytop lần cuối.

    Dòng thứ tư hiển thị hiệu quả phím đệm (làm sao thường phím thường được đọc từ bộ đệm hơn là đĩa) và số byte mà MySQL đã được gửi và nhận, cả hai tổng thể và trong chu kỳ mytop lần cuối.
    Hiệu quả chính: 2,0% cho thấy 2% của các phím này được đọc từ bộ đệm, không phải từ đĩa. Bps in/out: 14.7 / 320.7k cho thấy rằng kể từ khi khởi động, MySQL có trung bình 14.7kbps lưu lượng gửi đến và 320.7kbps cho lưu lượng gửi đi. Bây giờ in/out cho thấy lưu lượng một lần nữa, nhưng kể từ khi làm mới mytop lần cuối.

    Phần thứ hai của màn hình hiển thị danh sách luồng MySQL hiện tại, được sắp xếp theo thời gian idle của mình (idle nhất đầu tiên). Bạn có thể đảo ngược thứ tự sắp xếp bằng cách nhấn O nếu cần thiết. Các thread id, tên người dùng, máy chủ mà người dùng kết nối cơ sở dữ liệu để người sử dụng được kết nối, số giây của thời gian idle, lệnh thread được thực hiện (hoặc trạng thái của chủ đề), và một phần đầu tiên của câu truy vấn thông tin đều được hiển thị ở đây.

    Nếu luồng là trong trạng thái truy vấn (nghĩa. Cmd hiển thị Query) sau đó cột tiếp theo Query hoặc State sẽ cho thấy phần đầu của các truy vấn đang được chạy. Nếu tình trạng lệnh là ngủ hoặc Idle thì Query hoặc State cột thường sẽ được để trống. Trong ví dụ đầu ra của chúng tôi ở trên, luồng với id 2 được thực mytop chạy truy vấn quá trình show để thu thập thông tin. Các chủ đề có id 16 đang ngủ (không xử lý một truy vấn, nhưng vẫn kết nối). Các chủ đề có id 17 đang chạy một truy vấn SELECT trên cơ sở dữ liệu TestDB.

    Bây giờ chúng ta đã hiểu được hiển thị cơ bản của mytop, chúng ta sẽ xem làm thế nào để sử dụng nó để thu thập thêm thông tin về luồng MySQL và truy vấn. Chúng ta hãy nhìn vào màn hình hiển thị mytop sau đây:

    Mã:
    
    [secondary_output Output of mytop]
    MySQL on localhost (5.5.41-MariaDB)                    up 0+00:13:10 [23:54:45]
    Queries: 2.8k   qps:    4 Slow:    51.0         Se/In/Up/De(%):    45/00/00/00
                 qps now:   17 Slow qps: 0.0  Threads:   52 (  51/   0) 96/00/00/00
    Key Efficiency: 100.0%  Bps in/out: 215.4/ 7.6M   Now in/out:  2.0k/16.2M
    
           Id      User         Host/IP         DB      Time    Cmd Query or State
           --      ----         -------         --      ----    --- ----------
           34      root       localhost     testdb         0  Query show full processlist
         1241      root       localhost                    1  Sleep
         1242      root       localhost     testdb         1  Query SELECT * FROM dept_emp
         1243      root       localhost     testdb         1  Query SELECT * FROM dept_emp
         1244      root       localhost     testdb         1  Query SELECT * FROM dept_emp
         1245      root       localhost     testdb         1  Query SELECT * FROM dept_emp
         1246      root       localhost     testdb         1  Query SELECT * FROM dept_emp
         1247      root       localhost     testdb         1  Query SELECT * FROM dept_emp
    
    Trong giao diện luồng mytop (mặc định) được hiển thị trên, các truy vấn được cắt ngắn. Để xem toàn bộ truy vấn, bạn có thể bấm phím F, và nó sẽ hỏi:

    Mã:
    Full query for which thread id:
    
    Nhập id thread cho truy vấn mà bạn muốn xem. Ví dụ, nhập 1244. Sau đó, nó sẽ hiển thị như sau:
    Mã:
    Thread 1244 was executing following query:
    SELECT * FROM dept_emp WHERE ...
    -- paused. press any key to resume or (e) to explain –
    
    Chúng tôi có thể gõ e để giải thích các truy vấn. Điều này sẽ giải thích các truy vấn đang được chạy để chúng ta có thể hình dung ra nếu truy vấn được tối ưu hóa. Giải thích là một trong những công cụ mạnh mẽ nhất cho sự hiểu biết và tối ưu hóa các truy vấn MySQL phiền hà. Ví dụ:
    Mã:
    EXPLAIN SELECT * FROM dept_emp:
    
    *** row 1 ***
              table:  dept_emp
               type:  ALL
      possible_keys:  NULL
                key:  NULL
            key_len:  NULL
                ref:  NULL
               rows:  332289
              Extra:  NULL
    -- paused. press any key to resume --
    
    Bạn có thể nhấn phím bất kỳ để thoát khỏi chế độ này hoặc gõ t để đi trở lại xem luồng mặc định.
    Một góc nhìn khác hữu ích có sẵn trong mytop là quan điểm lệnh. Để truy cập vào xem lệnh, loại c. Nó sẽ trông giống như sau:
    Mã:
    Command                 Total  Pct  |  Last  Pct
               -------      -----  ---  |  ----  ---
                select       1782  55%  |   100   8%
           show status        723  22%  |   533  45%
      show processlist        708  22%  |   532  45%
             change db          2   0%  |     0   0%
        show variables          1   0%  |     0   0%
           Compression          0   0%  |     0   0%
    
    Cột Command cho thấy các loại lệnh hoặc truy vấn được chạy. Cột tổng cộng đại diện cho tổng số là loại lệnh chạy từ máy chủ bắt đầu, và cột Pct hiển thị cùng một tỷ lệ phần trăm. Ở phía bên kia của đường thẳng đứng, chúng tôi có các cột cuối cho chúng ta biết số lượng của loại lệnh chạy kể từ khi làm mới cuối cùng của mytop. Thông tin này cho chúng ta cái nhìn sâu sắc vào những gì các máy chủ MySQL đang làm trong ngắn hạn và dài hạn.
     
    #1 quyet1990, 22/10/16
    Sửa lần cuối: 22/10/16

Chia sẻ trang này

Đang tải...