Sincronização mestre-escravo MySQL 8.0, Linux e Windows

Sincronização mestre-escravo MySQL

Minha configuração: MySQL 8.0, Centos 7 (mestre), Windows 10 (escravo)

Etapa 1: verifique se o binlog está habilitado

A partir do MySQL8.0, o binlog é habilitado por padrão. Se for a versão 5.7, também pode ser configurado e habilitado em my.cnf/my.ini.

show variables like '%log_bin%';

o host

Escravo

insira a descrição da imagem aqui

Etapa 2: configurar o arquivo de configuração

o host

O arquivo de configuração do MySQL no Linux está em /etc/my.cnf por padrão e pode ser editado usando o comando vim

vim /etc/my.cnf

Configure as informações em [mysqld]. Observe que está em [mysqld]. Se estiver configurado em outros locais, não será lido.

O binlog-do-db aqui não pode ser configurado, de acordo com a necessidade.

Escravo

O arquivo de configuração do MySQL no Windows está em C:\Program Files\MySQL por padrão, abra my.ini para edição

Da mesma forma, configure as informações em [mysqld]

insira a descrição da imagem aqui

Etapa 3: reinicie o serviço

o host

Comando de reinicialização do MySQL no Linux

systemctl restart mysqld.service

insira a descrição da imagem aqui

Escravo

Abra o cmd, primeiro digite net stop mysql e depois digite net start mysql

net stop mysql
net start mysql

insira a descrição da imagem aqui

Etapa 4: configurar uma conta

o host

Normalmente, no cenário de negócios de sincronização mestre-escravo, uma conta é fornecida ao banco de dados escravo. Normalmente, a conta root não é fornecida. Aqui usarei a conta zhku que criei antes para demonstração (você também pode usar a conta root, mas não é recomendado).

Primeiro verifique se a conta tem permissão de sincronização mestre-escravo

select Repl_slave_priv, Repl_client_priv from mysql.user where user = 'zhku';

insira a descrição da imagem aqui

Isso mostra que a permissão não foi concedida

Conceder permissão

grant replication slave, replication client on *.* to 'zhku'@'%';

Etapa cinco: verificar o status

o host

Ver status mestre
show master status;

insira a descrição da imagem aqui

arquivo: Indica de qual arquivo começa a informação do bin-log sincronizado;

posição: indica por onde começar no arquivo;

binlog_do_db: Indica qual biblioteca sincronizar (se não estiver definido no arquivo de configuração, estará vazio)

Escravo

Defina o endereço IP do servidor mestre no escravo
change master to master_host='120.***.***.110',master_port=3306,master_user='zhku',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=156;

Aqui, defina master_host como o endereço IP do host, master_user como o usuário de login, como zhku, e defina master_password como a senha, aqui minha senha é 123456, master_log_file é o arquivo para visualizar o status do mestre no host e master_log_pos é a posição visualizada no host.

escravo aberto
start slave;
Consultar status de escravo
show slave status;

insira a descrição da imagem aqui

Há muitos resultados, então irei exibi-los em colunas para ficarem melhores.

Você pode ver os dois parâmetros mais críticos, os dois últimos, Slave_IO_Running e Slave_SQL_Running, mostrar Sim significa que a sincronização mestre-escravo foi alcançada com sucesso, e o primeiro Slave_IO_State também mostra que está aguardando o host enviar informações do evento.

Até agora a configuração foi bem-sucedida!

problemas encontrados

O primeiro problema: a inicialização falha ao reiniciar o serviço na terceira etapa

O motivo é que há um problema com o arquivo de configuração, sendo necessário verificar se o arquivo de configuração está configurado corretamente, como a grafia das palavras, se o banco de dados existe, etc.

O segundo problema: quando a máquina escrava verifica o status do escravo na quinta etapa, Slave_IO_Running mostra Connecting

insira a descrição da imagem aqui

Motivo: você pode continuar visualizando as colunas a seguir e encontrar a coluna Last_IO_Error

insira a descrição da imagem aqui

A visualização do relatório de erros mostra o erro relatado pelo plugin de autenticação 'caching_sha2_password': A autenticação requer conexão segura.

insira a descrição da imagem aqui

Ir para a consulta do host

insira a descrição da imagem aqui

Verifica-se que o valor do plugin da conta zhku é diferente daquele da conta root. Você precisa modificar o valor do plugin da conta zhku para mysql_native_password (use a instrução de atualização, que não será descrita aqui). Após a modificação, dois SIM serão exibidos com sucesso.

Também é possível que a mensagem de erro aqui não seja o problema. Esta coluna mostra que existem três problemas principais de conexão, um é um problema de rede, o outro é uma senha de conta incorreta e o outro é uma configuração incorreta de master_log_file e master_log_pos . Se houver um problema de rede, você pode verificar se o firewall está habilitado. O autor está usando o servidor Alibaba Cloud aqui. O grupo de segurança está habilitado no servidor e a porta do firewall está habilitada no Centos, para que possa ser acessado. Se for uma máquina virtual, depende do modo bridge, etc., que não se repete mais.

Abra e feche no Linux, verifique o link da postagem do blog do firewall:

https://blog.csdn.net/weixin_45930241/article/details/123219592

O terceiro problema: quando a máquina escrava verifica o status do escravo na quinta etapa, Slave_IO_Running mostra Não

insira a descrição da imagem aqui

Assim como na segunda pergunta, consulte a coluna de informações a seguir para ver qual é o motivo do erro

insira a descrição da imagem aqui

Verificou-se que o nome do arquivo de exibição era inconsistente

show master status;

Use o comando show master status na máquina escrava para visualizar

insira a descrição da imagem aqui

Use o comando show master status no host para visualizar

insira a descrição da imagem aqui

A comparação descobriu que Arquivo e Posição são inconsistentes.

Use o comando stop slave para parar o escravo da máquina escrava, volte para a etapa 5, use o comando change master para configurar novamente e, finalmente, reinicie o escravo. Se ainda falhar, verifique se os arquivos de configuração das duas máquinas foram modificados corretamente.

stop slave;

Acho que você gosta

Origin blog.csdn.net/weixin_45930241/article/details/124418655
Recomendado
Clasificación