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'
Altera os parâmetros que o servidor slave usa para conectar e
comunicar com o servidor master. Os valores possíveis para o
valor master_def
estão mostrados acima.
As opções do relay log (RELAY_LOG_FILE
e
RELAY_LOG_POS
) estão disponíveis a partir
do MySQL 4.0.
As opções SSL (MASTER_SSL
,
MASTER_SSL_CA
,
MASTER_SSL_CAPATH
,
MASTER_SSL_CERT
,
MASTER_SSL_KEY
, e
MASTER_SSL_CIPHER
) estão disponíveis a
partir do MySQL 4.1.1. Você pode alterar estas opções mesmo
nos slaves que são compilados sem suporte a SSL. Eles serão
salvos no arquivo master.info
mas
ignorados até que você use um servidor que tenha suporte a
SSL habilitado.
Por exemplo:
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;
MASTER_USER
,
MASTER_PASSWORD
,
MASTER_SSL
,
MASTER_SSL_CA
,
MASTER_SSL_CAPATH
,
MASTER_SSL_CERT
,
MASTER_SSL_KEY
, and
MASTER_SSL_CIPHER
are information for the
slave to be able to connect to its master. If you don't
specify some of these informations, the non-specified
informations will keep their old value. For example, if the
password to connect to your MySQL master has changed, you just
need to issue
mysql>STOP SLAVE; -- if replication was running
mysql>CHANGE MASTER TO MASTER_PASSWORD='new3cret';
mysql>START SLAVE; -- if you want to restart replication
to tell the slave about the new password; no need to specify the information which did not change (host, port, user etc).
MASTER_HOST
, MASTER_PORT
are the hostname or IP adress of the master host, and its TCP
port. Note that if MASTER_HOST
is equal to
localhost
, then, like in other parts of
MySQL, the port may be ignored (if Unix sockets can be used
for example).
Se você especificar MASTER_HOST
ou
MASTER_PORT
, o slave assumirá que o mestre
é diferente do anterior (mesmo se você especificar um valor
de nost ou porta iguais ao do valor atual.) Neste caso Assim,
os valores antigos do nome e posição do log binário do
mestre não são mais aplicáveis, assim se você não
especificar MASTER_LOG_FILE
e
MASTER_LOG_POS
no comando,
MASTER_LOG_FILE=''
e
MASTER_LOG_POS=4
são silenciosamente
adicionados a ele.
MASTER_LOG_FILE
e
MASTER_LOG_POS
são as coordenadas das
quais a thread de E/S do slave começara a ler do master na
próxima vez em que ele for iniciado. If you specify any of
them, you can't specify RELAY_LOG_FILE
or
RELAY_LOG_POS
. If none of
MASTER_LOG_FILE
and
MASTER_LOG_POS
was specified, then the last
coordinates of the slave SQL
thread before CHANGE MASTER
was
issued, are used. 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 behaviour was introduced
starting from MySQL 4.0.17 and 4.1.1. (Before these versions,
the used coordinates were the last coordinates of the slave
I/O thread before CHANGE MASTER
was issued,
which caused the SQL thread to sometimes lose some events from
the master, thus breaking replication.)
CHANGE MASTER TO
deleta todos os relay logs (e
inicia um novo), a menos que você especifique
RELAY_LOG_FILE
ou
RELAY_LOG_POS
(neste caso os relay logs
serão mantidos; desde o MySQL 4.1.1 a variável global
RELAY_LOG_PURGE
será definida com zero sem
aviso prévio). CHANGE MASTER TO
atualiza
master.info
e
relay-log.info
.
CHANGE MASTER
é util para configurar um
slave quando você tem a cópia do master e gravou o registro
e offset no master que corresponde a cópia tirada. Você pode
executar CHANGE MASTER TO
MASTER_LOG_FILE='log_name_on_master',
MASTER_LOG_POS=log_offset_on_master
no slave depois
de restaurar a cópia.
O primeiro exemplo acima (CHANGE MASTER TO
MASTER_HOST='master2.mycompany.com' etc
) altera as
coordenadas do master e do seu log binário. Isto é quando
você deseja que o slave replique o master. O segundo exemplo,
usado com menos frequência, é quando o slave possui relay
logs que, por alguma razão, você deseja que o slave execute
novamente; para fazer isto o master não precisa estar
alcançavel, você só precisa fazer CHANGE MASTER
TO
e iniciar a thread de SQL (START SLAVE
SQL_THREAD
). Você pode usar isto mesmo fora da
consiguração de replicação, em um servidor standalone,
slave-de-ninguém, para recuperação depois de uma falha.
Suponha que o seu servidor tenha falhado e você tenha
restaurado um backup. Você deseja reexecutar o próprio log
binário do servidor (não os relay logs, mas logs binários
regulares), supostamente chamado
myhost-bin.*
. Primeiro faça uma cópia
destes logs binários em alguns lugares seguros, no caso de
você não seguir exatamente o procedimento abaixo e
acidentalmente apagar os logs binários de servidor. Se você
estiver usando o MySQL 4.1.1 ou mais novos, defina
SET GLOBAL RELAY_LOG_PURGE=0
para
segurança adicional. Então inicie o servidor sem
log-bin
, com um novo ID do servidor
(diferente do anterior), com
relay-log=myhost-bin
(para fazer o servidor
acreditar que estes logs binários regulares são relay logs)
e skip-slave-start
, então execute estas
instruções:
mysql>CHANGE MASTER TO
->RELAY_LOG_FILE='myhost-bin.153',
->RELAY_LOG_POS=410,
->MASTER_HOST='some_dummy_string';
mysql>START SLAVE SQL_THREAD;
Então o servidor irá ler e executar seus próprios logs
binários, e assim conseguindo a recuperação de falhas. Uma
vez que a recuperação está finalizada, execute
STOP SLAVE
, desligue o servidor, delete
master.info
e
relay-log.info
, e reinicie o servidor com
suas opções originais. No momento, especificar
MASTER_HOST
(mesmo com um valor modelo) é
compulsório para fazer o servidor pensar que ele é um slave,
e dar ao servidor um novo ID, diferente do anterior é
compulsório senão o servidor verá os eventos com seus IDs e
pensará que ele está em uma configuração de replicação
circular e ignora os eventos, o que é indesejado. No futuro
planejamos adicionar opções para lidar com estas pequenas
restrições.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.