MySQL使用Mycat实现读写分离

2024-06-06 07:38

本文主要是介绍MySQL使用Mycat实现读写分离,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 一,Mycat下载

       http://www.mycat.io/是Mycat的官方网站,到这个网站可以进行Mycat的下载,在官网还可以下载《Mycat权威指南》pdf的电子档,下载Mycat的源码。目前最新稳定的Mycat版本是Mycat1.6, Mycat有window,linux,unix,mac平台对应的版本,我这里也使用下载的是window下的1.6版本来实现读写分离。进行读写分离需要先进行主从复制,关于主从复制。

二,Mycat的安装

Window下的安装:
       MyCAT使用Java开发,因为用到了JDK 7的部分功能,所以在使用前请确保安装了JDK 7.0,要求是JDK 7.0以       上,并设置了正确的Java环境变量。

我下载的是免安装版Mycat-server-1.6-RELEASE-20161028204710-win.tar.gz,解压到任意磁盘目录,注意目录不能有中文和空格。我的解压目录为:D:\programing,在mycat的目录中主要有bin,lib,conf,logs目录。

Linux环境下的安装:

1)在linux下环境下安装好jdk,jdk需要1.7以上。
2) 下载Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz,这是linux的版本,在/usr/local目录下进行解压得到mycat目录。
3) 开放8066端口和9066端口
firewall-cmd --zone=public --add-port=8066/tcp --permanent
firewall-cmd --permanent --zone=public --add-port=8066/udp
firewall-cmd –reload

三,修改mycat的配置文件 

1)修改配置conf/server.xml文件,该文件是Mycat的主配置文件。
<user name="mycat">
<property name="password">mycat</property>
<property name="schemas">TESTDB</property>
</user>

user标签是给mycat添加一个用户,name是这个用户的名字,password是密码,schemas是这个用户下的逻辑数据库,多个逻辑数据库可以用“,”逗号隔开。可以通过navicat premium的客户端使用这个user配置的信息连接mycat。注意mycat默认的普通连接端口是8066,管理连接端口是9066。  

2)修改schema.xml文件,代码如下:     

[html]  view plain copy
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">  
  3. <mycat:schema xmlns:mycat="http://io.mycat/">  
  4.   
  5.     <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">          
  6.     </schema>  
  7.     <dataNode name="dn1" dataHost="localhost1" database="first_db" />  
  8.     <!--<dataNode name="dn2" dataHost="localhost1" database="db2" />  
  9.     <dataNode name="dn3" dataHost="localhost1" database="db3" />  
  10.     <dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" />  
  11.      <dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" />  
  12.     <dataNode    name="jdbc_dn2" dataHost="jdbchost" database="db2" />  
  13.     <dataNode name="jdbc_dn3"    dataHost="jdbchost" database="db3" /> -->  
  14.     <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"  
  15.               writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">  
  16.         <heartbeat>select user()</heartbeat>  
  17.         <!-- can have multi write hosts -->  
  18.         <writeHost host="hostM1" url="192.168.9.161:3306" user="root"  
  19.                    password="root">  
  20.             <!-- can have multi read hosts -->  
  21.             <readHost host="hostS2" url="192.168.9.163:3306" user="root" password="root" />  
  22.         </writeHost>         
  23.     </dataHost>  
  24.       
  25. </mycat:schema>  

    schema:mycat的逻辑数据库

    dataNode:节点

    dataHost:节点对应的读库写库的地址和连接

    balance="1" :实现读写分离

   dbDriver="native" :表示使用什么方式连接mysql,这里采用mysql的协议进行连接,可以选择jdbc,这时候就需要把java的mysql驱动包放到mycat的lib目录下面,否则不能连接mysql

   关于上面的参数的详细配置的意思可以参考mycat权威指南:下载地址:http://www.mycat.io/

  3)修改   wrapper.conf文件

   主要修改下面这一行代码:

 # Java Application
wrapper.java.command=/usr/local/jdk1.8.0_131/bin/java

四,测试

    1,我是在cenos7下面安装的解压配置的mycat,进行测试之前需要先启动mycat,

    进入mycat的bin目录下:cd mycat/bin

    linux下面使用./mycat start 命令启动mycat;使用 ./mycat stop停止mycat

    mycat的日志在logs目录下面,包含了启动的信息和连接的信息

    确保成功,启动mycat

    2,在安装了mysql客户端的机器使用下面的命令通过mycat访问mysql:

     mysql -umycat -p -h192.168.9.161 -P8066        

    ip是安装了mycat的机器的ip,端口是mycat的端口,用户是mycat的server.xml里面的配置,mycat用户,密码也是mycat密码

    能够正确登入说明mycat安装成功了,是进行读写分离的前提。

    3,第二步使用命令操作不方便使,现在我们用navicat premium登入mycat,输入ip,端口,用户名和密码,需要linux开启8066端口9066端口远程访问。

   

     点击连接测试,成功以后在点击确定即连接mycat成功了。     

   4,测试步骤:

   1)关闭主从同步stop slave;
   2)往mycat插入一条数据,提交刷新
   3)观察刚插入的数据,发现mycat并没查看到这条数据
   4)观看主库,发现主库有这条通过mycat添加的数据
   5)观看从库,发现从库没有通过mycat添加的数据
   6)开启从数据库主从同步start slave;
   7)通过从库查看发现有刚新添加的数据
   8)通过mycat查看发现也有这条刚添加的数据

这篇关于MySQL使用Mycat实现读写分离的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1035484

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

10. 文件的读写

10.1 文本文件 操作文件三大类: ofstream:写操作ifstream:读操作fstream:读写操作 打开方式解释ios::in为了读文件而打开文件ios::out为了写文件而打开文件,如果当前文件存在则清空当前文件在写入ios::app追加方式写文件ios::trunc如果文件存在先删除,在创建ios::ate打开文件之后令读写位置移至文件尾端ios::binary二进制方式

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu