Configuração mestre-escravo do MySQL no Windows [Parte 1]

Prefácio:
        O sistema Windows configura a replicação mestre-escravo do MySQL e dois serviços MySQL precisam ser instalados no sistema. Eu uso o ambiente integrado localmente, e o ambiente integrado já possui um serviço MySQL, então preciso baixar e instalar um serviço MySQL separadamente. Este artigo é para ensinar como baixar e instalar o MySQL, e por fim como configurar o mestre-escravo.

O ambiente integrado que uso localmente é o phpstudy, e a versão do MySQL é 5.7.26

 

Parte 1: Como instalar dois serviços MySQL no Windows

Etapa 1: Como o ambiente integrado só pode iniciar um serviço MySQL no Windows, precisamos baixar um pacote de instalação do MySQL e instalar um serviço MySQL em um ambiente não integrado por nós mesmos.

O endereço de download é o seguinte: selecione a versão que você precisa nele.

MySQL :: Zona do Desenvolvedor https://dev.mysql.com/

Após a conclusão do download, após a descompactação, você obterá um diretório de pastas conforme mostrado na figura abaixo.

Vá para D:\mysql-5.7.39-winx64\bin Dê um duplo clique neste diretório: mysql.exe, conforme a figura abaixo

Depois de clicar duas vezes em: mysql.exe, descobri que uma janela pop-up preta piscou e não houve outra resposta.
Causa: porque o serviço não está instalado, como instalá-lo e, em seguida, olhe para baixo.

A segunda etapa é modificar o arquivo de configuração MySQL auto-instalado

        Em teoria, basta instalar o serviço diretamente nesta etapa, mas por ser a configuração padrão, haverá muitos problemas ao utilizá-lo. Por exemplo, os caracteres chineses dentro são ilegíveis e uma série de fatores incertos, é recomendável configurar o arquivo padrão primeiro. Em D:\mysql-5.7.39winx64 (sob o diretório raiz), crie um novo my.ini. Copie o código abaixo e salve.

[mysql]
default-character-set=utf8

[mysqld]
port = 3307
basedir=D:\mysql5.7.39winx64
datadir=D:\mysql5.7.39winx64\data
max_connections=200
character-set-server=utf8
default-storage-engine=InnoDB

[client]
port=3307
default-character-set=utf8

Nota: O arquivo my.ini recém-criado deve prestar atenção ao formato e salvá-lo no formato ANSI.

 Execute o programa cmd.exe como administrador

1. Mude o caminho para: D:\>cd mysql5.7.39winx64\bin

2. Execute: comando de instalação mysqld.exe

Depois de executar o comando de instalação, você verá um prompt de instalação bem-sucedido, conforme mostrado na figura a seguir:

3. Inicialize o banco de dados e execute o comando: mysqld --initialize --console A execução termina conforme a figura abaixo

 Obs.: A última linha é a senha inicial do banco de dados,
yE/WzCr1Qdz2 é a senha inicial, que é necessária para logins subsequentes, podendo também ser modificada após o login.

Após executar o comando mysqld --initialize --console, alguns arquivos serão gerados no diretório de dados criado manualmente, conforme a figura a seguir

 4. Execute o comando do serviço de instalação mysqld install MySQL3

Nota: Você precisa especificar o nome do serviço aqui. Se você não especificar o nome do serviço, o padrão é MySQL, mas MySQL é o nome do serviço no ambiente integrado instalado localmente, então mudei o nome do serviço para MySQL3

Execute o comando para concluir, verifique o serviço do computador e descubra se há um serviço MySQL3 adicional

 O serviço foi instalado com sucesso até agora, mas não se apresse em iniciar o serviço MySQL3, você precisa modificar o registro.

 

Passo 3: Modifique o registro do serviço MySQL3

1. Executar (tecla de atalho win+R)——digite: regedit.exe para executar como administrador.
2. Encontre o serviço MySQL3, caminho: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services, você pode ver MySQL3

 Etapa 4: Inicie o serviço MySQL3 novamente, conforme mostrado na figura abaixo, a inicialização foi bem-sucedida.

Etapa 5: faça login no MySQL3

 

Nota:
1. A senha é a senha inicial fornecida para iniciar o serviço de instalação: yE/WzCr1Qdz2

2. O número da porta de serviço deve ser especificado no comando login, caso contrário, o login falhará

 Passo 6: Altere a senha do MySQL3

ALTER user 'root'@'localhost' IDENTIFIED BY '123456';

 

Se aparecer Consulta Ok, significa que a senha foi alterada com sucesso.

Neste ponto, a instalação de dois serviços MySQL no Windows 7 foi concluída. Para o processo de instalação de dois serviços MySQL em outros sistemas Windows, você pode consultar o tutorial de instalação do windows7, que é semelhante com pequenas diferenças. A diferença deve ser a diferença entre a configuração da variável de ambiente e a execução dos comandos do sistema.

Parte 2: Como configurar o mestre-escravo do MySQL

Configuração da biblioteca principal:

Passo 1: Modifique a configuração no arquivo my.ini da biblioteca principal

[mysql]
default-character-set=utf8

[mysqld]
port=3306
basedir=D:/PhpStudyV8/phpstudy_pro/Extensions/MySQL5.7.26/
datadir=D:/PhpStudyV8/phpstudy_pro/Extensions/MySQL5.7.26/data/
character-set-server=utf8
default-storage-engine=MyIsam
max_connections=1000
collation-server=utf8_unicode_ci
init_connect='SET NAMES utf8'
innodb_buffer_pool_size=64M
innodb_flush_log_at_trx_commit=1
innodb_lock_wait_timeout=120
innodb_log_buffer_size=4M
innodb_log_file_size=256M
interactive_timeout=120
join_buffer_size=2M
key_buffer_size=32M
log-error="D:/PhpStudyV8/phpstudy_pro/Extensions/MySQL5.7.26/data"
log_error_verbosity=1
max_allowed_packet=16M
max_heap_table_size=64M
myisam_max_sort_file_size=64G
myisam_sort_buffer_size=32M
read_buffer_size=512kb
read_rnd_buffer_size=4M
skip-external-locking=on
sort_buffer_size=256kb
table_open_cache=256
thread_cache_size=16
tmp_table_size=64M
wait_timeout=120
binlog_format=mixed
#server_id=1
server-id=1
log-bin=mysql-bin
#binlog记录内容的方式,记录被操作的每一行
binlog_format=ROW
#减少记录日志的内容,只记录受影响的列
binlog_row_image=minimal
#指定需要复制的数据库名为db_test,如果备份多个数据库,重复设置这个选项即可
binlog-do-db=db_test
#不需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys
# 这个参数要加上,否则不会给更新的记录些到二进制文件里(未测试)
log-slave-updates=1

[client]
port=3306
default-character-set=utf8

A parte chave é:

#server_id=1 
server-id=1 
log-bin=mysql-bin 
#A maneira como o binlog registra o conteúdo, registra cada linha que é operada 
binlog_format=ROW 
#Reduz o conteúdo do log, registra apenas as colunas afetadas 
binlog_row_image=minimal 
#Especifica O nome 
do banco de dados a ser copiado é db_test. Se vários bancos de dados forem copiados, esta opção 
pode ser definida repetidamente 
. -db=mysql 
binlog-ignore-db=performance_schema 
binlog-ignore-db=information_schema 
binlog-ignore-db=sys 
# Este parâmetro deve ser adicionado, caso contrário os registros atualizados não serão adicionados ao arquivo binário (não testado) 
log- slave-updates=1

Etapa 2: crie uma conta fornecida à biblioteca escrava para sincronizar dados

#创建允许从库同步数据的账号
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' identified by '123456';
#刷新权限
FLUSH PRIVILEGES;

Etapa 3: reinicie o serviço MySQL e verifique o status da biblioteca principal

                         Depois de modificar a configuração, você precisa reiniciar o serviço MySQL, conforme mostrado na figura a seguir

 Faça login no MySQL e visualize o nome do arquivo e a localização do binário do registro da biblioteca principal, conforme mostrado na figura abaixo

Nome do arquivo: mysql-bin.000005 Localização: 154

 Na configuração da biblioteca:

Etapa 1: Modifique o arquivo de configuração my.ini da biblioteca

[mysql]
default-character-set=utf8

[mysqld]
port = 3307
basedir=D:\mysql5.7.39winx64
datadir=D:\mysql5.7.39winx64\data
max_connections=200
character-set-server=utf8
default-storage-engine=InnoDB
#服务的唯一编号
server-id=2
#开启mysql binlog功能
log-bin=mysql-bin
#binlog记录内容的方式,记录被操作的每一行
binlog_format=ROW
# 减少记录日志的内容,只记录受影响的列
binlog_row_image = minimal

replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=performance_schema.%
replicate_wild_ignore_table=information_schema.%

[client]
port=3307
default-character-set=utf8

 O foco da configuração é:

#O número único do serviço 
server-id=2 
#Habilite a função mysql binlog 
log-bin=mysql-bin 
#A forma como o binlog registra o conteúdo, registra cada linha que é operada 
binlog_format=ROW 
#Reduz o conteúdo do log, apenas registre as colunas afetadas 
binlog_row_image = mínimo 

repeat_wild_ignore_table=mysql.% 
repeat_wild_ignore_table=performance_schema.% 
repeat_wild_ignore_table=information_schema.%

Instruções de configuração comumente usadas envolvidas: repeat_wild_ignore_table

Há um perigo oculto ao usar o repeat_do_db e o repeat_ignore_db, e ocorrerão erros ao atualizar entre os bancos de dados.

Use repeat_wild_do_table repeat_wild_ignore_table no Slave   para resolver o problema de atualização entre bibliotecas.

Etapa 2: reinicie o serviço MySQL3. 

 

Reinicie o serviço MySQL3 e faça login. Ao fazer login, você precisa prestar atenção ao especificar o número da porta 3307 (o motivo específico é explicado na primeira parte da instalação do serviço MySQL).

Passo 3: Configure as informações da biblioteca principal na biblioteca escrava, execute o seguinte comando

CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_PORT=3306,MASTER_USER='root',MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=154;
Descrição do parâmetro no comando: 
MASTER_HOST é o ip da biblioteca principal 
MASTER_PORT é a porta da biblioteca principal mysql 
MASTER_USER é o nome do usuário 
MASTER_PASSWORD é a senha da biblioteca principal mysql 
MASTER_LOG_FILE é o arquivo binário da biblioteca principal 
MASTER_LOG_POS é a localização da biblioteca principal

O resultado da execução é mostrado na figura abaixo, o que significa sucesso.

Inicie o processo de sincronização escravo

mysql> start slave;

Ver status de escravo

mysql> show slave status \G;

 

 Slave_IO_Running: Sim, Slave_SQL_Running: Sim, significa que dois threads foram iniciados e a configuração da replicação mestre-escravo foi bem-sucedida.

Crie uma nova tabela na biblioteca mestre para ver se a biblioteca escrava sincronizou a nova tabela. 
Os possíveis problemas são os seguintes: 
1. O banco de dados escravo falha ao sincronizar os dados do banco de dados mestre 
    Você pode verificar se o status de Slave_IO_Running e Slave_SQL_Running são Sim através de show slave status\G;. 
Se o status de Slave_IO_Running for Connecting, geralmente é causado pela falha da posição causada pela modificação dos dados no banco de dados escravo (claro, o motivo também pode ser porque a rede não está conectada ou a senha está errada) : 2. O programa também pode executar uma operação de gravação no escravo. 3. 
Pode 
ser Após a reinicialização da máquina escrava, a transação é revertida. 
Portanto, não modifique manualmente os dados da tabela do escravo, caso contrário, o conflito de dados causará o falha na sincronização mestre-escravo (mais do que um certo número de tentativas, a biblioteca escrava não sincronizará mais)

Problemas encontrados no processo real

Passe o seguinte comando no servidor escravo

mysql> show slave STATUS \G;

dica:

 

Slave_SQL_Running: Não significa que o escravo está fora de sincronia

 Primeira solução:

1、先停止从库的运行
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
2、跳过错误步数,后面步数可变
mysql> set global sql_slave_skip_counter=1;
3、再启动slave
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
4、查看同步状态
mysql> show slave STATUS \G;
显示如下信息则表示正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

A segunda solução (re-mestre-escravo, sincronização completa):

1、先进入主库进行锁表,注意窗口不要关闭
mysql> flush table with read lock;
2、把数据进行备份
> mysqldump -uroot -p --opt -R 数据库 > /data/bak.sql
3、再新开个窗口,查看主数据库信息
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000005 |   1158 |       |         |          |
+------------------+----------+--------------+------------------+-------------------+
4、在从库上停止slave
mysql> stop slave;
5、导入备份的数据文件
mysql> source /data/bak.sql
6、重置同步
mysql> reset slave;
7、重新设置同步节点
CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_PORT=3306,MASTER_USER='root',MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000007',MASTER_LOG_POS=154;
8、开启slave
mysql> start slave;
9、查看slave状态
mysql> show slave status\G;
显示如下信息则表示正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
10、对主数据库解锁
mysql> unlock tables;

Parte 3: Testar a sincronização mestre-escravo

No db_test da biblioteca principal, crie uma nova tabela user_infos, atualize a biblioteca db_test da biblioteca slave e você descobrirá que uma tabela user_infos também aparece na biblioteca slave.

Configuração mestre-escravo do MySQL - modo GTID
Configuração mestre-escravo do MySQL - replicação GTID [Parte 2]_Super Le's Blog - blog CSDN Configuração mestre-escravo do MySQL Replicação GTID https://blog.csdn.net/wplblog/article/details/ 126975106 ?spm=1001.2014.3001.5502

Acho que você gosta

Origin blog.csdn.net/wplblog/article/details/126935242
Recomendado
Clasificación