7.2 MySQL读写分离
1.案例拓扑
2.读写分离原理
1 多台MySQL服务器通过主从复制保持数据一致 2 由maxscale代理服务器面向客户端 3 收到SQL写请求时,交给主服务器处理 4 收到SQL读请求时,交给从服务器处理
3.构建读写分离架构
1 构建思路 2 构建主从同步 3 部署maxscale代理服务器 4 客户端访问代理服务器测试
4.部署maxscale代理服务器
MaxScale代理软件 由MariaDB公司开发 下载地址: https://downloads.mariadb.com/MaxScale/ rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm
5.配置maxscale代理服务器
[maxscale] threads=1 #线程数 syslog=1 #写入系统日志 maxlog=1 #是否记录日志 log_warning=1 log_notice=1 log_info=1 log_debug=0 #debug开启 log_augmentation=1 #日志递增 logdir=/var/log/ [server1] type=server address=192.168.50.8 port=3306 protocol=MySQLBackend [server2] type=server address=192.168.50.162 port=3306 protocol=MySQLBackend [MySQL Monitor] #主从 type=monitor module=mysqlmon servers=server1,server2 user=myuser passwd=123456 monitor_interval=10000 #监控心跳10S [Read-Write Service] type=service router=readwritesplit servers=server1,server2 user=maxuser passwd=123456 max_slave_connections=100% [Read-Write Listener] type=listener service=Read-Write Service protocol=MySQLClient port=4006 [MaxAdmin Service] type=service router=cli [MaxAdmin Listener] type=listener service=MaxAdmin Service protocol=maxscaled port=4016 socket=default
5.创建用户
1.监控用户 grant all * *.* to root@haha; grant replication slave,replication client on *.* to myuser@10.211.55.4 identified by '123456'; 2.验证用户 grant select on mysql.* to maxuser@10.211.55.4 identified by '123456'; 3.客户端测试用户 grant all on *.* to test@% identified by '123456';
6.使用客户端测试
启动服务 [root@agent ~]# maxscale -f /etc/maxscale.cnf 查看服务 [root@agent ~]# netstat -tnlp 停止服务 kill -9 进程号
mysql -P 4006 -h10.211.55.4 -utest -p123456
select @@hostname;
7.连接管理器
maxadmin -uadmin -pmariadb -P4016 (初始配置)
maxscale> list servers