1. Arquitectura del entorno
Se requieren tres servidores.
192.168.2.10 (maestro)
192.168.2.20 (esclavo)
192.168.2.30 (escala máxima)
2. Implementar la sincronización maestro-esclavo mysql
3. Implementar el servicio maxscale
Software intermedio MaxScale
Desarrollado por la empresa hermana de MySQL MariaDB
Dirección de descarga: https://downloads.mariadb.com/MaxScale/
3.1 Instalar escala máxima
[ root@localhost ~]
[ root@localhost ~]
3.2 Modificar el archivo de configuración
[ root@localhost ~]
[ root@localhost ~]
[ maxscale]
threads = auto ----定义线程数,可以根据服务器性能填多少,或者选择auto,auto会根据本身服务器CPU核数来自动创建。
//下面内容定义mysql信息。
[ server1]
type = server --类型
address = 192.168 .2.10 ---ip地址
port = 3306 ---端口号
protocol = MySQLBackend ---协议
[ server2]
type = server
address = 192.168 .2.20
port = 3306
protocol = MySQLBackend
//定义代理服务器监视的服务器信息。
[ MySQL Monitor]
type = monitor ---类型为监视
module = mysqlmon ---定义模块
servers = server1,server2 ----指定需要监视的服务器
user = maxscale ---被监视的服务器用户名
passwd = 1234 ---被监视的服务器密码
monitor_interval = 10000 ---用户maxscalemon连接server1和server2的频率,单位是毫秒。
//注意这个用户名和密码等一下配置完需要在主库创建出来。
//下面是定义只读服务,而我这边是需要定义读写分离服务。
//定义读写分离服务信息。
[ Read-Write Service]
type = service
router = readwritesplit
servers = server1,server2
user = myuser 路由用户
passwd = mypwd 路由密码
max_slave_connections = 100 %
//定义管理服务
[ MaxAdmin Service]
type = service 类型
router = cli 访问方式为命令行
//这个是定义只读服务的注释掉
//定义读写分离代理服务监听端口等信息
[ Read-Write Listener]
type = listener
service = Read-Write Service
protocol = MySQLClient
port = 4006
//定义管理服务器的监听端口等信息
[ MaxAdmin Listener]
type = listener
service = MaxAdmin Service
protocol = maxscaled
prot = 4016
socket = default
4. Crear usuarios autorizados
//在主库创建监控用户
mysql> grant replication slave,replication client on *.* to 'maxscale' @'%' identified by '1234' ;
//创建路由用户
mysql> grant select on mysql.* to 'maxscale1' @'%' identified by '1234' ;
5. Inicie el servicio de proxy
//启动服务
[ root@localhost ~]
//查看进程是否存在
[ root@localhost ~]
PID TTY TIME CMD
2359 ? 00:00:00 maxscale
//查看代理服务端口号是否启动
[ root@localhost ~]
tcp6 0 0 :::4016 :::* LISTEN 2359 /maxscale
tcp6 0 0 :::4006 :::* LISTEN 2359 /maxscale
6. Configuración de prueba
6.1 Ver estado de monitoreo
管理用户密码默认的
[ root@localhost ~]
MaxScale> list servers --显示监控列表
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server1 | 192.168 .2.10 | 3306 | 0 | Master, Running
server2 | 192.168 .2.20 | 3306 | 0 | Slave, Running
-------------------+-----------------+-------+-------------+--------------------
//假如监控状态角色不对,看一下监控的授权用户是否和maxscale配置文件一致。
6.2 Verifique si la escritura está en la biblioteca maestra y verifique si está en la biblioteca esclava
//在从库db1库t1表插入数据,这样主库和从库数据不一致
mysql> use db1;
mysql> create table t1(
-> id int not null,name char( 10 ) not null) ;
mysql> insert into t1 values( '1' ,'tom' ) ;
mysql> select * from t1;
+----+------+
| id | name |
+----+------+
| 1 | tom |
+----+------+
//在主库查看这个表信息。
mysql> use db1;
Database changed
mysql> show tables;
Empty set ( 0.00 sec) ----可以看的出来主库没有表格
//在客户端登录代理服务器查看db1.t1;
[ root@localhost ~]
mysql> select * from db1.t1;
+----+------+
| id | name |
+----+------+
| 1 | tom |
+----+------+
1 row in set ( 0.00 sec)
可以看的出来读是在从库提取的。