Mysql

恢復複製後來自主伺服器的錯誤 1236

  • September 9, 2014

我一直在嘗試恢復因電源中斷而損壞的複制。在檢查slaveDB時,它已經壞了,所以我設置了一個新的複制。在完成複制後,我遇到了這個問題:從二進制日誌中讀取數據時從主伺服器收到致命錯誤 1236:“主伺服器配置錯誤 - 未設置伺服器 ID”

我們正在執行 Percona Server 5.5。這是我做的程序:

1.)在主伺服器masterDB(IP = 10.0.0.20,server_id = 1)上,我執行innobackupex進行熱備份。檢查 xtrabackup_binlog_info 並記錄slavedb-bin.000609113535960作為 binlog 文件和位置。

2.) 將備份恢復到slaveDB (IP = 10.0.0.40),並按如下方式設置複製 – CHANGE MASTER TO MASTER_HOST=‘10.0.0.20’, MASTER_USER=‘user’,MASTER_PASSWORD=‘password’,MASTER_LOG_FILE= ‘slavedb-bin.000609’,MASTER_LOG_POS=113535960(如 innobackupex 備份的 xtrabackup_binlog_info 中所述。

3.) 啟動從屬伺服器後,我得到錯誤 1236 錯誤配置的主伺服器,但主伺服器 ID 為 1。

我在一個舊執行緒上線上閱讀,可能的解決方案是轉到下一個 binlog 文件,因為它可能已被應用的事務損壞。

但是我將如何移動到下一個 binlog 文件?它是**來自 innobackupex xtrabackup_binlog_info 的下一個 binlog 嗎?”**或者我應該檢查主日誌並找出它崩潰之前寫入的最後一個 binlog?

我嘗試從 innobackupex 給我的內容移過 binlog,轉到 slavedb-bin.000610 和 POS=0,但仍然出現相同的錯誤。

這是一個猜測,但請注意該選項server-id不能以熱方式啟動。根據我的經驗,這是第一次設置複製時出現問題的常見原因,特別是因為master 接受以下語法而沒有抱怨

mysql> SET GLOBAL server_id = 1;
Query OK, 0 rows affected (0.04 sec)

而且server id好像已經生效了:

mysql> SHOW GLOBAL VARIABLES like 'server\_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 1     |
+---------------+-------+
1 row in set (0.02 sec)

它不起作用,(直到重新啟動並從my.cnfor 中讀取作為參數傳遞時才會生效)。從站會一直抱怨,直到主站重新啟動。

官方文件具有誤導性,雖然它說它實際上不是動態的(或者至少在第一次設置時不是動態的,或者使用預設設置等)。有關詳細資訊,請參閱此錯誤,其中提到了誤導性文件。

總之,啟動二進制日誌和伺服器 ID 設置需要重新啟動伺服器,所以我總是建議在安裝時進行。[mysqld]在配置文件的部分更改它並重新啟動服務。

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