Abaixo uma explicação do que é e o que não é suportado:
            A Replicação será feita corretamente com valores
            AUTO_INCREMENT,
            LAST_INSERT_ID e
            TIMESTAMP.
          
            As funções USER() e
            LOAD_FILE() são replicadas sem
            alterações e não funcionarão de forma confiável no
            slave. Isto também é verdade para
            CONNECTION_ID() em versões de servidor
            slaves mais antigas que 4.1.1. A
            nova função
            PASSWORD() no MySQL 4.1, é bem replicada
            desde os masters 4.1.1; o seu slave deve ser 4.1.0 ou acima
            para replicá-la. Se você tem slaves mais antigos e precisa
            replicar PASSWORD() do seu master 4.1.x,
            você deve iniciar o master com a opção
            --old-password.
          
            As variávies SQL_MODE,
            UNIQUE_CHECKS,
            SQL_SELECT_LIMIT,
            SQL_AUTO_IS_NULL e
            TABLE_TYPE não são replicados ainda.
            FOREIGN_KEY_CHECKS é replicado desde a
            versão 4.0.14.
          
            Você deve uilizar o mesmo conjunto de caracteres
            (--default-character-set) no master e
            slave. Senão, você pode conseguir erros de chaves
            duplicadas no slave, pois uma chave que é considrada como
            única no conjunto de caracteres no master pode não ser
            único no conjunto de caracteres do slave.
          
            Se você estiver usando tabelas transacionais no master e
            não transacionais (para as mesmas tabelas) no slave, você
            terá prblemas se o slave for parado no meio de um bloco
            BEGIN/COMMIT, já que o slave irá, mais
            tarde, iniciar a partir do início do bloco
            BEGIN. Este assunto está em nosso TODO e
            será corrigido em um futuro próximo.
          
Consultas de atualização que usam variáveis de usuários são mal replicadas nas versões 3.23 e 4.0. Isto é corrigido no MySQL 4.1. Note que nomes de variáveis de usuários são caso insensitivo a partir da versão 5.0, assim você deve levar isto em conta quando configurar uma replicação entre um servidor com versão 5.0 e outro com uma versão anterior.
O slave pode se conectar ao master usando SSL, se o master e o slave forem ambos 4.1.1 ou mais novos.
Embora nunca tenhamos tido casos de ocorrênciar reais, é teoricamente possível de que o dado no master e no slave podem estar diferentes se uma consulta é projetada de modo que a modificação do dado seja não determinística, p.ex. deixar a vontade do otimizados de consultas (o que geralmente não é uma boa prática, mesmo fora da replicação!). Para uma explicação detalhada Secção 1.8.6.2, “Open Bugs / Deficiências de Projeto no MySQL”.
            Antes do MySQL 4.1.1, os comandos FLUSH,
            ANALYZE, OPTIMIZE e
            REPAIR não são armazenados no log
            binário e por isto não são replicados para o slave. Isto
            normalmente não é um problema já que estes comandos não
            alteram nada. Isto significa, no entanto, que se você
            atualizar a tabela de privilégio do MySQL diretamente sem
            usar a instrução GRANT e replicar o
            banco de dados de privilégios mysql,
            você deve fazer um FLUSH PRIVILEGES em
            seu slave para que os novos privilégios tenham efeito.
            Também, se você utilizar FLUSH TABLES
            ao renomear uma tabela MyISAM envolvida
            em uma tabela MERGE, você terá uqe
            executar FLUSH TABLES manualmente no
            servidor. Desde o MySQL 4.1.1, estes comandos são escritos
            no log binário (exceto FLUSH LOGS,
            FLUSH MASTER, FLUSH
            SLAVE, FLUSH TABLES WITH READ
            LOCK) a menos que você especifique
            NO_WRITE_TO_BINLOG (ou seu alias
            LOCAL). Para um exemplo da sintaxe
            Secção 4.6.4, “Sintaxe de FLUSH”.
          
            O MySQL suporta somente um master e vários slaves.
            Posteriormente adicionaremos um algorítimo de votação
            para trocar automaticamente o master se alguma coisa estiver
            errada com o master atual. Iremos também introduzir
            processos agentes para ajudar a fazer o balanceamento de
            carga enviando consultas SELECT para
            diferentes slaves.
          
Tabelas temporárias são replicadas, exceto no caso em que você desliga o servidor slave (e não apenas a thread slave), e você tem alguns tabelas temporárias replicadas e são usadas em instruções UPDATES que ainda não foram executadas no slave. (Se você desligar o slave, as tabelas temporárias necessárias por estas atualizações não estarão mais disponíveis quando o slave iniciar novamente.) Para evitar este problema, não desligue o servidor enquanto ele tiver tabelas temporárias abertas. Em vez disto, use este procedimento:
                Envie uma instrução STOP SLAVE.
              
                Use SHOW STATUS para verificar o
                valor da variável
                Slave_open_temp_tables.
              
                Se o valor é 0, envie um comando mysqladmin
                shutdown para desligar o slave.
              
                Se o valor é diferente de 0, reinicie as threads slaves
                com START SLAVE.
              
Repita o procedimento anterior para ver se você terá melhor sorte na próxima vez.
Planejamoc corrigir este problema em um futuro próximo.
            É seguro conectar servidores em um relacionamento
            master/slave circular com
            log-slave-updates habilitado. Note,
            entretanto, que várias consultas não irão funcionar
            corretamente neste tipo de configuração a menos que o
            código do cliente seja escrito para tomar cuidado dos
            potenciais problemas que podem ocorrer em diferentes
            sequências em servidores diferentes.
          
Isto significa que você pode fazer uma configuração parecida com o seguinte:
A -> B -> C -> A
As IDs do servidor são codificadas nos eventos do log binário. A saberá quando o evento que ele lê é foi originalmente criado por A, assim A não o executará não haverá loop infinito. Mas esta configuração circular só funcionará se você realizar atualizações não conflitantes entre as tabelas. Em outras palavras, se você insere dados em A e C, você nunca deve inserir um registro em A que pode ter uma chave confiltante com um registro em C. Você também não deve atualizar os mesmos registros em dois servidores se a ordem que a atualização é aplicada importa.
            Se houver um erro em uma consulta no slave, a thread slave
            irá terminar e uma mensagem irá aparecer no log de erro do
            slave. Você deve então conectar a um slave manualmente,
            corrigir a causa do erro (por exemplo, tabela não
            existente), e então executar o comando sql SLAVE
            START.
          
            Se a conexão para o master for perdida, o slave irá tentar
            se reconectar imediatamente. Se ele falhar, o slave irá
            tenatr a cada master-connect-retry
            segundos (padrão 60). Por causa disto, é seguro desligar o
            master, e então reiniciá-lo depois de um tempo. O slave
            também está apto para lidar com interrupções de rede. No
            entanto o slave notificará a a perda da rede apenas após
            não ter recebido dados do master por
            slave_net_timeout segundos. Assim se sua
            perda for pequena, você pode querer diminuir
            slave_net_timeout. See
            Secção 4.6.8.4, “SHOW VARIABLES”.
          
Desligar o slave (corretamente) também é seguro, pois mantém sinais de onde parou. Desligamentos incorretos podem produzir problemas, especialmente se o cache de disco não foi sincronizado antes do sistema morrer. Seu sistema de tolerância a falhas será melhorado se você possuir um bom No-Break ou UPS.
            Devido a natureza não trabnsacional das tabelas MyISAM, é
            possível ter uma consulta que atulizará apenas
            parcialmente uma taela e retornará um código de erro. Isto
            pode acontecer, por exemplo, em uma inserção
            multi-registro que tem uma violação da restrição da
            chave o use uma consulta de atualização é finalizada
            após atualizar alguns dos registros. Se isto acontecer no
            master, a thread slave sairá e irá esperar o DBA decidir o
            que fazer com isto a menos que seja autenticado e a
            execução da consulta resulte no mesmo código de erro. Se
            este comportamento da validação do código de erro não
            for desejável, algum (ou todos) os erros podem ser
            ignorados com a opção
            --slave-skip-errors. Ela está disponível
            a partir da versão 3.23.47.
          
            Se você atualiza tabelas transacionais a partir de tabelas
            não-transacioanis dentro de um segmento
            BEGIN/COMMIT, a atualização no log
            binário pode estar fora de sincronia se algumas threads
            alterarem a tabela não transacional antes do commit da
            transação. Isto é porque a transação é escrita no log
            binário apenas quando é feito o commit.
          
            Antes da versão 4.0.15, qualquer atualização de uma
            tabela não transacional é gravada no log binário
            imeditamente quando a atualização é feita enquanto
            atualizações transacionais são gravadas no
            COMMIT ou não gravadas se você utilizar
            um ROLLBACK. Você deve levar isto em
            conta quando atualizar tabelas transacionais e não
            transacionais na mesma transação e você estiver usando o
            log binário para backup ou replicação. Na versão 4.0.15
            nós alteramos o comportamento do registro de transações
            que misturam atualizações de tabelas transacionais e não
            transacionais, que soluciona o problema (ordem das consultas
            boas no log binário, e todas as consultas necessárias são
            gravadas no log binário mesmo no caso de um
            ROLLBACK). O problema que permanece é
            quando uma segunda conexão atualiza uma tabela não
            transacional enquanto a primeira transação da conexão
            ainda não está finalizada (ordenação errada ainda pode
            ocorrer, porque a atualização da segunda conexão será
            gravada imediatamente depois de ela ter sido feita).
          
A seguinte tabela lista problemas na versão 3.23 que estão corrigidas na versão 4.0:
            LOAD DATA INFILE é tratado
            apropriadamente desde que o arquivo ainda esteja no servidor
            master no momento da propagação da atualização.
          
            LOAD LOCAL DATA INFILE será ignorado.
          
            Na versão 3.23 RAND() em atualizações
            não é replicado apropriadamente. Use
            RAND(alguma_expr_nao_rand) se você
            estiver replicando atualizções com
            RAND(). Você pode, por exemplo, utilizar
            UNIX_TIMESTAMP() para o argumento de
            RAND(). Isto é corrigido na versão 4.0.
          
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.

