Construção do ambiente mestre-escravo Mysql (windows um mestre e dois escravos)

Índice

1. Configuração da biblioteca principal

2. Replicação de dados

3. Configuração da biblioteca escrava

4. Solução para o tempo de inatividade do banco de dados escravo

5. Excluir dados do banco de dados por engano

6. A biblioteca principal está inoperante


1. Configuração da biblioteca principal

1. Modifique a biblioteca principal my.ini

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
# skip-grant-tables
group_concat_max_len=102400
#设置3306端口
port = 3306 
# 设置mysql的安装目录  
basedir=D:\DataBase\mysql
# 设置mysql数据库的数据的存放目录  
datadir=D:\DataBase\mysql\data  
# 允许最大连接数  
max_connections=1000  
# 服务端使用的字符集默认为8比特编码的latin1字符集  
character-set-server=utf8  
# 创建新表时将使用的默认存储引擎  
default-storage-engine=INNODB
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

# Server Id.数据库服务器id,这个id用来在主从服务器中标记唯一mysql服务器
server-id=1
#默认不开启二进制日志,需要配置
log-bin=mysql-bin
#设置需要同步的数据库 
binlog-do-db=nctest_zj 
#屏蔽系统库同步 
binlog-ignore-db=mysql 
binlog-ignore-db=information_schema 
binlog-ignore-db=performance_schema

2. Abra o cmd, faça login na biblioteca principal (ou navicat, conecte-se à biblioteca principal e abra a linha de comando)

mysql -u root -p

3. Autorize a conta dedicada para replicação mestre-escravo

mysql> GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' IDENTIFIED BY 'by123456';

 4. Atualize as permissões

msyql> flush privileges;

5. Consulte as informações da biblioteca principal, registre o nome do arquivo e a posição

msyql> show master status;


2. Replicação de dados

1. Defina a biblioteca principal como somente leitura para evitar adicionar e modificar dados

set global read_only=1;
flush tables with read lock;

2. Copiar dados

3. Restaure as configurações da primeira etapa

unlock tables;
set global read_only=0;

3. Configuração da biblioteca escrava

1. Abra a biblioteca slave my.ini

server-id não pode ser o mesmo que a biblioteca principal

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
# skip-grant-tables
group_concat_max_len=102400
#设置3306端口
port = 3306 
# 设置mysql的安装目录  
basedir=D:\DataBase\mysql
# 设置mysql数据库的数据的存放目录  
datadir=D:\DataBase\mysql\data  
# 允许最大连接数  
max_connections=1000  
# 服务端使用的字符集默认为8比特编码的latin1字符集  
character-set-server=utf8  
# 创建新表时将使用的默认存储引擎  
default-storage-engine=INNODB
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

# Server Id.数据库服务器id,这个id用来在主从服务器中标记唯一mysql服务器
server-id=2
#默认不开启二进制日志,需要配置
log-bin=mysql-bin
#设置需要同步的数据库 
replicate_wild_do_table=nctest_zj.%   
#屏蔽系统库同步 
replicate_wild_ignore_table=mysql.% 
replicate_wild_ignore_table=information_schema.% 
replicate_wild_ignore_table=performance_schema.%

2. cmd para fazer login na biblioteca ou navicat para abrir a linha de comando

3. De acordo com o nome do arquivo e a posição da biblioteca mestre, configure as informações da biblioteca escrava

CHANGE MASTER TO MASTER_HOST='192.168.1.15',MASTER_PORT=3306,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000039',MASTER_LOG_POS=47257;

4. Inicie o serviço

# 开启
mysql> start slave
# 停止
mysql> stop slave
# 重启
mysql> reset slave

5. Verifique o status da biblioteca escrava

mysql>show slave status\G

Certifique-se de que os dois valores a seguir sejam sim, a configuração mestre-escravo foi bem-sucedida, se um for não, você precisa verificar o log para localizar o motivo.

(mostre variáveis ​​como 'log_error';) Vá para o diretório correspondente para visualizar o log

 6. Crie um usuário para a biblioteca escrava e configure as permissões somente leitura

create user nymi identified by 'by123456';
grant select on *.* to nymi@'%' ; 
flush privileges;

No projeto, use este usuário para se conectar ao banco de dados, para evitar o uso do usuário root da biblioteca slave para modificar os dados e causar falha na replicação mestre-escravo.


4. Solução para o tempo de inatividade do banco de dados escravo

Depois de reiniciar, de um modo geral, a posição em que o mysql parou continuará a ser sincronizada.

Se a replicação mestre-escravo falhar, reconfigure as etapas a seguir

Biblioteca principal:

mostrar variáveis ​​como 'log_error';
visualizar a posição no log,

da biblioteca

stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.1.15',MASTER_PORT=3306,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='informações do arquivo',MASTER_LOG_POS=Informações de posição; (as informações do arquivo vêm da biblioteca
mestre mostre o status do mestre;)
inicie o escravo;

A ideia é encontrar um nó normal e realizar a sincronização de dados


5. Excluir dados do banco de dados por engano

1. O projeto usa um usuário somente leitura para se conectar à biblioteca escrava para evitar exclusão acidental

2. Recupere os dados excluídos acidentalmente e siga a quarta etapa para resolver o problema

3. Sincronize novamente os dados, siga a terceira etapa para resolver


6. A biblioteca principal está inoperante

1. Reinicie a biblioteca principal e verifique o status da biblioteca secundária

2. Se não for resolvido, a biblioteca principal e a biblioteca escrava executam as seguintes instruções, respectivamente, e especificam novamente o nome do arquivo e a posição encontrados pela instrução da biblioteca principal na biblioteca escrava

show master status;
stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.1.15',MASTER_PORT=3306,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='file信息',MASTER_LOG_POS=Position信息;
start  slave;

Acho que você gosta

Origin blog.csdn.net/Spring_possible/article/details/127730991
Recomendado
Clasificación