设为首页 收藏本站
查看: 1314|回复: 0

[经验分享] mysql读写分离实现 jdk+mycat环境部署

[复制链接]

尚未签到

发表于 2018-9-27 09:00:23 | 显示全部楼层 |阅读模式
  DB Proxy,数据库中间件
  mycat功能
  1. 读写分离 M-S-S  M-M-S-S
  2. 负载均衡   Galera Cluster
  3. 支持数据的分片自动路由与聚合
  同类产品
  MySQL Proxy          MySQL官方
  Atlas                     奇虎360
  DBProxy                美团点评
  cober                    阿里巴巴
  MyCat                   阿里巴巴
  Mycat概述
  Mycat是一个开源的分布式数据库系统,不同于oracle和mysql,Mycat并没有存储引擎,但是Mycat实现了mysql协议,前段用户可以把它当做一个Proxy。其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端mysql存储引擎里面。最新版本的Mycat不仅支持mysql,还可以支持MS SqlServer,Oracle,DB2等关系型数据库,而且还支持MongoDB这种NoSQL。Mycat对调用者屏蔽了后端存储具体实现。
  Mycat的原理是先拦截用户的SQL语句并做分析:分片分析,路由分析,读写分离分析,缓存分析等,再对将该SQL语句发送到指定规则的数据库。最终将存储引擎返回的结果返回给用户.
  架构:    一台MyCat LB     4台mysql  servers(服务器) 做成M-M-S-S
DSC0000.jpg 开始配置环境:

  首先准备好mysql的主从复制,我的是M-M-S-S (双主双从)再接着配置java环境,最后部署mycat
一、配置java环境
  JRE  ( Java Runtime Environment)
  是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
  JDK (JDK:Java Development Kit )
  JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。
  下载:     jdk
DSC0001.jpg DSC0002.jpg mycat对于 jdk的版本没有太高的的要求 8 9 10 的版本都行

  [root@localhost ~]# jdk-10.0.1_linux-x64_bin.tar.gz -C /usr/local
  [root@localhost ~]# ln -s /usr/local/jdk-10.0.1/ /usr/local/java
  [root@localhost ~]# vim /etc/profile               #添加环境变量
  /etc/profile最后面添加:
  JAVA_HOME=/usr/local/java/bin
  PATH=$PATH:$JAVA_HOME
  export JAVA_HOME PATH
  或者
  [root@localhost ~]# vim /etc/profile
DSC0003.jpg

  [root@localhost ~]# source /etc/profile               #刷新环境变量
  [root@localhost ~]# env |grep java                       #验证环境变量
  [root@localhost ~]# java -version                         #查询java版本,查不出来就是环境变量设置有问题
  java端口号9066
  下载:mycat
DSC0004.jpg [root@localhost ~]# tar xf  Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

  [root@localhost ~]# ls /usr/local/mycat/
二、配置mycat前端
配置mycat前端
  [root@localhost ~]# vim  /usr/local/mycat/conf/server.xml
  注释掉多余用户
DSC0005.jpg

  启动mycat管理员   登录mycat的账户
DSC0006.jpg

配置mycat后端
  请务必先备份此文件    schema.xml
  [root@localhost ~]# vim /usr/local/mycat/conf/schema.xml
  上面这个是我自己的配置
DSC0007.jpg

  这个schema 的 name="mycat"  和  bataNode 的database="mycat"  再加上前端的mycat 必须一致,否则会报错。
DSC0008.jpg

  schema name:mycat维护的集群名称。
  datanode:后方节点群的名称。
  datahost:后方节点群的主机名称。
  writehost:写主机
  readhost:读主机
  小技巧!!!!倒着看。一般的脚本倒着看都能看懂.
  关于属性(参数)的介绍:
  负载均衡类型:
  1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
  2. balance="1", 全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,
  简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2     互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
  3. balance="2", 所有读操作都随机的在 writeHost、readhost 上分发。
  4. balance="3", 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。
  writeType 属性:
  1. writeType="0", 所有写操作发送到配置的第一个 writeHost,
  第一个挂了切到还生存的第二个writeHost,
  重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .
  2. writeType="1",所有写操作都随机的发送到配置的 writeHost。
  3. writeType="2",没实现。
三、配置后端mysql群
  M-M-S-S 准备Mycat连接的用户及权限:
  再其中一个M 服务器上设置,其余都会同步

  mysql > grant all on *.* to 'mycatproxy'@'192.168.0.118'>四、启动MyCat
  在mycat服务器上:
  root@localhost ~]#  /usr/local/mycat/bin/mycat start
  Starting Mycat-server...
  启动成功,否则就是配置Mycat后端语法错误。ps:这里启动成功并不能说明什么,是一种假象。你配置有问题它一样也能起来。
  [root@localhost ~]# ss -tnlp |grep java       #监测端口是否启动
  [root@localhost ~]# ps aux | grep mycat      #检测进程是否启动
  为了显示效果在mycat服务器上安装一个  mariadb查看效果
  [root@localhost ~]# yum install -y mariadb
  [root@localhost ~]# mysql -h10.18.43.101 -uroot -p123456 -P8066
  MySQL [(none)]> show databases;
  +----------+
  | DATABASE |
  +----------+
  | mycat    |
  +----------+
  1 row in set (0.00 sec)
  !注意后方mysql群中应该创建该库
  在mycat上
  select * from tianyun.t1;
  insert into tianyun.t1 values(3);
  查看效果
  最后报错就去查询 mycat.log 日志
  [root@localhost ~]# tailf /usr/local/mycat/logs/mycat.log
  多库时设置mycat思路:
DSC0009.jpg




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-602591-1-1.html 上篇帖子: 解决 mysql主从失败 下篇帖子: MySQL表结构同步
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表