Mysql

在mysql複製中更改master的主機IP

  • February 16, 2021

我有一個主人和一個奴隸。假設 master 的 IP 改變了,但物理伺服器是一樣的。現在我想在從屬伺服器上更新(主控的)新 IP。在從伺服器master_info_repository設置為TABLE. 我想從由於 IP 更改而暫停的確切位置恢復複製過程。這該怎麼做?從伺服器的mysql版本是:14.14 Distrib 5.7.30和O/S是ubuntu 18.04

經過長時間的網上沖浪後,我得到了一個東西。MASTER_LOG_FILEwill take Relay_Master_Log_Fileand MASTER_LOG_POSwill take Exec_Master_Log_Posas 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 之前的時代遺留下來的,多年後它仍然引起混亂。

結論 :

  1. STOP SLAVE;
  2. SHOW SLAVE STATUS \G
  3. 記下Relay_Master_Log_File值(範例:mysql-bin.000007)和Exec_Master_Log_Pos值(範例:775)
  4. CHANGE MASTER TO MASTER_HOST='<New IP of Master>', MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS=775;
  5. 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當然只是一個例子

如果您需要更改更多內容,請查看手冊

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