本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离:前端
使用4台RHEL 7.2虚拟机,如图-1所示。其中192.168.4.十、192.168.4.20分别做为MySQL主、从服务器,是整个服务的后端;另外一台 192.168.4.100做为MySQL代理服务器,是直接面向客户的服务前端;客户机192.168.4.120用做访问测试。mysql
图-1sql
对比两种方式的读写分离效果——数据库
其中MySQL主、从复制结构的搭建参考前面的课程,这里再也不赘述。vim
实现此案例须要按照以下步骤进行。后端
步骤一:部署mysql-proxy代理服务器缓存
1)安装mariadb官方提供的maxscale软件包服务器
修改配置文件:并发
分别在主、从数据库服务器上添加受权用户(只在主服务器受权便可 从服务器会自动同步):socket
2)启动maxscale服务
步骤二:测试配置
1)在客户端192.168.4.120上使用上边受权用户student 链接代理服务器192.168.4.100:
客户端当前访问的是从数据库服务器,仍然可以插入纪录。表示成功。
基于一台普通版的MySQL服务器,执行下列操做:
实现此案例须要按照以下步骤进行。
步骤一:MySQL并发及链接控制
max_connections对应并发客户端链接的数量,增长该值会增长 mysqld 要求的文件描述符的数量。若这个数值过小,可能会常常出现“too many connections”错误。好比 默认的数值是151,能够将其改成1024。
1)查看当前已创建的链接数
2)查看当前的最大链接数限制
步骤二:MySQL缓存参数控制
当 Key_reads / Key_read_requests 较低时,可适当加大key_buffer_size的缓存值,以提升性能。而增大sort_buffer_size的值,能够显著提升ORDER和GROUP的响应速度。
1)查看key_read相关数值
2)查看当前的key_buffer_size缓存大小
3)查看当前的sort_buffer_size大小
4)查看检索表记录时的读取缓存大小
缓存值read_buffer_size和read_rnd_buffer_size会影响SQL查询的响应速度:
步骤三:MySQL线程重用和开表控制
分析“已打开表的数量/当前可缓存表的数量”,比值不超过95%就基本正常。
1)查看当前已打开、一共打开过多少个表
2)查看当前可缓存多少个打开的表
步骤四:MySQL调整示例:记录慢查询
1)调整my.cnf配置文件,启用慢查询
2)查看慢查询日志(mysqldumpslow工具)
3)了解与查询相关的缓存选项
查看当前的查询缓存大小:
查看当前的查询缓存统计数据:
步骤五:关于MySQL状态和相关变量的查看
1)查看服务器的相关状态值(运行中动态变化)
使用SHOW GLOBAL STATUS语句,可结合LIKE条件作模糊过滤。
默认有400多个状态值:
2)查看服务器的运行选项(通常为静态限制,可经过my.cnf文件配置,或SET修改)
使用SHOW VARIABLES语句,也可结合LIKE条件作模糊过滤。
默认也有400多个(接近500个)配置选项: