Mysql
在mysql複製中更改master的主機IP
我有一個主人和一個奴隸。假設 master 的 IP 改變了,但物理伺服器是一樣的。現在我想在從屬伺服器上更新(主控的)新 IP。在從伺服器
master_info_repository
設置為TABLE
. 我想從由於 IP 更改而暫停的確切位置恢復複製過程。這該怎麼做?從伺服器的mysql版本是:14.14 Distrib 5.7.30
和O/S是ubuntu 18.04
。
經過長時間的網上沖浪後,我得到了一個東西。
MASTER_LOG_FILE
will takeRelay_Master_Log_File
andMASTER_LOG_POS
will takeExec_Master_Log_Pos
as their各自的價值在CHANGE MASTER TO
聲明中。在mysql 文件的 Exec_Master_Log_Pos 部分中明確說明了這一點。我發現另一篇文章說同樣的事情:當您使用 CHANGE MASTER TO 設置從屬伺服器的起始位置時,您正在為 SQL 執行緒指定位置,因此您應該使用 Relay_Master_Log_File:Exec_Master_Log_Pos。否則你會破壞你的複制。
它沒有幫助 SHOW MASTER STATUS 具有 Master_Log_File 值並且 CHANGE MASTER TO 接受 Master_Log_File 參數,而您實際上想要使用 Relay_Master_Log_File 代替。這個命名是從 MySQL 4.0 之前的時代遺留下來的,多年後它仍然引起混亂。
結論 :
STOP SLAVE;
SHOW SLAVE STATUS \G
- 記下
Relay_Master_Log_File
值(範例:mysql-bin.000007)和Exec_Master_Log_Pos
值(範例:775)CHANGE MASTER TO MASTER_HOST='<New IP of Master>', MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS=775;
START SLAVE;
因為您只想更改 ip 並且它是同一台伺服器
在你執行的奴隸上
SHOW SLAVE STATUS
然後你複製
Relay_Master_Log_File for example mysql-bin.000001 Read_Master_Log_Pos for example 111111
然後你停止奴隸
STOP SLAVE; CHANGE MASTER TO MASTER_HOST='192.168.1.1', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=111111; START SLAVE;
192.168.1.1
當然只是一個例子如果您需要更改更多內容,請查看手冊