MySQL por replicação de banco de dados?

2

Então, meu problema é interessante: queremos migrar de um servidor para outro. Fizemos uma replicação mestre-escravo, mas meu chefe veio com a ideia de fazer um banco de dados de migração de cada vez.

Então ele me pediu para configurar no novo servidor outra instância do MySQL, deixar o escravo quase como está e fazer a nova instância ser o novo mestre incrementalmente, um banco de dados por vez. É possível, isto é, posso transferir o banco de dados 'x' do mestre antigo para o novo mestre e apenas dizer ao escravo para sincronizar 'x' no novo mestre a partir de agora?

Li neste thread antigo ( Mysql Replication - são executadas threads de banco de dados possível? ) que isso não era possível naquele momento. Isso pode ser feito agora?

Obrigado!

Lucas Bracher.

    
por LucasBr 05.07.2012 / 18:26

3 respostas

2

Você poderia fazer algo assim, mas não há benefícios.

O que você não pode fazer é "dizer ao slave para sincronizar 'x'" Não é assim que a replicação funciona. A replicação apenas reproduz os eventos do mestre a partir da posição que você diz para ele. Portanto, é necessário garantir que você tire um instantâneo dos dados do mestre em um ponto consistente no tempo e copie esses dados para o escravo antes de iniciar a replicação.

Não há vantagem real em fazer um banco de dados de cada vez do mestre para o escravo. Na verdade, é muito mais difícil.

A maneira mais fácil de configurar um escravo é fazer um backup completo do seu mestre, fazendo uso para registrar a posição do log binário, depois restaurar esse backup para o escravo e iniciar a replicação a partir da posição do log bog registrado.

Mas vamos voltar atrás e dar uma olhada no que você realmente está tentando fazer:

Você deseja migrar para um novo servidor e permitir que o escravo seja "master" para um banco de dados por vez.

Isso é simples.

Então aqui está sua replicação: Master -> Slave

Você configura o escravo para ser uma cópia completa do mestre e replica as alterações para que elas permaneçam em sincronia.

O que significa para o escravo ser mestre agora? Significa apenas dizer ao seu aplicativo para usar o escravo para fazer toda a leitura e escrita. É isso aí. Depois de configurar a replicação, não há outras alterações no mysql para fazer.

A promoção de um escravo para um mestre é uma alteração de configuração de aplicativo apenas (no seu caso, onde você tem um servidor master do mysql com um escravo replicando a partir dele).

Então, se você puder alterar a configuração de seu aplicativo para usar um banco de dados mysql diferente para cada banco de dados que está tentando usar, então você pode migrar em banco de dados de cada vez.

Simples.

    
por 08.07.2012 / 03:50
2

Sim, você pode fazer isso. A replicação do MySQL permite que você especifique quais esquemas replicar [1] ou não, procure o parâmetro replicate_wild_do_table.

No entanto, também é muito bobo fazer isso, já que você precisará de tempo de inatividade para cada migração para garantir que não haja perda de dados, e também não consigo pensar em uma boa razão para não simplesmente replicar todos os bancos de dados. .

[1] O escravo ainda buscará o log binário completo, mas somente executará instruções que correspondam ao (s) filtro (s)

    
por 24.08.2013 / 18:50
0

Não - a replicação do MySQL é tudo ou nada (ish). Você não pode escravizar um servidor MySQL de dois mestres separados.

    
por 05.07.2012 / 18:28