maxscale实现MySQL数据的读写分离

软件:maxscale
下载网站:https://downloads.marisdb.com/files/MaxScale

  • 读写分离原理
    由MySQL代理面向客户端提供服务
    收到SQL写请求时,交给master服务器处理
    收到SQL读请求时,交给slave服务器处理
  • 安装软件包
yum -y install maxscale-2.1.2-1.rhel.7.x86_64.rpm
  • 修改主配置文件 /etc/maxscale.cnf
    vim /etc/maxscale.cnf
    	threads=auto				#定义线程个数
    	[server1]				#定义数据库服务器
    	type=server
    	address=192.168.4.51		#master主机IP地址
    	port=3306
    	protocol=MySQLBackend
      
    	[server2]					#定义数据库服务器
    	type=server
    	address=192.168.4.52			#slave主机IP地址
    	port=3306
    	protocol=MySQLBackend
    
    [MySQL Monitor]						#定义要监控的数据库节点
    	type=monitor
    	module=mysqlmon
    	servers=server1,server2			#主从数据库的主机名,监控的数据库列表,不能写IP
    	user=maxscalemon					#监控用户
    	passwd=123qqq...A				#密码
    	monitor_interval=10000
    
    #[Read-Only Listener]        			#不定义只读服务使用的端口号,该项整体注册掉
    
    [Read-Write Service]					#定义读写分离服务
    	type=service
    	router=readwritesplit
    	servers=server1,server2			#主从数据库主机名
    	user=maxscalerouter				#路由用户
    	passwd=123qqq...A				#密码
    	max_slave_connections=100%
    
    [MaxAdmin Service]        			#定义管理服务
    type=service
    router=cli
    
    #[Read-Only Listener]        			#不定义只读服务使用的端口号,该项整体注册掉
    
    [Read-Write Listener]            		#定义读写服务使用的端口号
    type=listener
    service=Read-Write Service
    protocol=MySQLClient
    port=4006
    
    [MaxAdmin Listener]        			#管理服务使用的端口号
    type=listener
    service=MaxAdmin Service
    protocol=maxscaled
    socket=default
    port=4016     #手动添加,不指定时使用的是默认端口在启动服务以后可以知道默认端口是多少
  • 添加授权用户
    只在主数据库服务器添加用户即可,从服务器会自动同步
mysql> grant replication slave, replication client on *.* to maxcalemon@"%" identified by "123qqq...A";	#创建监控用户
mysql> grant select on mysql.* to maxscalerouter@"%" identified by "123qqq...A";	#创建路由用户
  • 启动服务代理服务\
maxscale -f /etc/maxcale.cnf			#启动服务
netstat -utnalp | grep maxscale			#查看端口
kill -9 PID号							#停止服务
  • 测试配置
  • 查看监控信息
maxscale> list servers
  • 在主服务器上添加访问数据链接用户
mysql> create database gamedb;
mysql> create table gamedb.a(id int);
mysql> grant select,insert on  gamedb.* to  yaya66@"%" identified by "123qqq...A";
  • 在代理服务器主机访问管理
maxadmin -uadmin -pmariadb -p端口
  • 客户端链接代理访问数据,进行测试
mysql -h服务器IP -p端口 -u用户名 -p密码

你可能感兴趣的:(MySQL,学习笔记)