Use maxscale para lograr la separación de lectura y escritura de mysql

1. Prepare tres servidores (centos7.6)

maxscale ip: 192.168.1.58 Middleware de separación de lectura y escritura
mariadb (maestro) ip: 192.168.1.60 Operación de escritura
mariadb (esclavo) ip: 192.168.1.63 Leer operación

2.configuración maestro-esclavo mariadb

Observaciones: la instalación de yum de mariadb, mariadb-server no entrará en detalles

2.1: Modifique el archivo de configuración mariadb en los dos servidores para admitir la replicación maestro-esclavo de mysqlbinlog

cp  /usr/share/mysql/my-huge.cnf  /etc/my.cnf

2.2: Modifique el valor server-id = en my.cnf, modifique el server-id de los dos servidores a valores diferentes

2.3: Inicie el maestro mariadb (192.168.1.60), inicie sesión para obtener autorización, consulte el estado del maestro, registre el nombre del archivo mysql-bin.000007 y el bit de inicio binlog 2942, estos dos datos se utilizarán al recibir la autorización del servidor

grant  replication slave on *.* to slave@'%' identified by '123456';
show master  status;

2.4 Comience desde mariadb (192.168.1.63), inicie sesión para recibir autorización, inicie esclavo, verifique el estado

change master to 
master_user='slave',
master_password='123456',
master_host='192.168.1.60',
master_log_file='mysql-bin.000007',
master_log_pos=2942;
start slave;
#\G的作用是以key:value的形式一行一行显示
show  slave status\G;

3. Configure la separación de lectura y escritura de máxima escala

3.1 Descargue e instale maxscale y algunas de sus dependencias en maxscale (192.168.1.58)

yum install libaio.x86_64 libaio-devel.x86_64 novacom-server.x86_64 libedit -y
wget https://downloads.mariadb.com/MaxScale/1.4.5/centos/7/x86_64/maxscale-1.4.5-1.centos.7.x86_64.rpm
rpm -ivh maxscale-1.4.5-1.centos.7.x86_64.rpm

3.2 Inicie sesión en el mariadb principal (192.168.1.60) para crear un usuario de monitoreo (maxmon) y un usuario de enrutamiento (maxrou)

grant  replication slave ,replication client on *.* to maxmon@'%' identified by  '123456';
grant  all on *.* to maxrou@'%' identified by '123456';

3.3 Modificar el archivo de configuración de maxscale (192.168.1.58)

vim /etc/maxscale.cnf
[maxscale]
threads=1

# Server definitions
# Set the address of the server to the network
# address of a MySQL server.

#定义数据库服务器
[server1]
type=server
#主数据库地址master
address=192.168.1.60
port=3306
protocol=MySQLBackend

#定义数据库服务器
[server2]
type=server
#从数据库地址slave
address=192.168.1.63
port=3306
protocol=MySQLBackend

#定义要监视的服务器总共两台,监控的用户
[MySQL Monitor]
type=monitor
module=mysqlmon
servers=server1,server2
user=maxmon
passwd=123456
monitor_interval=10000

# Service definitions
# Service Definition for a read-only service and
# a read/write splitting service.

# 读负载均衡模块
# 读写分离模块可以实现读负载均衡,因此注释掉该模块
#[Read-Only Service]
#type=service
#router=readconnroute
#servers=server2
#user=maxrou
#passwd=123456
#router_options=slave

# 定义读写分离服务及路由用户
[Read-Write Service]
type=service
router=readwritesplit
# 主从数据库
servers=server1,server2
# 设置路由用户名和密码
user=maxrou
passwd=123456
max_slave_connections=100%

# 定义管理服务
[MaxAdmin Service]
type=service
router=cli

# 注释监听
#[Read-Only Listener]
#type=listener
#service=Read-Only Service
#protocol=MySQLClient
#port=4008

# 定义读写分离服务的端口4006
[Read-Write Listener]
type=listener
service=Read-Write Service
protocol=MySQLClient
port=4006

# 定义管理服务监听端口6603
[MaxAdmin Listener]
type=listener
service=MaxAdmin Service
protocol=maxscaled
port=6603

3.4 Iniciar y ver el estado (192.168.1.58)

systemctl  start maxscale
systemctl status  maxscale

netstat  -antp

4. Verificación de prueba

4.1 Inicie sesión en el administrador de MaxScale (192.168.1.58) para ver el estado de conexión de la base de datos. El nombre de usuario y la contraseña predeterminados son admin / mariadb

maxadmin -uadmin -pmariadb -P6603
list servers

4.2 Cree un usuario de prueba, inicie sesión en el mariadb principal (192.168.1.60) para crear una prueba de usuario de prueba

grant all on *.* to  test@'%' identified by '123456';

4.3 Cree una base de datos de prueba en la base de datos principal mariadb (192.168.1.60), cree una tabla wen y luego inserte el valor


create  database test;

use test;

create table wen(id int);

insert into wen values(1),(2);

Busque la prueba en la base de datos esclava mariadb (192.168.1.63) e inserte el valor en la tabla wen

insert into wen values (9);

Nota: La replicación maestro-esclavo se implementó al principio, los datos en la base de datos maestra (192.168.1.60) se sincronizarán automáticamente con la base de datos esclava (192.168.1.63), y los nuevos datos de la base de datos esclava no serán sincronizado con la base de datos maestra

4.4 En el servidor MaxScale (192.168.1.58), use el cliente Mysql para conectarse a MaxScale

mysql -utest -p123456  -h'192.168.1.58' -P4006

 Consultar todos los datos en la tabla test.wen. Los datos son los mismos que los de la tabla test.wen en la base de datos secundaria, con un registro más que en la base de datos principal test.wen

Inserte dos datos a través del cliente mysql del servidor proxy maxscale (192.168.1.58) y vea los resultados

Ver los resultados a través del servidor principal (192.168.1.60) cliente mysql

Ver los resultados a través del cliente mysql desde el servidor (192.168.1.63)

Conclusión: El servidor maestro (192.168.1.60) se usa para escribir, porque la escritura de datos en el servidor esclavo no se sincronizará con el servidor maestro; y la lectura es leída por el servidor esclavo (192.168.1.63).

Como resultado, se realiza la replicación maestro-esclavo y se realiza la separación de lectura y escritura de mysql.

Supongo que te gusta

Origin blog.csdn.net/qq_29644709/article/details/108381565
Recomendado
Clasificación