作者个人研发在高并发场景下提供了一个简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。开源半年多以来,已成功为十几家中小企业提供精准定时调度解决方案,经受住了生产环境的考验。为了造福更多的童鞋,这里提供一个开源的框架地址:https://github.com/sunshinelyz/mykit-delay写在前面随着系统业务的不断发展,MySQL数据库的数据量是也在不断上升,当数据量达到一定程度时,MySQL的主从复制、读写分离、分库分表成为必然的架构趋势。这不,有朋友问我能不能说说Mycat是如何实现MySQL的读写分离的。所以整理了这篇文章。注:文章已收录于:GitHub:https://github.com/sunshinelyz/technology-bingheGitee:https://gitee.com/binghe001/technology-binghe环境说明这里需要高手关注MySQL的从复制是依赖于MySQL自身的主从复制机制。Mycat不负责MySQL的主从复制。MySQL的主从复制配置,可以参考博文《MySQL之——主从复制的配置》。好了,我们进入今天的主题。搭建环境操作系统:CentOS-6.5-x86_64-bin-DVD1.isoJDK版本:jdk1.8Mycat版本:Mycat-server-1.6.1-RELEASE-20201208215510-linux.tar.gz(下载自己编译的源码)Mycat节点IP:192.168.209.133主机名:liuyzhuang133主机配置:4核CPU,4G内存节点IP:192.168.209.132主机名:liuyzhuang132主机配置:4核CPU,4G内存Mycat部署架构Mycat的读写分离是基于后端MySQL集群的主从同步,Mycat提供语句分发。MyCat1.4开始支持MySQL主从复制状态绑定的读写分离机制,让读取更加安全可靠。下面来看一下Mycat的整体部署架构图。Mycat的安装设置主机名和IP与主机名的映射#vim/etc/sysconfig/networkNETWORKING=yesHOSTNAME=liuyazhuang133#vim/etc/hosts127.0.0.1liuyazhuang133192.168.209.131liuyazhuang131192.168.209.132liuyazhuang132192.168.209.133liuyazhuang133配置Java环境变量因为Mycat是用Java开发的,所以Mycat需要安装JDK(准确的说JRE就够了),需要JDK1.7以上版本#vim/etc/profile##javaenvexportJAVA_HOME=/usr/local/java/jdk1.8exportJRE_HOME=$JAVA_HOME/jreexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jarexportPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin#source/etc/profile#java-version上传Mycat安装包上传Mycat-server-1.6.1-RELEASE-20201208215510-linux.tar.gz到MyCat服务器的/home/mycat目录下,解压并移动到/usr/local/mycatdirectory$tar-zxvfMycat-server-1.6.1-RELEASE-20201208215510-linux.tar.gz#mv/home/mycat/mycat/usr/local/#cd/usr/local/mycat/#ll设置Mycat的环境变量#vim/etc/profile##mycatenvexportMYCAT_HOME=/usr/local/mycatexportPATH=$PATH:$MYCAT_HOME/bin#source/etc/profile配置Mycat确认MySQL主从复制正常在配置Mycat之前,请确认MySQL的主从复制设置配置完成并运行。MySQL主从数据同步配置在MySQL中,Mycat不负责数据同步问题。补充:在MySQL主从复制配置中,如果涉及到函数或存储过程的同步复制,需要在/etc/my.cnf中的[mysqld]段添加配置log_bin_trust_function_creators=true或者setgloballog_bin_trust_function_creators=in客户1;如果要在读写分离下切换主从,那么从节点也有可能成为写节点,所以不能将从节点设置为只读。read_only=1Linux版本的MySQL需要设置为MySQLcase-insensitive,否则可能会出现找不到表的问题。您可以在/etc/my.cnf的[mysqld]部分添加lower_case_table_names=1。配置schema.xmlschema.xml是Mycat最重要的配置文件之一,用于设置Mycat的逻辑库、表、数据节点、dataHost等。[root@liuyzhuang133conf]$cd/usr/local/root/conf/[root@liuyzhuang133conf]$vischema.xml文件内容如下。
