目录
读写分离的原理/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 不仅能提供读写分离,而且能实现读请求的负载均衡 。
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=MySQLBackend36 [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=cli86 #[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进行处理,非常感谢!