Mysql có nhật ký giao dịch không?

Bạn có thể theo dõi nhật ký MySQL trực tiếp thông qua bảng điều khiển Amazon RDS, API Amazon RDS, AWS CLI hoặc AWS SDK. Bạn cũng có thể truy cập nhật ký MySQL bằng cách hướng nhật ký tới bảng cơ sở dữ liệu trong cơ sở dữ liệu chính và truy vấn bảng đó. Bạn có thể sử dụng tiện ích mysqlbinlog để tải xuống nhật ký nhị phân

Để biết thêm thông tin về cách xem, tải xuống và theo dõi nhật ký cơ sở dữ liệu dựa trên tệp, hãy xem Giám sát tệp nhật ký Amazon RDS

Trong bài viết này, chúng ta sẽ tìm hiểu về khái niệm MySQL Binary Logs và kiến ​​trúc của chúng. Tôi đang đề cập đến các chi tiết sau trong bài viết này

  1. Tổng quan về nhật ký nhị phân MySQL và kiến ​​trúc của chúng
  2. Cách bật và tắt ghi nhật ký nhị phân
  3. Xem và thay đổi vị trí của nhật ký nhị phân

Tổng quan về nhật ký nhị phân MySQL

Khái niệm về nhật ký nhị phân MySQL và nhật ký giao dịch SQL Server giống nhau. Nhật ký nhị phân chứa thông tin về những thay đổi dữ liệu xảy ra trên phiên bản MySQL. Nhật ký nhị phân chứa tất cả các câu lệnh SQL cập nhật dữ liệu (CHÈN, CẬP NHẬT XÓA) và các câu lệnh DDL (Tạo đối tượng cơ sở dữ liệu, loại bỏ đối tượng cơ sở dữ liệu, cắt bớt bảng) trong cơ sở dữ liệu. Nó chứa thời gian cần thiết để thực hiện một câu lệnh tạo và cập nhật dữ liệu. Câu lệnh SQL được sử dụng để cập nhật dữ liệu được lưu trữ ở dạng SỰ KIỆN. SỰ KIỆN mô tả các thay đổi toàn cầu xảy ra trên Máy chủ MySQL trong bất kỳ hoạt động nào. Nó giúp chúng tôi tái tạo sự thay đổi của trạng thái toàn cầu đã xảy ra trên Máy chủ MySQL

Mục đích của nhật ký nhị phân MySQL là như sau

  1. Nhật ký nhị phân được sử dụng để sao chép chính-nô lệ. Khi có bất kỳ thay đổi nào xảy ra trên cơ sở dữ liệu chính/chính, các sự kiện chứa các thay đổi đó sẽ được gửi đến các máy con. Các sự kiện này được thực thi trên máy chủ phụ để giữ cho máy chủ phụ và máy chủ phụ được đồng bộ hóa. Khi các thay đổi được gửi đến máy chủ phụ, các máy chủ phụ sẽ lưu các thay đổi trong nhật ký chuyển tiếp cho đến khi chúng được thực thi. Định dạng của nhật ký nhị phân và nhật ký chuyển tiếp giống nhau
  2. Nhật ký nhị phân có thể được sử dụng để thực hiện khôi phục điểm trong thời gian. Khi sao lưu đầy đủ được khôi phục, các sự kiện được ghi lại sau khi sao lưu đầy đủ có thể được thực hiện lại từ nhật ký nhị phân để khôi phục trạng thái của cơ sở dữ liệu về thời điểm xảy ra lỗi

Sau đây là các loại ghi nhật ký nhị phân

  1. Dựa trên tuyên bố. Các sự kiện trong nhật ký nhị phân này chứa các truy vấn DML (Chèn, Cập nhật và Xóa) được sử dụng để thay đổi dữ liệu
  2. Dựa trên hàng. Các sự kiện trong nhật ký nhị phân này mô tả các thay đổi xảy ra trên các hàng riêng lẻ của bảng
  3. Nhật ký hỗn hợp. Trong chế độ ghi nhật ký hỗn hợp, theo mặc định, MySQL sử dụng ghi nhật ký dựa trên câu lệnh, nhưng nếu được yêu cầu, nó sẽ tự động thay đổi thành ghi nhật ký dựa trên hàng

Nhật ký Máy chủ MySQL chứa một tập hợp nhật ký nhị phân và tệp chỉ mục. Tệp nhật ký nhị phân chứa

  1. Một số ma thuật 4 byte. Các byte số ma thuật là 0xfe 0x62 0x69 0x6e = 0xfe ‘b”i”n’
  2. Tập hợp các sự kiện mô tả những thay đổi được thực hiện trong dữ liệu. Sự kiện bao gồm các chi tiết sau
    1. Các byte tiêu đề cung cấp thông tin về loại sự kiện và thời gian xảy ra sự kiện
    2. Các byte dữ liệu cung cấp thông tin của sự kiện cụ thể
  3. Sự kiện đầu tiên mô tả định dạng của tệp nhật ký và sự kiện cuối cùng chỉ định tệp nhật ký nhị phân tiếp theo
  4. Tệp chỉ mục chứa danh sách nhật ký nhị phân hiện tại

Quy ước đặt tên của tệp nhật ký là hostname-bin. NNNNNN. Ở đây NNNN là một dãy. Tên máy chủ của máy trạm của tôi là NISARG-PC;

Nisarg-pc-bin. 000001
Nisarg-pc-bin. 000002
Nisarg-pc-bin. 000003

Nisarg-pc-bin. chỉ mục

Nếu bạn đã thiết lập sao chép chính-phụ, thì quy ước đặt tên của tệp nhật ký chuyển tiếp sẽ như sau

Nisarg-pc-rơ-le. 000001
Rơ-le Nisarg-pc. 000002
Nisarg-pc-rơ-le. 000003

Nisarg-pc-rơ-le. chỉ mục

Hãy cho chúng tôi xem một số lệnh quan trọng để quản lý nhật ký nhị phân. Để trình diễn, tôi đã cài đặt MySQL Server 8. 0 trên máy trạm của tôi và hệ điều hành mà tôi đang sử dụng là windows 10

Kích hoạt nhật ký nhị phân

Nhật ký nhị phân MySQL có thể được bật hoặc tắt bằng cách thêm hoặc xóa tùy chọn cấu hình log-bin. Tham số log-bin nằm trong các tệp cấu hình có tên my. ban đầu. Khi chúng tôi cài đặt MySQL Server, tệp cấu hình được tạo trong C. \ProgramData\MySQL\MySQL Server 8. 0 thư mục. Thư mục bị ẩn, do đó, để xem thư mục ProgramData trong windows explorer, bạn phải bật tùy chọn 'Hiển thị tệp ẩn' từ Tùy chọn thư mục

Mysql có nhật ký giao dịch không?
Mysql có nhật ký giao dịch không?

Trước tiên, chúng ta hãy kiểm tra giá trị của tham số bin-log bằng cách truy vấn bảng siêu dữ liệu có tên information_schema. global_variables. Dưới đây là truy vấn

mysql> chọn * từ information_schema. biến_toàn_cầu;

đầu ra

LỖI 1109 (42S02). Bảng 'GLOBAL_VARIABLES' không xác định trong information_schema

Mysql có nhật ký giao dịch không?
Mysql có nhật ký giao dịch không?

Chúng tôi nhận được lỗi trên vì các bảng information_schema không được dùng nữa và bị xóa trong MySQL 8. 0;

mysql> hiển thị các biến toàn cục như ‘log_bin’;

Ảnh chụp màn hình đầu ra truy vấn

Mysql có nhật ký giao dịch không?
Mysql có nhật ký giao dịch không?

Như bạn có thể thấy trong hình trên, giá trị của tham số log-bin là TẮT, điều này cho biết rằng ghi nhật ký nhị phân bị tắt. Bây giờ, để bật ghi nhật ký nhị phân, hãy sao chép và dán dòng sau vào tệp my. tập tin cấu hình ini

log-bin=”[HostName]-bin”

Trong các dòng trên, thay thế [tên máy chủ] bằng tên bạn muốn. Khởi động lại Máy chủ MySQL bằng cách thực hiện lệnh sau trong PowerShell

PSC. \WINDOWS\system32> Khởi động lại dịch vụ MySQL80

Kiểm tra trạng thái ghi nhật ký nhị phân bằng cách thực hiện truy vấn sau

mysql> hiển thị các biến toàn cục như ‘log_bin’;

Mysql có nhật ký giao dịch không?
Mysql có nhật ký giao dịch không?

Như bạn có thể thấy, giá trị của tham số log-bin là BẬT, điều này cho biết rằng ghi nhật ký nhị phân đã được bật

Vô hiệu hóa ghi nhật ký nhị phân

Để tắt ghi nhật ký nhị phân, hãy thêm các dòng sau vào tệp my. tập tin ini

[mysqld]
skip-log-bin

Khởi động lại các dịch vụ MySQL

PSC. \WINDOWS\system32> Khởi động lại dịch vụ MySQL80

Chạy truy vấn sau trong dòng lệnh MySQL

mysql> hiển thị các biến toàn cục như ‘log_bin’;

Mysql có nhật ký giao dịch không?
Mysql có nhật ký giao dịch không?

Xem vị trí nhật ký nhị phân

Để xem vị trí mặc định của vị trí nhị phân, hãy thực hiện truy vấn sau

mysql> hiển thị các biến toàn cục như ‘%log_bin%’;

Đầu ra của truy vấn

Mysql có nhật ký giao dịch không?
Mysql có nhật ký giao dịch không?

Để xem danh sách nhật ký nhị phân, hãy chạy lệnh bên dưới trong tiện ích dòng lệnh MySQL

mysql> hiển thị nhật ký nhị phân;

Mysql có nhật ký giao dịch không?
Mysql có nhật ký giao dịch không?

Thay đổi vị trí mặc định của Nhật ký nhị phân

Các tệp chỉ mục và nhật ký nhị phân của MySQL được lưu trong thư mục C. \ProgramData\MySQL\MySQL Server 8. 0 thư mục. Chúng tôi có thể thay đổi vị trí mặc định của nhật ký nhị phân. Để làm điều đó, chúng ta phải làm theo các bước dưới đây

Bước 1. Tắt dịch vụ MySQL

Để tắt các dịch vụ MySQL, Mở bảng điều khiển mở Công cụ quản trị Mở Dịch vụ Xác định vị trí MySQL80 từ danh sách dịch vụ Nhấp chuột phải vào MySQL80 Nhấp vào Dừng

Mysql có nhật ký giao dịch không?
Mysql có nhật ký giao dịch không?

Bước 2. Thay đổi giá trị của tham số log-bin

Bây giờ, hãy thay đổi giá trị của tham số log-bin. Để làm điều đó, hãy mở tệp cấu hình có tên my. ban đầu. Tệp nằm trong C. \ProgramData\MySQL\MySQL Server 8. 0 thư mục. Chúng tôi muốn di chuyển nó đến D. \Binarylog. Thay thế giá trị của tham số log-bin, như hình bên dưới

  • Giá trị hiện có. log-bin=”NISARG-PC-bin”
  • Giá trị mới. log-bin=”D. \Binarylogs\NISARG-PC-bin”

Ảnh chụp màn hình của tập tin cấu hình

Mysql có nhật ký giao dịch không?
Mysql có nhật ký giao dịch không?

Lưu tập tin cấu hình

Bước 3. Sao chép nhật ký nhị phân vào thư mục mới

Sao chép tất cả các bản ghi nhị phân từ C. \ProgramData\MySQL\MySQL Server 8. 0 vào thư mục D. thư mục \Binarylogs

Bước 4. Bắt đầu các dịch vụ MySQL

Để bắt đầu các dịch vụ MySQL, Mở bảng điều khiển mở Công cụ quản trị Mở Dịch vụ Tìm MySQL80 từ danh sách dịch vụ Nhấp chuột phải vào MySQL80 Nhấp vào Bắt đầu

Mysql có nhật ký giao dịch không?
Mysql có nhật ký giao dịch không?

Bây giờ, hãy để chúng tôi xác minh rằng vị trí của nhật ký nhị phân đã được cập nhật hay chưa. Để làm điều đó, hãy thực hiện lệnh sau trong tiện ích dòng lệnh MySQL

Mysql có nhật ký giao dịch không?
Mysql có nhật ký giao dịch không?

Như bạn có thể thấy trong hình trên, vị trí của nhật ký nhị phân đã được thay đổi

Tóm lược

Trong bài này, chúng ta đã tìm hiểu về MySQL binary log. Chúng tôi đã học các chủ đề sau

  1. Tổng quan về nhật ký nhị phân và kiến ​​trúc của chúng
  2. Cách bật và tắt ghi nhật ký nhị phân
  3. Xem và thay đổi vị trí của nhật ký nhị phân

Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu cách chúng ta có thể mở và diễn giải các sự kiện nhật ký nhị phân. Để xem nhật ký nhị phân, chúng ta có thể sử dụng tiện ích mysqlbinlog. Chúng ta sẽ tìm hiểu thêm về nó trong các bài viết tiếp theo của tôi

Nhật ký giao dịch MySQL ở đâu?

Vị trí mặc định cho mỗi nhật ký là thư mục Dữ liệu MySQL ( C. \ProgramData\MySQL\MySQL Server [số phiên bản]\Data\) và tên nhật ký mặc định dựa trên tên thiết bị của máy tính.

MySQL có giao dịch không?

MySQL hỗ trợ các giao dịch cục bộ (trong một phiên máy khách nhất định) thông qua các câu lệnh như SET autocommit , START TRANSACTION , CAM KẾT và ROLLBACK . Xem Phần 13. 3. 1, “Các câu lệnh BẮT ĐẦU GIAO DỊCH, CAM KẾT và ROLLBACK”.

MySQL có tệp nhật ký không?

Tệp nhật ký MySQL bao gồm các bản ghi các hành động đã được thực hiện . Máy chủ MySQL tạo các tệp nhật ký được tạo dựa trên các hành động được thực hiện. Các tệp nhật ký có nhiều loại khác nhau. – nhật ký lỗi, nhật ký ISAM, nhật ký truy vấn chung, nhật ký cập nhật, nhật ký nhị phân và nhật ký truy vấn chậm.

Làm cách nào để kiểm tra nhật ký chung trong MySQL?

Làm cách nào để hiển thị nhật ký truy vấn trong MySQL? .
Cho phép ghi nhật ký truy vấn trên cơ sở dữ liệu. SET toàn cầu general_log = 1;
Bây giờ bạn có thể xem nhật ký bằng cách chạy truy vấn này. CHỌN * TỪ mysql. chung_log;
Nếu bạn muốn tắt ghi nhật ký truy vấn trên cơ sở dữ liệu, hãy chạy truy vấn này. SET toàn cầu general_log = 0;