Replicación maestro-esclavo de Mysql en Linux (un maestro y un esclavo)

Nota: la replicación maestro-esclavo de mysql solo ejecuta el contenido después del acceso. Es decir, la base de datos principal y las tablas deben crearse después del acceso.

1. Configuración de 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

Expansión:

Tres formatos de registro binlog

1. Declaración: cada sql que modificará los datos se registrará en binlog

2. Fila: no registra la información relacionada con el contexto de la declaración SQL, solo guarda qué registro se modifica

3. Nivel mixto: una combinación de los dos anteriores. La modificación de la declaración general usa el formato de declaración para guardar el binlog. Para algunas funciones, la declaración no puede completar la operación de replicación maestro-esclavo, entonces el formato de fila se usa para guardar el binlog

2. Configuración esclava (master135)

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

Tres, el host y el esclavo reinician el servicio mysql

systemctl reiniciar mysqld

Cuatro, tanto el host como el esclavo cierran el firewall

systemctl detener firewalld

5. Cree una cuenta en el host y autorice al esclavo

conceder esclavo de replicación en *. * a 'esclavo' @ '%' identificado por '123456';

Error:

ERROR 1819 (HY000): su contraseña no cumple con los requisitos de la política actual

Razón: la configuración de la contraseña es demasiado simple para cumplir con la especificación de configuración de la contraseña de mysql

Solución:

1. Ver las reglas de contraseña completas de mysql

muestra variables como 'validate_password%';

2. Cambiar la longitud de la contraseña

establecer global validate_password_length = 4;

3. Establezca una estrategia de verificación de contraseña (media [media], baja [baja])

establecer global validate_password_policy = 0;

Seis, estado de maestro de consultas

mostrar el estado del maestro;

Nota: registre el valor del archivo y la posición. Después de realizar este paso, ya no opere el host mysql para evitar que cambie el valor del estado del host.

Siete, configure el host para copiarlo en el esclavo

#复制主机的命令
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;

Error:

ERROR 3021 (HY000): esta operación no se puede realizar con un subproceso io esclavo en ejecución; ejecute STOP SLAVE IO_THREAD FOR CHANNEL '' primero.

Motivo: si el esclavo está conectado al maestro, debe reiniciarse

Solución:

stop slave;
reset master;

8. Verificación

En este punto, la replicación maestro-esclavo de mysql está completa, podemos verificarlo

1. Cree una base de datos testdb en el host y verifique si la base de datos se creó correctamente

create database testdb;
show databases;

2. La creación se completa en el host, vayamos y echemos un vistazo en la computadora.

Expansión:

1. Deje de copiar funciones del servicio

detener esclavo;

2. Reconfigure el maestro y el esclavo

detener esclavo;

reiniciar maestro;

3. Compruebe si hay separación de lectura y escritura

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

#在mycat里查询
select * from user;

Vemos que el contenido escrito en el host y el esclavo es el mismo, por lo que prueba que no se logra la separación de lectura y escritura.

Configuración de separación de lectura y escritura

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>

El atributo de equilibrio en <dataHost>: [tipo de equilibrio de carga]

1), balance = "0", no abra el mecanismo de separación lectura-escritura, todas las operaciones de lectura se envían al writeHost actualmente disponible.

2), balance = "1", todos readHost y stand by writeHost participan en el equilibrio de carga de la instrucción de selección, en términos simples, cuando el modo maestro dual esclavo dual (M1-> S1, M2-> S2, y M1 y M2 son entre sí Activo y en espera), en circunstancias normales, M2, S1, S2 todos participan en el equilibrio de carga de la declaración de selección.

3), balance = "2", todas las operaciones de lectura se distribuyen aleatoriamente en writeHost y readhost.

4), balance = "3", todas las solicitudes de lectura se distribuyen aleatoriamente a readhost para su ejecución, writerHost no soporta la presión de lectura.

Ok, reinicia el servicio mycat y verifícalo

#重启mycat服务
mycat console

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

Vemos que se ha logrado la separación de lectura y escritura

 

 

Supongo que te gusta

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