
CHANGE MASTER TO master_def [, master_def] ...

master_def:
      MASTER_HOST = 'host_name'
    | MASTER_USER = 'user_name'
    | MASTER_PASSWORD = 'password'
    | MASTER_PORT = port_num
    | MASTER_CONNECT_RETRY = count
    | MASTER_LOG_FILE = 'master_log_name'
    | MASTER_LOG_POS = master_log_pos
    | RELAY_LOG_FILE = 'relay_log_name'
    | RELAY_LOG_POS = relay_log_pos
    | MASTER_SSL = {0|1}
    | MASTER_SSL_CA = 'ca_file_name'
    | MASTER_SSL_CAPATH = 'ca_directory_name'
    | MASTER_SSL_CERT = 'cert_file_name'
    | MASTER_SSL_KEY = 'key_file_name'
    | MASTER_SSL_CIPHER = 'cipher_list'

Changes the parameters that the slave server uses for connecting to and
communicating with the master server.

MASTER_USER, MASTER_PASSWORD, MASTER_SSL,
MASTER_SSL_CA, MASTER_SSL_CAPATH, MASTER_SSL_CERT,
MASTER_SSL_KEY, and MASTER_SSL_CIPHER provide information for
the slave about how to connect to its master.

The relay log options (RELAY_LOG_FILE and RELAY_LOG_POS) are
available beginning with MySQL 4.0.

The SSL options
(MASTER_SSL,
MASTER_SSL_CA,
MASTER_SSL_CAPATH,
MASTER_SSL_CERT,
MASTER_SSL_KEY,
and
MASTER_SSL_CIPHER)
are available beginning with MySQL 4.1.1.
You can change these options even on slaves that are compiled without SSL
support. They are saved to the *master.info file, but is ignored
until you use a server that has SSL support enabled.

If you don't specify a given parameter, it keeps its old
value, except as indicated in the following discussion. For example, if the password to connect to your MySQL master has
changed, you just need to issue these statements
to tell the slave about the new password:

mysql> STOP SLAVE; -- if replication was running
mysql> CHANGE MASTER TO MASTER_PASSWORD='new3cret';
mysql> START SLAVE; -- if you want to restart replication

There is no need to specify the parameters that do
not change (host, port, user, and so forth).

MASTER_HOST and MASTER_PORT are the hostname (or IP address) of
the master host and its TCP/IP port. Note that if MASTER_HOST is
equal to localhost, then, like in other parts of MySQL, the port
may be ignored (if Unix socket files can be used, for example).

If you specify MASTER_HOST or MASTER_PORT,
the slave assumes that the master server is different than
before (even if you specify a host or port value that is
the same as the current value.) In this case, the old values for the master
binary log name and position are considered no longer applicable, so if you
do not specify MASTER_LOG_FILE and MASTER_LOG_POS in the
statement, MASTER_LOG_FILE='' and MASTER_LOG_POS=4 are
silently appended to it. 

MASTER_LOG_FILE and MASTER_LOG_POS are the coordinates
at which the slave I/O thread should begin reading from the master the
next time the thread starts.
If you specify either of them, you can't specify RELAY_LOG_FILE or
RELAY_LOG_POS.
If neither of MASTER_LOG_FILE or MASTER_LOG_POS are
specified, the slave uses the last coordinates of the /slave SQL thread/
before CHANGE MASTER was issued. This ensures that
replication has no discontinuity, even if the slave SQL thread was late
compared to the slave I/O thread, when you just want to change, say, the
password to use. This safe behavior was introduced starting from MySQL
4.0.17 and 4.1.1. (Before these versions, the coordinates used were 
the last coordinates of the slave I/O thread before CHANGE MASTER
was issued. This caused the SQL thread to possibly lose some events
from the master, thus breaking replication.)

CHANGE MASTER /deletes all relay log files/ and starts
a new one, unless you specify RELAY_LOG_FILE or
RELAY_LOG_POS. In that case, relay logs are kept;
as of MySQL 4.1.1 the relay_log_purge global variable
is set silently to 0.

CHANGE MASTER TO updates the contents of the *master.info and
*relay-log.info files.

CHANGE MASTER is useful for setting up a slave when you have
the snapshot of the master and have recorded the log and the offset
corresponding to it.  After loading the snapshot into the slave, you
can run CHANGE MASTER TO MASTER_LOG_FILE='log_name_on_master',
MASTER_LOG_POS=log_offset_on_master on the slave.

Examples:

mysql> CHANGE MASTER TO
    ->     MASTER_HOST='master2.mycompany.com',
    ->     MASTER_USER='replication',
    ->     MASTER_PASSWORD='bigs3cret',
    ->     MASTER_PORT=3306,
    ->     MASTER_LOG_FILE='master2-bin.001',
    ->     MASTER_LOG_POS=4,
    ->     MASTER_CONNECT_RETRY=10;

mysql> CHANGE MASTER TO
    ->     RELAY_LOG_FILE='slave-relay-bin.006',
    ->     RELAY_LOG_POS=4025;
