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 e 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