为什么读写分离,减少主库由于读压力造成负载,将读操作放到从服务器中,写操作必须在主数据库中
由程序实现读写分离
由中间件来实现读写分离
由程序实现分离:
优点:由开发人员控制什么查询在从库执行,因此比较灵活
由程序直接连接数据库,所有性能损耗少
缺点:增加开发人员工作量,使程序代码复杂,难维护;
人为控制,容易出现错误
中间件实现读写分离:
中间件工具:mysql-proxy(未正式发布) maxScale
优点:中间件根据查询语法分析,自动完成读写分离
对程序透明,对于以有程序不用做任何调整
缺点:由于增加中间层,所有查询效率有损耗
对于延迟敏感业务无法自动在主库执行
如何实现负载均衡:
软件 :LVS Haproxy MaxScale 硬件:F5
MaxScale插件:
安装:
在主数据库建立maxscale连接服务器的账号:create user sclemon@'192.168.3.%' identified by '123456';
grant replication slace, replication client on *.* to scalemon@'192.168.3.%'; (用于监控模块)
建立路由模块的账号:create user maxscale@'192.168.3.%' identified by '123456';
grant select on mysql.* to maxscale@'192.168.3.%';
maxscale密码加密:
maxkeys /var/lib/maxscale/ 123456 //会生成加密字符串
修改maxscale配置文件
cd /etc
vim maxscale.cnf
启动maxscale
maxscale --config=/etc/maxscale.cnf
登陆maxscale命令行界面
maxadmin --user=admin --password=mariadb
进入maxscale命令行查看启动哪些服务:
list servers
show dbusers "Read-Write Service"
查看有哪些用户