2013-07-26 21 views
5

Tôi đang cố gắng giải mã thủ công định dạng log DBW nhị phân mysql. Mỗi sự kiện cập nhật/chèn/xóa được đặt trước bởi một TABLE_MAP_EVENT.mysqlbinarylog - tính duy nhất của table_id trong TABLE_MAP_EVENT

Sự kiện này có chứa table_id. Tôi đang sử dụng id này để xây dựng một bộ nhớ đệm cho định nghĩa cột của bảng này.

Thỉnh thoảng tôi gặp lỗi trong bộ nhớ cache đã nói, vì không khớp thông tin cột. Hiện tại tôi không thể tái tạo các vấn đề này trong các kết nối sống ngắn, chỉ trong các kết nối nhật ký xảy ra việc quay tệp nhật ký nhị phân.

Tôi nghi ngờ rằng table_id chỉ là duy nhất cho một tệp nhật ký nhị phân. Có ai biết nếu giả định này đúng? Có ai biết nơi để tìm các tài liệu mà tuyên bố những gì tôi có thể mong đợi từ table_id?

Cảm ơn trước Björn

Trả lời

0

Vì tôi không thể nhìn thấy thực hiện thực tế của bạn, đây chỉ là một phỏng đoán mù, nhưng hãy nhìn vào những lỗi dưới đây, có thể gây ra đau đầu của bạn: http://bugs.mysql.com/bug.php?id=67352

 
     Table IDs used in replication were defined as type ulong on the 
     master and uint on the slave. In addition, the maximum value for 
     table IDs in binary log events is 6 bytes (281474976710655). This 
     combination of factors led to the following issues: 

      Data could be lost on the slave when a table was assigned an 
      ID greater than uint. 

      *Table IDs greater than 281474976710655 were written to the 
      binary log as 281474976710655.* 
      (...) 
0

Không, không có bảng tra cứu nào cho các giá trị id bảng nhật ký nhị phân.

Bạn phải xử lý các sự kiện binlog/DELDATE/DELETE binlog đối với các sự kiện TABLE_MAP trước đó của chúng.

Thực tế có cột TABLE_ID bên trong INFORMATION_SCHEMA.INNODB_SYS_TABLES nhưng những số này khác với các id bảng xuất hiện trong sự kiện nhật ký nhị phân TABLE_MAP.

Các vấn đề liên quan