一、前言
因它高度扩展灵活,基于sql解析、达到负载均衡的实现,这里初步选用MaxScale框架来实现读写分离。
MaxScale 是 Mysql有血缘关系的近亲:MariaDB的一个中间件。一直没弄明白,MariaDB跟Mysql是什么关系,猜想,是不是因为Oracle 收购Mysql闹得,mb叫你收购我,单独成立公司,脱离你的控制~
使用 MaxScale,通过分片没有对可扩展性的技术限制,我们能够快速部署,而无需修改我们的应用程序。MariaDB是云数据库解决方案中最好的城市,这就是为什么我们选择MaxScale。 来源:LeadDesk首席执行官Olli Nokso-Koivisto
二、MaxScale 是干什么的?
配置好了MySQL的主从复制结构后,我们希望实现读写分离,把读操作分散到从服务器中,并且对多个从服务器能实现负载均衡。
读写分离和负载均衡是MySQL集群的基础需求,MaxScale 就可以帮着我们方便的实现这些功能。
上述来源:http://www.yunweipai.com/archives/9148.html
http://www.codesec.net/view/450195.html(深度好文)
二、MaxScale 安装配置
MaxScale安装
我们安装在MHA的管理机器上。
# rpm -ivh maxscale-1.2.1-1.rhel6.x86_64.rpm
卸载
# rpm -e --allmatches maxscale-1.2.1-1.x86_64
创建加密密钥
# maxkeys /var/lib/maxscale/
密钥文件.secrets存放在/var/lib/maxscale/目录下
创建加密密码
# maxpasswd /var/lib/maxscale/ zhangtongle123
BEBC2F21E15F9103E24C55FD1F335647
<span style="color: rgb(61, 70, 77);"--<--------------------------------------------------------
修改配置文件
# cat /etc/maxscale.cnf
maxscale.cnf.template (etc目录下文件名是这个修改一下)
[maxscale] threads=1 ## 如果你的CPU是24核的,线程设置为12核即可 [MySQL Monitor] type=monitor module=mysqlmon servers=server1,server2,server3 user=root # MaxScale监控账号 passwd=BEBC2F21E15F9103E24C55FD1F335647 monitor_interval=10000 # 默认每隔10秒监控检查 detect_stale_master=1 # 当所有的slave都不可用,select查询请求会转发给master,默认为关闭,设置为1开启。 detect_replication_lag=1 # 开启同步复制延迟检查,默认为关闭,设置为1开启。 [RW Split Router] type=service router=readwritesplit servers=server1,server2,server3 user=root # 应用读写分离账号 passwd=BEBC2F21E15F9103E24C55FD1F335647 max_slave_replication_lag=5 # 定义超过延迟5秒,把请求转发给其他slave max_slave_connections=100% # 所有的slave提供select查询服务 #weightby=serv_weight # 定义权重 use_sql_variables_in=master # 如果你的SQL语句有变量,设置参数为master,将会路由到master # 例:SELECT (@myvar := 5); enable_root_user=1 # 默认禁止root超级权限用户访问,设置为1开启。 [CLI] type=service router=cli [RW Split Listener] type=listener service=RW Split Router protocol=MySQLClient port=4006 # 读写分离端口,应用连接这个端口 [CLI Listener] type=listener service=CLI protocol=maxscaled port=6603 # MaxScale后台管理端口 [server1] type=server address=192.168.1.60 port=3306 protocol=MySQLBackend #serv_weight=1 # 权重自定义 [server2] type=server address=192.168.1.61 port=3306 protocol=MySQLBackend #serv_weight=10 # 权重自定义 [server3] type=server address=192.168.1.62 port=3306 protocol=MySQLBackend #serv_weight=10 # 权重自定义
<span style="color: rgb(61, 70, 77);"--<--------------------------------------------------------
启动
/etc/init.d/maxscale start
然后开下启动日志,主要看error:var/log/maxscale/
errorlog 可能报生成的密钥文件没有权限读取操作,
[root@MHA maxscale]# ll -al
[root@MHA maxscale]# chown maxscale.maxscale .secrets 赋权
停止
/etc/init.d/maxscale stop
重启
/etc/init.d/maxscale restart