每個 MyISAM 索引文件(.MYI)頭部有一個計數器,用於檢測表是否被正確關閉。CHECK TABLE 或 myisamchk 報警 clients are using or haven't closed the table properly 表示計數器不同步,不一定代表表已損壞,但至少應執行檢查。
LOCK TABLES 和 FLUSH TABLES 前被複製。myisamchk --recover 或 --update-state 修改時,mysqld 正在使用該表。REPAIR TABLE 或 CHECK TABLE 時另一個也在使用。CHECK TABLE 相對安全,但 REPAIR TABLE 會替換數據文件且不通知其他實例,極易導致不一致。強烈不建議在多服務器間共享同一數據目錄。 此架構極易引發計數器不同步、索引損壞等難以排查的問題。