When setting up replication on a new slave for the first time, you have to explicitly give it all the information it needs:
Suppose you have
- Master Host is 10.20.30.40
- replication user is 'repuser'
- replication password is 'reppass'
First, create the replication user on the Master like this:
CREATE USER 'repuser'@'%' IDENTIFIED BY 'reppass';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
Next, enable replication on the Slave like this:
CHANGE MASTER TO
master_host='10.20.30.40',
master_port=3306,
master_user='repuser',
master_password='reppass',
master_log_file='dummy',
master_log_pos=1;
Now, load the mysqldump into the Slave.
Line 23-25 of the dump file has the CHANGE MASTER TO
command, but it specifies log file and position only. This will set those values on the Slave.
Finally, run these on the Slave
START SLAVE;
DO SLEEP(10);
SHOW SLAVE STATUS\G
Replication should now be running. You can verify it as running when you see
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
- Seconds_Behind_Master:
Keep running SHOW SLAVE STATUS\G
on the Slave until Seconds_Behind_Master
is 0
YOUR ACTUAL QUESTION
You initially said
I try to use the mysqldump option --master-data=1 which is adding a "CHANGE MASTER TO" in the output file to set the bin log file and position for the slave. I'm assuming (as per the doc) than it should be enough for the slave to know where to start.
To reiterate what I said earlier
Line 23-25 of the dump file has the CHANGE MASTER TO
command, but it specifies log file and position only. This will set those values on the Slave.
To clarify, when a Slave is initialized with all 6 options for the first time, then you can give it a CHANGE MASTER TO
command with just master_log_file
and master_log_pos
. Using --master-data does not supply host, port, username and password. Even with MySQL 5.7, CHANGE MASTER TO
supplies master_host
and master_port
. Still, username and password are not.