MySQL多源復制報錯,在線更改relay_log_info_repository,master_info_repository參數【轉】


 

設置多源復制時報錯

ERROR 3077 (HY000): To have multiple channels, repository cannot be of type FILE; Please check the repository configuration and convert them to TABLE.

原理:多源復制加入了一個叫做Channel的概念, 每一個Channel都是一個獨立的Slave,都有一個IO_THREAD和SQL_THREAD。原理和普通復制一樣。我們只需要對每一個Master執行Change Master 語句,只需要在每個語句最后使用For Channel來進行區分。由於復制的原理沒有改變,在沒有開啟GTID的時候Master的版本可以是MySQL5.5、5.6、5.7。並且從庫需要master-info-repositoryrelay-log-info-repository設置為table,否則會報錯。

在線更改relay_log_info_repository,master_info_repository

復制代碼
把relay.info記錄在slave_relay_log_info表里有兩個好處: 1.relay.info明文存儲不安全,把relay.info中的信息記錄在table中相對安全。 2.可以避免relay.info更新不及時,SLAVE 重啟后導致的主從復制出錯。 執行下述查詢,檢查relay_log_info_repository,master_info_repository值是否為table, relay_log_recovery 是否開啟。 SHOW VARIABLES WHERE variable_name IN ('relay_log_recovery','relay_log_info_repository','master_info_repository'); relay_log_info_repository,master_info_repository值如果為FILE,建議將其修改為TABLE. 修改步驟如下: 1. stop slave; 2. 
set global master_info_repository='table';
set global relay_log_info_repository='table';
3.在my.cnf中設置 relay_log_info_repository = TABLE master_info_repository = TABLE relay_log_recovery = on(這個沒有添加4.restart mysql 5.start slave; 6. 檢查relay_log_info_repository是否修改成功。 show variables where variable_name in ('relay_log_info_repository','master_info_repository'); relay_log_info_repository,master_info_repository值設置為TABLE后,可以利用如下SQL查詢主從同步的信息: select * from mysql.slave_master_info; select * from mysql.slave_relay_log_info;
復制代碼

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM