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

Hiểu nhật ký kiểm tra ProxySQL

ProxySQL trở thành một phần cơ sở hạ tầng rất quan trọng trong môi trường cơ sở dữ liệu. Nó hoạt động như một bộ cân bằng tải, giúp định hình luồng lưu lượng và giảm thời gian chết. Với sức mạnh lớn đến trách nhiệm lớn. Làm cách nào bạn có thể cập nhật những ai đang truy cập cấu hình ProxySQL? Ai đang kết nối với cơ sở dữ liệu thông qua ProxySQL? Những câu hỏi đó có thể được trả lời bằng ProxySQL Audit Log, có sẵn bắt đầu từ ProxySQL 2.0.5. Trong bài đăng trên blog này, chúng tôi sẽ xem xét cách bật tính năng này và nội dung nhật ký trông như thế nào.

Các bước đầu tiên sẽ là triển khai ProxySQL. Chúng tôi có thể dễ dàng làm điều đó bằng cách sử dụng ClusterControl - cả hai loại MySQL Replication và Galera Cluster đều hỗ trợ triển khai ProxySQL.

Giả sử chúng ta đã thiết lập và chạy một cụm, chúng ta có thể triển khai ProxySQL từ Manage -> LoadBalancers:

Chúng ta phải quyết định nút ProxySQL nào nên được cài đặt, phiên bản của nó ( chúng tôi sẽ giữ nguyên 2.x) mặc định và xác định thông tin đăng nhập cho người dùng quản trị và giám sát ProxySQL.

Dưới đây, chúng tôi có thể nhập người dùng ứng dụng hiện có từ cơ sở dữ liệu hoặc tạo mới một bằng cách gán tên, mật khẩu, lược đồ và các đặc quyền MySQL. Sau đó, chúng tôi có thể định cấu hình các nút nào nên được đưa vào ProxySQL và quyết định xem chúng tôi có sử dụng các giao dịch ngầm hay không. Khi mọi thứ đã hoàn tất, chúng ta có thể triển khai ProxySQL. Để có tính khả dụng cao, bạn có thể muốn thêm một ProxySQL thứ hai và sau đó giữ đủ tiêu chuẩn trên chúng. Keepalived cũng có thể được triển khai dễ dàng từ ClusterControl:

Ở đây chúng ta phải chọn các nút mà ProxySQL được triển khai, vượt qua Virtual IP và giao diện mạng VIP nên được gán cho. Sau khi hoàn tất, ClusterControl có thể triển khai Keepalived cho bạn.

Bây giờ, hãy xem nhật ký kiểm tra. Tất cả các cấu hình phải được thực hiện trên cả hai nút ProxySQL. Ngoài ra, bạn có thể sử dụng một tùy chọn để đồng bộ hóa các nút:

Có hai cài đặt chi phối cách hoạt động của nhật ký kiểm tra:

Phần đầu tiên xác định tệp nơi dữ liệu sẽ được lưu trữ, phần thứ hai cho biết tệp nhật ký phải lớn bao nhiêu trước khi nó được xoay. Hãy cấu hình đăng nhập trong thư mục dữ liệu ProxySQL:

Bây giờ, chúng ta có thể xem dữ liệu chúng ta thấy trong quá trình kiểm tra tệp nhật ký. Trước hết, định dạng mà dữ liệu được lưu trữ là JSON. Có hai loại sự kiện, một liên quan đến kết nối MySQL và thứ hai liên quan đến kết nối giao diện quản trị ProxySQL.

Đây là ví dụ về các mục nhập được kích hoạt bởi lưu lượng truy cập MySQL:

  "client_addr": "10.0.0.100:40578",

  "event": "MySQL_Client_Connect_OK",

  "proxy_addr": "0.0.0.0:6033",

  "schemaname": "sbtest",

  "ssl": false,

  "thread_id": 810,

  "time": "2020-01-23 14:24:17.595",

  "timestamp": 1579789457595,

  "username": "sbtest"

}

{

  "client_addr": "10.0.0.100:40572",

  "event": "MySQL_Client_Quit",

  "proxy_addr": "0.0.0.0:6033",

  "schemaname": "sbtest",

  "ssl": false,

  "thread_id": 807,

  "time": "2020-01-23 14:24:17.657",

  "timestamp": 1579789457657,

  "username": "sbtest"

}

{

  "client_addr": "10.0.0.100:40572",

  "creation_time": "2020-01-23 14:24:17.357",

  "duration": "299.653ms",

  "event": "MySQL_Client_Close",

  "extra_info": "MySQL_Thread.cpp:4307:process_all_sessions()",

  "proxy_addr": "0.0.0.0:6033",

  "schemaname": "sbtest",

  "ssl": false,

  "thread_id": 807,

  "time": "2020-01-23 14:24:17.657",

  "timestamp": 1579789457657,

  "username": "sbtest"

}

Như bạn thấy, hầu hết dữ liệu lặp lại:địa chỉ máy khách, địa chỉ ProxySQL, tên lược đồ, nếu SSL được sử dụng trong các kết nối, số luồng liên quan trong MySQL, người dùng đã tạo kết nối. Sự kiện “MySQL_Client_Close” cũng chứa thông tin về thời gian kết nối được tạo và thời gian kết nối. Bạn cũng có thể xem phần nào của mã ProxySQL chịu trách nhiệm đóng kết nối.

Các kết nối quản trị khá giống nhau:

{

  "client_addr": "10.0.0.100:52056",

  "event": "Admin_Connect_OK",

  "schemaname": "information_schema",

  "ssl": false,

  "thread_id": 815,

  "time": "2020-01-23 14:24:19.490",

  "timestamp": 1579789459490,

  "username": "proxysql-admin"

}

{

  "client_addr": "10.0.0.100:52056",

  "event": "Admin_Quit",

  "schemaname": "information_schema",

  "ssl": false,

  "thread_id": 815,

  "time": "2020-01-23 14:24:19.494",

  "timestamp": 1579789459494,

  "username": "proxysql-admin"

}

{

  "client_addr": "10.0.0.100:52056",

  "creation_time": "2020-01-23 14:24:19.482",

  "duration": "11.795ms",

  "event": "Admin_Close",

  "extra_info": "MySQL_Thread.cpp:3123:~MySQL_Thread()",

  "schemaname": "information_schema",

  "ssl": false,

  "thread_id": 815,

  "time": "2020-01-23 14:24:19.494",

  "timestamp": 1579789459494,

  "username": "proxysql-admin"

}

Dữ liệu được thu thập rất giống nhau, điểm khác biệt chính là nó liên quan đến các kết nối đến giao diện quản trị ProxySQL.

Kết luận

Như bạn có thể thấy, một cách rất dễ dàng, bạn có thể kích hoạt kiểm tra quyền truy cập vào ProxySQL. Điều này, đặc biệt là quyền truy cập quản trị, là thứ cần được giám sát từ quan điểm bảo mật. Plugin kiểm tra giúp bạn thực hiện nó khá dễ dà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. Sự khác biệt giữa CHỌN VÀO VÀ CHÈN VÀO trong MySQL

  2. Mệnh đề VỚI MySQL

  3. Lỗi MYSQLi:Người dùng đã có nhiều hơn 'max_user_connections' kết nối đang hoạt động

  4. Hệ thống đặt lại mật khẩu trong PHP

  5. Sự khác biệt giữa FIELD () và FIND_IN_SET () trong MySQL