Syntax:
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'

CHANGE MASTER TO changes the parameters that the slave server uses for
connecting to and communicating with the master server. It also updates
the contents of the master.info and relay-log.info files.

MASTER_USER, MASTER_PASSWORD, MASTER_SSL, MASTER_SSL_CA,
MASTER_SSL_CAPATH, MASTER_SSL_CERT, MASTER_SSL_KEY, and
MASTER_SSL_CIPHER provide information to 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 are ignored unless 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:

STOP SLAVE; -- if replication was running
CHANGE MASTER TO MASTER_PASSWORD='new3cret';
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 number might 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 from 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 cannot 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 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.

The following example changes the master and master's binary log
coordinates. This is used when you want to set up the slave to
replicate the master:

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;

The next example shows an operation that is less frequently employed.
It is used when the slave has relay logs that you want it to execute
again for some reason. To do this, the master need not be reachable.
You need only use CHANGE MASTER TO and start the SQL thread (START
SLAVE SQL_THREAD):

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