Mysql

主數據庫空間不足

  • December 5, 2019

我的主伺服器今天(20:22)空間不足。我的交易日誌最終分成多個文件:

-rw-rw----  1 mysql mysql 228M Jul 31 20:22 mysql-bin.000914
-rw-rw----  1 mysql mysql  18K Jul 31 20:23 mysql-bin.000915
-rw-rw----  1 mysql mysql 1.5K Jul 31 20:24 mysql-bin.000916
-rw-rw----  1 mysql mysql 8.9K Jul 31 20:25 mysql-bin.000917
-rw-rw----  1 mysql mysql 1.2K Jul 31 20:25 mysql-bin.000918
-rw-rw----  1 mysql mysql 4.0K Jul 31 20:25 mysql-bin.000919
-rw-rw----  1 mysql mysql  982 Jul 31 20:26 mysql-bin.000920
-rw-rw----  1 mysql mysql 1.5K Jul 31 20:26 mysql-bin.000921
-rw-rw----  1 mysql mysql 2.1K Jul 31 20:26 mysql-bin.000922
-rw-rw----  1 mysql mysql  915 Jul 31 20:27 mysql-bin.000923
-rw-rw----  1 mysql mysql  17K Jul 31 20:28 mysql-bin.000924
-rw-rw----  1 mysql mysql  31K Jul 31 20:28 mysql-bin.000925
-rw-rw----  1 mysql mysql  54M Aug  1 02:00 mysql-bin.000926

這破壞了我的 4 個奴隸的複制。查看其他執行緒,似乎我將從主人那裡轉儲並重建我所有的奴隸。它是否正確?

這是奴隸的輸出。

Last_IO_Errno: 1595
Last_IO_Error: Relay log write failure: could not queue event from master
Master_Log_File: mysql-bin.000927
Read_Master_Log_Pos: 4
Relay_Log_File: mysql-relay-bin.000244
Relay_Log_Pos: 167
Relay_Master_Log_File: mysql-bin.000927

跳過空間不足時處理的事務是可以的。我嘗試將位置和文件推進到目前文件,但這也沒有用。

stop slave;
change master to master_log_file='mysql-bin.000926', master_log_pos=0;
START SLAVE;
show slave status\G

這給了我:

Master_Log_File: mysql-bin.000926
Read_Master_Log_Pos: 4
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000926
Last_IO_Errno: 1236
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Binary log is not open'

如果可能的話,我寧願不必重建我的奴隸。謝謝。

這不是一個確切的答案,因為我不知道我是如何解決問題的,但以下選項確實解決了我的問題。當我嘗試創建一個 mysql 轉儲來重新建構伺服器時,我得到了:

mysqldump:錯誤:伺服器上的 Binlogging 未啟動

對我來說,這表明主伺服器上的 mysql 配置有問題,因為在 my.cnf 中啟用了二進制日誌記錄。我還查看了過去 6 小時的最新二進制日誌文件,它只有 2.8K。我跑了

service mysql restart

這讓我的二進制日誌按預期工作。新的二進制日誌按預期重新開始執行(5 分鐘內 2.8M)。所以現在我的日誌文件變成了:

-rw-rw----  1 mysql mysql  54M Aug  1 02:00 mysql-bin.000926
-rw-rw----  1 mysql mysql 2.8K Aug  1 10:58 mysql-bin.000927
-rw-rw----  1 mysql mysql 2.4M Aug  1 11:02 mysql-bin.000928

然後我回到我的奴隸並重新執行change master命令到新的 bin 日誌,它按預期工作。

stop slave;
change master to master_log_file='mysql-bin.000928', master_log_pos=0;
START SLAVE;

現在show slave status\G顯示:

Master_Log_File: mysql-bin.000928
Read_Master_Log_Pos: 2439078
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 299660
Relay_Master_Log_File: mysql-bin.000928
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
....
Last_IO_Errno: 0
Last_IO_Error: 
Last_SQL_Errno: 0
Last_SQL_Error: 

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