mysql的读写分离之maxscale中间件

目录

读写分离的原理/p>

为什么要读写分离/p>

什么时候需要读写分离/p>

利用Maxscale中间件来实现数据库的读写分离

使用中间件实现读写分离的优缺点

配置数据读写分离 (Maxscale+主从同步)

配置代理服务器maxscale

1、安装软件   —- mysql5.7 、CentOS7.5、maxscale2.1.2   

(1) rpm 装包    (2)查看主配置文件    (3)查看日志文件    (4)查看相关命令

2.修改主配置文件

3.配置数据库服务器   

      在主服务器添加授权用户,在从服务器查看    

          创建监控用户scalemon       

          创建路由用户scaleroute

4.启动服务并查看

5.查看监控信息   

      有主从角色   

       数据库服务运行状态


读写分离的原理/h2>

  在主服务器上写,在从服务器上读。让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

读写分离的意思简单就是:所有的写(insert update delete)操作走主库、其他走从库。

为什么要读写分离/h2>

数据分流,减轻单台服务器并发访问压力,提高查询的效率。

什么时候需要读写分离/h2>

在程序使用数据库较多时,而更新少、查询多的情况下,利用数据库的主从复制同步数据,读写分离来提升数据库的并发负载能力。

利用Maxscale中间件来实现数据库的读写分离

MaxScale 是 MariaDB 开发的一个数据库智能代理服务。

MaxScale 用于透明的提供数据库的负载均衡和高可用性,同时提供高度可伸缩和灵活的架构,支持不同的协议和路由决策,简单讲就是:maxScale 不仅能提供读写分离,而且能实现读请求的负载均衡 。

mysql的读写分离之maxscale中间件

 

Maxscale配置文件参数详解

  MaxScale配置文件内容一共分为五个部分,每个部分使用[]标记,典型的ini文件格式:

  [maxscale]

  在名为[MaxScale]的部分中,全局设置允许对MariaDB MaxScale进行整体调优的各种参数。

  [Service]

  Service表示MariaDB MaxScale为客户提供的数据库服务。一般来说,服务由一组后端数据库服务器和一种路由算法组成,它决定了MariaDB MaxScale如何决定发送语句或路由到这些后端服务器的连接。

  [Server]

  Server段用于定义可以提供服务的后端数据库服务器。server可以是MariaDB MaxScale中的一个或多个服务的成员。服务器由服务器名标识,服务器名是配置文件中的部分名称。服务器有一个服务器的类型参数,加上地址端口和协议参数。

  [Listener]

  侦听器定义了用于侦听服务连接的端口和协议对。服务可能有多个与之相关的侦听器,以支持多个协议或多个端口。与配置的其他元素一样,section名称是侦听器名称,可以自由选择。类型参数用于标识作为侦听器定义的部分。

  [Monitor]

  Monitor模块被MariaDB MaxScale用于内部监控后台数据库的状态,以便为这些服务器设置服务器标志。然后,路由器模块使用这些标志来确定特定的服务器是否适合用于特定查询分类的路由连接。这些监视器运行在MariaDB MaxScale的单独线程中,不影响MariaDB MaxScale的路由性能。

使用中间件实现读写分离的优缺点

优点:

  • 由中间件根据查询语法分析,自动完成读写分离。 
  • 对於程序透明,对于已有的程序不做任何调整。

缺点:

  • 大并发高负载的情况下,由于增加了中间层,对查询有损耗。 (QPS 50%-70%的降低)
  • 对于延迟敏感的业务无法自主在主库执行

配置数据读写分离 (Maxscale+主从同步)

主从服务已配置完毕,再次进行查看:

[root@mysql22 ~]# mysql -uroot -p123qqq…A

mysql> show slave statusG     //检查状态
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.4.11
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master11.000001
          Read_Master_Log_Pos: 441
               Relay_Log_File: mysql22-relay-bin.000003
                Relay_Log_Pos: 319
        Relay_Master_Log_File: master11.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

配置代理服务器maxscale

1、安装软件   —- mysql5.7 、CentOS7.5、maxscale2.1.2
    (1) rpm 装包
    (2)查看主配置文件
    (3)查看日志文件
    (4)查看相关命令

[root@maxscale77 ~]# rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm 
[root@maxscale77 ~]# ls /etc/maxscale.cnf   #查看著配置文件
/etc/maxscale.cnf
[root@maxscale77 ~]# max
maxadmin        maxbinlogcheck  maxpasswd       
maxavrocheck    maxkeys         maxscale  
备注:查看mysql服务,确保数据库服务处于禁止状态

2.修改主配置文件

[root@maxscale77 ~]# vim /etc/maxscale.cnf

 9 [maxscale]
 10 threads=auto   #auto自动

 18 [server1]
 19 type=server
 20 address=192.168.4.11
 21 port=3306
 22 protocol=MySQLBackend
 24 [server2]   
 25 type=server
 26 address=192.168.4.22    
 27 port=3306
 28 protocol=MySQLBackend

 36 [MySQL Monitor]   #监视进程
 37 type=monitor
 38 module=mysqlmon
 39 servers=server1,server2
 40 user=scalemon
 41 passwd=123qqq…A
 42 monitor_interval=10000   #多久查看一次

 53 #[Read-Only Service]
 54 #type=service
 55 #router=readconnroute
 56 #servers=server1
 57 #user=myuser
 58 #passwd=mypwd
 59 #router_options=slave
 64 [Read-Write Service]   #定义读写服务
 65 type=service
 66 router=readwritesplit      #读写分离用户
 67 servers=server1,server2
 68 user=scaleroute    #路由用户,作用:监视客户端连接用户是否存在
 69 passwd=123qqq…A
 70 max_slave_connections=100%
 76 [MaxAdmin Service]    #管理服务
 77 type=service
 78 router=cli

 86 #[Read-Only Listener]
 87 #type=listener
 88 #service=Read-Only Service
 89 #protocol=MySQLClient
 90 #port=4008
 92 [Read-Write Listener]  #建通读写服务的端口
 93 type=listener
 94 service=Read-Write Service
 95 protocol=MySQLClient
 96 port=4006
 97 
 98 [MaxAdmin Listener]   #管理服务端口号,
 99 type=listener
100 service=MaxAdmin Service
101 protocol=maxscaled
102 socket=default
103 port=4016    #自定义的端口号
    

3.配置数据库服务器
    在主服务器添加授权用户,在从服务器查看 
        创建监控用户scalemon
        创建路由用户scaleroute

[root@mysql11 ~]# mysql -uroot -p123qqq…A
mysql> grant replication slave ,replication client on *.* to scalemon@”%” identified by “123qqq…A”;  
Query OK, 0 rows affected, 1 warning (0.12 sec)

mysql> grant select on mysql.* to scaleroute@”%” identified by “123qqq…A”;
Query OK, 0 rows affected, 1 warning (0.09 sec)

4.启动服务并查看

[root@maxscale77 ~]# maxscale -f /etc/maxscale.cnf
[root@maxscale77 ~]# ps -C maxscale   #查看进程信息
   PID TTY          TIME CMD
  2072        00:00:00 maxscale
[root@maxscale77 ~]# netstat -utnlp |grep maxscale  #查看端口信息
tcp6       0      0 :::4006                 :::*                    LISTEN      2072/maxscale       
tcp6       0      0 :::4016                 :::*                    LISTEN      2072/maxscale     

5.查看监控信息
    有主从角色
    数据库服务运行状态

[root@maxscale77 ~]# maxadmin -uadmin -pmariadb -P4016   #在代理服务器本机连接管理服务
MaxScale> list servers    #查看监控信息
Servers.
——————-+—————–+——-+————-+——————–
Server             | Address         | Port  | Connections | Status              
——————-+—————–+——-+————-+——————–
server1            | 192.168.4.11    |  3306 |           0 | Master, Running
server2            | 192.168.4.22    |  3306 |           0 | Slave, Running
——————-+—————–+——-+————-+——————–    

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8756 人正在系统学习中

来源:小小妍的棉花糖

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月13日
下一篇 2022年2月14日

相关推荐