Mysql
主數據庫空間不足
我的主伺服器今天(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: