Bạn đang sử dụng định dạng nhật ký nhị phân nào?Bạn đang sử dụng ROW hoặc STATEMENT?
SHOW GLOBAL VARIABLES LIKE 'binlog_format';
Nếu bạn đang sử dụng ROW như một định dạng binlog chắc chắn rằng tất cả các bảng của bạn có tiểu hoặc Unique chính:
SELECT t.table_schema,t.table_name,engine
FROM information_schema.tables t
INNER JOIN information_schema .columns c
on t.table_schema=c.table_schema
and t.table_name=c.table_name
and t.table_schema not in ('performance_schema','information_schema','mysql')
GROUP BY t.table_schema,t.table_name
HAVING sum(if(column_key in ('PRI','UNI'), 1,0)) =0;
Nếu bạn thực hiện ví dụ một tuyên bố xóa trên tổng thể để xóa 1 triệu bản ghi trên một bảng mà không có PK hoặc khóa duy nhất thì chỉ có một lần quét toàn bộ bảng sẽ diễn ra trên mặt của chủ, không phải là trường hợp trên nô lệ.
Khi ROW binlog_format đang được sử dụng, MySQL ghi các thay đổi hàng vào nhật ký nhị phân (không phải là câu lệnh như STATEMENT binlog_format) và thay đổi đó sẽ được áp dụng trên hàng bên của hàng phụ, có nghĩa là 1 triệu bảng đầy đủ quét sẽ diễn ra trên các nô lệ để phản ánh chỉ có một tuyên bố xóa trên tổng thể và đó là gây ra vấn đề tụt hậu nô lệ.
bạn có bảng khóa? –
không phải là tôi biết của – Ran
cuối cùng nô lệ sẽ bắt kịp, trừ khi bạn có tấn truy vấn như cập nhật và chèn trên tổng thể. bạn có rất nhiều truy vấn đến từ máy chủ không? –