Hướng dẫn ghi log trong mysql
Show
Đã đăng vào thg 2 20, 2020 10:07 SA 2 phút đọc 1. Giới thiệuTrong bài viết này mình sẽ chỉ cho bạn cách cho phép Mình thấy điều này rất hữu ích, trợ giúp cực lớn cho các bạn khi degug liên quan đến truy vấn, thao tác với Database. Cách này cũng dễ hiểu hơn về cách ứng dụng hoạt động bằng cách theo dõi các truy vấn SQL mà nó sử dụng. Vậy hãy bắt đầu... 2. Hướng dẫnBước 1: Để bật chế độ lưu log của MySQL, chúng ta phải chỉnh sửa
tệp cấu hình MySQL nằm trong Lưu ý: Chúng ta phải làm điều đó với quyền quản trị. Vì vậy, chúng ta chạy lệnh sau đây trên Terminal:
Bước 2: Xác định vị trí các dòng sau:
Để bật chúng, mình chỉ cần đơn giản là xóa đi dấu ghi chú
Lưu ý: Trường hợp không tìm thấy 2 dòng này thì bạn có thể thoải mái copy paste vào là xong Bước 3: Khới động lại mysql
Bước 4: Vào xem kết quả Bây giờ bạn có thể theo dõi log các truy vấn của MySQL của mình trong thời gian thực bằng cách sử dụng lệnh
Đó là những gì chúng ta cần làm. 3. Trải nghiệm3.1 Khi thao tác với Mysql WorkbenchThao tác: Khi select all Admin trong mysql Work Bench Log Mysql nhận được 3.2 Khi thao tác với Rails consoleThao tác: Log Mysql nhận được 3.3 Khi thao tác với ApplicationThao tác: Click vào menu show ra list contact của ứng dụng Log Mysql nhận được Note: Đối với ứng dụng Rails thì mình đã có log sql rồi, nên sẽ ko thấy có ích nhiều. nhưng đối với các framework không show log như Wordpress... thì nó có ích ko hề ít 4. Kết luậnLƯU Ý: Xin lưu ý rằng log của MySQL khi bật lên nó sẽ ảnh hưởng tới Performance của hệ thống, vì vậy đừng bật nó lên trên môi trường Production, Chúng ta chỉ dùng nó chỉ để Debug. Chúc các bạn tìm ra lỗi đó khiến bạn phải kích hoạt lưu lại nội dung log của MySQL. Chúc may mắn. Tài liệu tham khảo: http://www.techytalk.info/configure-mysql-to-keep-log-of-all-queries-on-ubuntu/ All rights reserved Bài viết được sự cho phép của tác giả Nguyễn Hữu Đồng Đôi khi bạn sẽ cần monitor tất cả các query được gửi tới server trong một khoảng thời gian, mysql cung cấp cho ta vài phương pháp để làm chuyện này, cho phép chúng ta xem log của các query và log của các query chậm. Nếu ta kích hoạt tính năng log query thì những log được tạo sẽ sẽ nằm ở một tront hai chỗ file hoặc 2
bảng 1. Đầu tiên, kiểm tra nếu database mysql chưa có hai bảng sau slow_log và general_log thì tạo nó.
CREATE TABLE `general_log` (
`event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
`user_host` mediumtext NOT NULL,
`thread_id` bigint(21) unsigned NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`command_type` varchar(64) NOT NULL,
`argument` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log' Bảng
CREATE TABLE `slow_log` (
`start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
`user_host` mediumtext NOT NULL,
`query_time` time NOT NULL,
`lock_time` time NOT NULL,
`rows_sent` int(11) NOT NULL,
`rows_examined` int(11) NOT NULL,
`db` varchar(512) NOT NULL,
`last_insert_id` int(11) NOT NULL,
`insert_id` int(11) NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`sql_text` mediumtext NOT NULL,
`thread_id` bigint(21) unsigned NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log' Log này lưu lại nhưng câu query mất nhiều thời gian để hoàn thành, bao lâu là lâu được định nghĩa ở biến 2. Mở tính năng ghi nhật kí log trên databaseset global log_output = 'table';
set global general_log = 1;
set global slow_query_log = 1; 3. Định nghĩa thế nào là slow query# Mình set 1s là lâu
set global long_query_time = 1; 4. Bây giờ để xem log bạn có thể dùng query này.select * from mysql.general_log;
select * from mysql.slow_log; 5. Nếu bạn muốn tắt log query vào tableset global general_log = 0;
set global slow_query_log = 0; Nguồn : TablePlus Bài viết gốc được đăng tải tại medium.com Có thể bạn quan tâm:
Xem thêm Việc làm Developer hấp dẫn trên TopDev |