HiveBrain v1.2.0
Get Started
← Back to all entries
patternsqlMinor

Update MySQL slave when changing the hostname/IP of master

Submitted by: @import:stackexchange-dba··
0
Viewed 0 times
theupdateslavemysqlmasterhostnamewhenchanging

Problem

I have one master and one slave replicating great, but the master is about to have both it's hostname and IP changed. In master.info on the slave server I see the current hostname for the master, if I shutdown the slave server, change the hostname in that file and then restart MySQL will that be all I need? No usernames/passwords etc are changing.

If I used CHANGE MASTER queries instead it looks like it will require re-setting the binlog position etc?

Solution

Once you change the MASTER_HOST, everything else needs to change with it.

The "dark back-alley" approach you just suggested is exactly what to do.


Warning: Some systems use "mysqld" versus "mysql". 
The --skip-slave-restart "option" may not available without editing your
/etc/init.d/mysqld script to include this as a new option. 
If used, it will still start the slave upon startup.


On the Slave, run these four lines:

cd /var/lib/mysql  
service mysql stop  
cp master.info master.info.bak
wc -l < master.info


The last line echoes the number of lines in master.info

Next, vi master.info and change the IP address.

Next, run wc -l < master.info and make sure the linecount is still the same

Next, start mysql without starting replication

service mysql start --skip-slave-start


Login to MySQL, and run

SHOW SLAVE STATUS\G


If the IP address you added appears, then run

START SLAVE; SELECT SLEEP(5);
SHOW SLAVE STATUS\G


If you see Slave_IO_Running : Yes and Slave_SQL_Running : Yes, Congratulations !!!

Give it a Try !!!

Code Snippets

Warning: Some systems use "mysqld" versus "mysql". 
The --skip-slave-restart "option" may not available without editing your
/etc/init.d/mysqld script to include this as a new option. 
If used, it will still start the slave upon startup.</p>
cd /var/lib/mysql  
service mysql stop  
cp master.info master.info.bak
wc -l < master.info
service mysql start --skip-slave-start
SHOW SLAVE STATUS\G
START SLAVE; SELECT SLEEP(5);
SHOW SLAVE STATUS\G

Context

StackExchange Database Administrators Q#30782, answer score: 6

Revisions (0)

No revisions yet.