Mysql

Mysql binlogs 存在,顯示二進制日誌為空

  • February 21, 2021

我正在進行複制設置並已打開 bin-logs。我已將我的 mysql 數據目錄以及 binlog 路徑移動到一個新位置

來自 my.cnf

datadir = /vol/data/mysql
log-bin=/vol/data/mysql/mysql-bin
binlog_format=mixed

當我啟動 mysqld 並檢查狀態時:

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000315 |      106 |              |                  |
+------------------+----------+--------------+------------------+

當我查看 /vol/data/mysql 的內容時,我可以看到很多 bin 日誌,但具體來說,我可以看到這個文件是剛剛創建的:

mysql-bin.000313
mysql-bin.000314
mysql-bin.000315
mysql-bin.index

如果我跟踪索引文件:

$ sudo tail mysql-bin.index
/vol/data/mysql/mysql-bin.000313
/vol/data/mysql/mysql-bin.000314
/vol/data/mysql/mysql-bin.000315

在 mysql 中,根本沒有二進制日誌。

mysql> SHOW BINARY LOGS;
Empty set (0.00 sec)

這意味著清除 mysql 中的二進制日誌沒有任何影響。我檢查了目錄和文件的權限,都屬於mysql使用者和組。為什麼 mysql 不能看到和/或清除那些二進制日誌?

mysql> PURGE BINARY LOGS BEFORE NOW();
ERROR 1373 (HY000): Target log not found in binlog index

你可能需要嘗試一些非正統的東西

service mysql stop

mysql-bin.index在 vi 中打開

把內容改成這個

./mysql-bin.000313
./mysql-bin.000314
./mysql-bin.000315

保存mysql-bin.index

service mysql start

登錄 MySQL 並執行

SHOW BINARY LOGS;
SHOW MASTER STATUS;

這個特技為我工作了幾次。

試一試 !!!

就我而言,索引文件的開頭有一個空行。刪除空白行後,它工作正常。

引用自:https://dba.stackexchange.com/questions/87002