mysql proxy maxscale_maxscale参数配置

1,术语

Maxscale 是一个C语言实现的智能代理(intelligent proxy),提供读写分离,负载均衡和高可用性。它同时维护client端请求的连接以及到后端server的连接。

使用maxscale搭建的读写分离架构,再结合MHA做master的故障转移,业务层面上不需要做任何的改动。

1)server an individual database server 独立的、client应用端可以通过maxscale连接的数据库。maxadmin list servers

[server-master]

type=server

address=10.103.131.39

port=3306

protocol=MySQLBackend

persistpoolmax=500

persistmaxtime=1000

2)service a set of databases with a specific access mechanism带有特定访问策略的数据库集合

##给应用提供只读/写的端口

[read-connection-based-service]

type=service

router=readconnroute ## provide either a read or write port for an application.

servers=server-master, server-slave-1, server-slave-2

user=maxscale_one ##service需要获取mysql.user表的用户信息。

passwd=938EAF7E729090812ABA91FFA4C47BCB

router_options=slave ##指定只在slave之间负载均衡。valid types servers

[readwrite-statement-based-service]

type=service

router=readwritesplit

servers=server-master, server-slave-1, server-slave-2

user=maxscale_one

passwd=938EAF7E729090812ABA91FFA4C47BCB

max_slave_connections=100%

max_slave_replication_lag=10

3)router 通过maxscale提供的service接口,将client的requests路由到数据库集合

connection based routing 一旦一个连接建立,通过这个链接的所有请求,都会路由到单独的数据库

statement based routing 每个request单独处理,可能会被路由到一个或者多个server

4)protocol 用来和另一个软件实体交流的模块

module 运行时可以进行加载

image.png

image.png

5)monitor 监控一组server,它需要监控用户

[MySQL Monitor]

type=monitor

module=mysqlmon

servers=server-master,server-slave-1,server-slave-2

user=maxscale_one ## 监控用户名

passwd=938EAF7E729090812ABA91FFA4C47BCB

monitor_interval=1000

detect_replication_lag=true

detect_stale_master=true

6)Listener 监听来自应用client的连接,关联一个单独的service。但是一个service可以关联多个Listener(可以有多个端口)。represent the ports the services will listen on 代表service(db集合)监听的端口。

[Read-Only Listener]

type=listener

service=read-connection-based-service

protocol=MySQLClient

port=4006

[Read-Write Listener]

type=listener

service=readwrite-statement-based-service

protocol=MySQLClient

port=4008

7)filter 在client和router之间,所有的client data都会经过filter,可以被检查和修改。

2,细节

1)maxscale使用监控用户,从db中读取mysql.user的信息,缓存到maxscale中。用于用户验证

2)maxscale默认不允许root用户链接后端数据库。

3)connection failover maxscale发现一个正在被client使用的连接,在链接后端server时发送错误,它会自动重建一个新的连接来代替,client无感。

3,注意点。

1)Readwritesplit 可用于传统的主-从复制集群(The router is designed to be used with a traditional Master-Slave replication cluster.) router的路由策略

image.png

image.png

2)Readconnroute (provides simple and lightweight load balancing across a set of servers.)

router_options=slave// 角色信息表示,当session创建时,maxsacle从合法的角色中取得 server的集合,来建立连接。

处理顺序为 from first entry to last.

默认值为running,将在所有的running servers中将connections负载均衡。

3)maxscale计算主从延迟。

原理: master上创建maxscale_schema数据库,创建replication_heartbeat 主从复制心跳表。

master上每1s,更新一次master_timestamp 字段(会产生一条binlog记录。)。

每个slave上,读取该字段和当前时间对比,差值就是主从同步的延时。(延迟的时候,slave上的系统时间 - master_timestamp字段值 就是主从同步的延时)

image.png

你可能感兴趣的:(mysql,proxy,maxscale)