Replicação mestre-escravo Mysql no Linux (um mestre e um escravo)

Nota: a replicação mestre-escravo mysql só executa o conteúdo após o acesso. Ou seja, o banco de dados principal e as tabelas devem ser criados após o acesso.

1. Configuração do host (master131)

配置文件:vim /etc/my.cnf
#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
#设置不要复制的数据库(可设置多个,设置了需要复制的数据库就可以不设置此项)
binlog-ignore-db=mysql
#设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字
#设置logbin格式
binlog_format=STATEMENT

Expansão:

Três formatos de log binlog

1. Declaração: Todo sql que modificará os dados será registrado no binlog

2. Linha: não registra as informações relacionadas ao contexto da instrução sql, apenas salva qual registro é modificado

3. Nível misto: uma combinação dos dois acima. A modificação da instrução geral usa o formato de declaração para salvar o log bin, como algumas funções, a instrução não pode completar a operação de replicação mestre-escravo e, em seguida, salva o log bin no formato de linha

2. Configuração do escravo (master135)

配置文件: vim /etc/my.cnf
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay

Três, o host e o escravo reiniciam o serviço mysql

systemctl restart mysqld

Quatro, o host e o escravo fecham o firewall

systemctl stop firewalld

5. Crie uma conta no host e autorize o escravo

conceder escravo de replicação em *. * para 'escravo' @ '%' identificado por '123456';

Erro:

ERROR 1819 (HY000): Sua senha não atende aos requisitos da política atual

Motivo: a configuração da senha é muito simples para estar de acordo com a especificação de configuração de senha do mysql

Solução:

1. Veja as regras de senha completas do mysql

mostrar variáveis ​​como 'validate_password%';

2. Altere o comprimento da senha

definir validate_password_length global = 4;

3. Defina a estratégia de verificação de senha (médio [médio], baixo [baixo])

definir validate_password_policy = 0;

Seis, status do mestre de consulta

mostrar o status do mestre;

Nota: registre o valor do arquivo e posição. Após realizar esta etapa, não opere mais o host mysql para evitar que o valor do estado do host mude.

Sete, configure o host a ser copiado no escravo

#复制主机的命令
change master to master_host='主机ip',
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.具体数字',master_log_pos=具体值;

#启动从机复制功能
start slave;

#查看从机状态
show slave status\G;

Erro:

ERROR 3021 (HY000): Esta operação não pode ser realizada com um thread io escravo em execução; execute STOP SLAVE IO_THREAD FOR CHANNEL '' primeiro.

Motivo: se o escravo estiver conectado ao mestre, ele precisa ser reiniciado

Solução:

stop slave;
reset master;

8. Verificação

Neste ponto, a replicação mestre-escravo do mysql está completa, podemos verificar

1. Crie um banco de dados testdb no host e verifique se o banco de dados foi criado com sucesso

create database testdb;
show databases;

2. A criação é concluída no host, vamos dar uma olhada no computador

Expansão:

1. Pare de copiar funções do serviço

parar escravo;

2. Reconfigure o mestre e o escravo

parar escravo;

redefinir mestre;

3. Verifique se a separação de leitura e gravação

#主机写入 @@环境变量
insert into user values (1,@@hostname);

#在mycat里查询
select * from user;

Vemos que o conteúdo escrito no host e no escravo é o mesmo, então isso prova que a separação entre leitura e escrita não é alcançada.

Ler e gravar configurações de separação

vim /usr/local/mycal/conf/schema.xml

#修改<dataHost>的 balance属性为3

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="host1" database="testdb" />
        <dataHost name="host1" maxCon="1000" minCon="10" balance="3"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <writeHost host="hostM1" url="192.168.157.133:3306" user="root"
                                   password="root">
                   <readHost host="hostS1" url="192.168.157.135:3306" user="root" password="root"/>
                </writeHost>
        </dataHost>
</mycat:schema>

O atributo de equilíbrio em <dataHost>: [tipo de balanceamento de carga]

1), balance = "0", não abra o mecanismo de separação de leitura e gravação, todas as operações de leitura são enviadas para o writeHost disponível no momento.

2), balance = "1", todos readHost e stand by writeHost participam do balanceamento de carga da instrução select, em termos simples, quando o modo dual master dual slave (M1-> S1, M2-> S2 e M1 e M2 são um ao outro Ativo e em espera), em circunstâncias normais, M2, S1, S2 participam do balanceamento de carga da instrução select.

3), balance = "2", todas as operações de leitura são distribuídas aleatoriamente em writeHost e readhost.

4), balance = "3", todas as solicitações de leitura são distribuídas aleatoriamente para o readhost para execução, o writerHost não suporta a pressão de leitura.

Ok, reinicie o serviço mycat e verifique-o

#重启mycat服务
mycat console

#在mycat里的mysql里
use TESTDB;
SELECT * FROM USER;

Vemos que a separação de leitura e gravação foi alcançada

 

 

Acho que você gosta

Origin blog.csdn.net/u013227399/article/details/109737486
Recomendado
Clasificación