MySQL設定log-bin後伺服器重啟失敗的解決辦法和說明
阿新 • • 發佈:2019-01-04
問題描述:
MySQL中二進位制日誌功能預設是關閉的,檢視各種開啟方式後,確定在配置檔案中加入如下配置來開啟該功能:
- [mysqld]
- log-bin=mysql
解決方法:
在設定 log-bin 的時候同時需要設定 server-id 變數,即在配置檔案中新增:
- [mysqld]
- log-bin=mysql
- server-id=1
那麼mysql資料庫資料夾中的mysql-bin.00001是什麼檔案? mysql-bin.000001、mysql-bin.000002等檔案是資料庫的操作日誌,例如UPDATE一個表,或者DELETE一些資料,即使該語句沒有匹配的資料,這個命令也會儲存到日誌檔案中,還包括每個語句執行的時間,也會記錄進去的。
這些形如mysql-bin.00001的檔案主要是用來做什麼的呢?
如果你的資料庫出問題了,而你之前有過備份,那麼可以看日誌檔案,找出是哪個命令導致你的資料庫出問題了,想辦法挽回損失。
2:主從伺服器之間同步資料
主伺服器上所有的操作都在記錄日誌中,從伺服器可以根據該日誌來進行,以確保兩個同步。
如果不想要這些檔案應該怎麼做呢? 1:只有一個mysql伺服器,那麼可以簡單的註釋掉這個選項就行了。
vi /etc/my.cnf把裡面的 log-bin 這一行註釋掉,重啟mysql服務即可。
2:如果你的環境是主從伺服器,那麼就需要做以下操作了。
A:在每個從屬伺服器上,使用SHOW SLAVE STATUS來檢查它正在讀取哪個日誌。
B:使用SHOW MASTER LOGS獲得主伺服器上的一系列日誌。
C:在所有的從屬伺服器中判定最早的日誌,這個是目標日誌,如果所有的從屬伺服器是更新的,就是清單上的最後一個日誌。
D:清理所有的日誌,但是不包括目標日誌,因為從伺服器還要跟它同步。
簡單地說,這些MySQL目錄下的形如mysql-bin.000***的檔案時MySQL的事務日誌。
刪除複製伺服器已經拿走的binlog是安全的,一般來說網路狀況好的時候,保留最新的那一個足以。