Cách khôi phục dữ liệu MySQL bằng mysqlbinlog và vị trí (position) chi tiết

Giới thiệu:

mysqlbinlog là một công cụ do MySQL cung cấp để phân tích và xem xét các nhật ký nhị phân (binlog). Nhật ký nhị phân ghi lại tất cả các thay đổi dữ liệu trong cơ sở dữ liệu (như INSERT, UPDATE, DELETE), và thường được sử dụng cho việc khôi phục dữ liệu, sao chép chủ từ, vv. Bài viết này sẽ hướng dẫn chi tiết cách sử dụngmysqlbinlog để khôi phục dữ liệu.

1. Kiểm tra xemmysqlbinlog đã được kích hoạt và vị trí của nhật ký nhị phân:

Đầu tiên, chúng ta cần kiểm tra các biến cấu hình liên quan đếnmysqlbinlog:

mysql> show variables like '%log_bin_%';
+---------------------------------+----------------------------------------+
| Variable_name                   | Value                                  |
+---------------------------------+----------------------------------------+
| log_bin_basename                | /usr/local/mysql/data/master-bin       |
| log_bin_index                   | /usr/local/mysql/data/master-bin.index |
| log_bin_trust_function_creators | OFF                                    |
| log_bin_use_v1_row_events       | OFF                                    |
+---------------------------------+----------------------------------------+
4 rows in set (0.00 sec)

2. Chuẩn bị môi trường thí nghiệm:

Môi trường thí nghiệm sử dụng hệ điều hành Kylin V10 và phiên bản MySQL5.7.

Bước Command
Bước 1 reset master;
Bước 2 create database dba;
Bước 3 use dba;
create table tbl_danh_sach (ma int, ten char(10));
Bước 4 insert into `dba`.`tbl_danh_sach` values (1,'aa');
insert into `dba`.`tbl_danh_sach` values (2,'bb');
insert into `dba`.`tbl_danh_sach` values (3,'cc');
Bước 5 mysqldump -uroot -p123456 --single-transaction --master-data=2 -A > backup_tat_ca_cSDL.dump
Bước 6 insert into `dba`.`tbl_danh_sach` values (4,'dd');
insert into `dba`.`tbl_danh_sach` values (5,'ee');
insert into `dba`.`tbl_danh_sach` values (6,'ff');
Bước 7 drop table tbl_danh_sach;

Bước 5 thực hiện备份 của cơ sở dữ liệu và sử dụng tham số--master-data=2 để ghi lại giá trị bắt đầu của position, giúp chúng ta khôi phục dữ liệu bằngmysqlbinlog.

Bước 6 thực hiện các thao tác sau khi备份, các thao tác này sẽ được ghi nhận từ giá trị position bắt đầu.

3. Bắt đầu quá trình khôi phục dữ liệu:

Bước 1: Khôi phục dữ liệu từ backup file:

mysql -uroot -p123456 < backup_tat_ca_cSDL.dump

Bước 2: Sử dụngmysqlbinlog để khôi phục các thao tác sau đó:

Chúng ta cần xác định các giá trị bắt đầu và kết thúc của position:

mysqlbinlog --base64-output=decode-rows -v master-bin.000001 > ket_qua_log.txt

Trong file ket_qua_log.txt, tìm kiếm các từ khóa:

  • BEGIN: bắt đầu một giao dịch
  • COMMIT: kết thúc một giao dịch
  • at: vị trí kết thúc

Bước 3: Thực hiện khôi phục dữ liệu bằngmysqlbinlog:

mysqlbinlog  --start-position=1684 --stop-position=2719 master-bin.000001 | mysql -uroot -p123456

Bước 4: Kiểm tra kết quả khôi phục:

Sau khi thực hiện các bước trên, dữ liệu đã được khôi phục thành công và các thao tác được thực hiện đúng.

Thẻ: mysql mysqlbinlog nhật ký nhị phân phục hồi dữ liệu position

Đăng vào ngày 4 tháng 6 lúc 03:02