参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2BnHpF8rHqMAsZ9U%2Ff1CcK%2Fi%2BOWuJ8pVcwcq6A%3D%3D

一、环境

操作系统:CentOS-6.6-x86_64-bin-DVD1.iso JDK 版本:jdk1.7.0_45

MyCat 版本:Mycat-server-1.4-release-20151019230038-linux.tar.gz

MyCat 节点 IP:192.168.1.203 主机名:edu-mycat-01

MySQL 版本:mysql-5.6.22.tar.gz

主节点 IP:192.168.1.205 主机名:edu-mysql-01

从节点 IP:192.168.1.206 主机名:edu-mysql-02

二、MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/

MyCat 的读写分离是基于后端 MySQL 集群的主从同步来实现的,而 MyCat 提供语句的分发

功能。MyCat1.4 开始支持 MySQL 主从复制状态绑定的读写分离机制,让读更加安全可靠。

三、MyCat的安装

四、MyCat 的安装

1、设置 MyCat 的主机名和 IP 与主机名的映射

# vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=edu-mycat-01

# vi /etc/hosts

127.0.0.1 edu-mycat-01

192.168.1.203 edu-mycat-01

192.168.1.205 edu-mysql-01

192.168.1.206 edu-mysql-02

2、因为 MyCat 是用 Java 开发的,因此 MyCat 运行需要安装 JDK(准确来说是 JRE 就够了), 并且需要 JDK1.7 或以上版本

我这里已经配置好

3、创建 mycat 用户并设置密码

# useradd mycat

# passwd mycat

4、上传安装包 Mycat-server-1.4-release-20151019230038-linux.tar.gz 到 MyCat 服务器中的 /home/mycat目录,

并解压并移动到 /usr/local/mycat目录

[root@edu-mycat-01 ~]# su mycat
[mycat@edu-mycat-01 yxq]$ cd /home/mycat
[mycat@edu-mycat-01 ~]$

[mycat@edu-mycat-01 ~]$ ls

Mycat-server-1.4-release-20151019230038-linux.tar.gz

[mycat@edu-mycat-01 ~]$ tar -zxvf Mycat-server-1.4-release-20151019230038-linux.tar.gz

[mycat@edu-mycat-01 ~]# mv /home/mycat/mycat/ /usr/local/

[root@edu-mycat-01 mycat]# ll
total 24
drwxrwxr-x. 2 mycat mycat 4096 Apr 25 14:58 bin
drwxrwxr-x. 2 mycat mycat 4096 Jun 16  2015 catlet
drwxrwxr-x. 2 mycat mycat 4096 Apr 25 14:58 conf
drwxrwxr-x. 2 mycat mycat 4096 Apr 25 14:58 lib
drwxrwxr-x. 2 mycat mycat 4096 Jun 16  2015 logs
-rwxrwxr-x. 1 mycat mycat  217 Oct 19  2015 version.txt

5、设置 MyCat 的环境变量

# vi /etc/profile## mycat env

export MYCAT_HOME=/usr/local/mycat

export PATH=$PATH:$MYCAT_HOME/bin

# source /etc/profile

五、配置 MyCat

1、在配置 MyCat 前,请确认 MySQL 的主从复制安装配置已完成并正常运行。MySQL 主从数据的同步在 MySQL 中配置,MyCat 不负责数据同步的问题。

补充:

(1) MySQL 主从复制配置中,如果涉及到函数或存储过程的同步复制,需要在/etc/my.cnf 中的[mysqld]段中增加配置log_bin_trust_function_creators=true 或在客户端中设置set global log_bin_trust_function_creators = 1;

(2) 如果要做读写分离下的主从切换,那么从节点也有可能会变为写节点,因此从节点就不 能设置为只读 read_only=1 。

(3) Linux 版本的 MySQL,需要设置为 MySQL 大小写不敏感,否则可能会发生找不到表的问 题。可在/etc/my.cnf 的[mysqld]段中增加lower_case_table_names=1 。

2、配置 MyCat 的 schema.xml

schema.xml 是 MyCat 最重要的配置文件之一,用于设置 MyCat 的逻辑库、表、数据节点、

dataHost 等内容,

[mycat@edu-mycat-01 conf]$ cd /usr/local/mycat/conf/

[mycat@edu-mycat-01 conf]$ vi schema.xml

MyCat1.4开始支持MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠,配置如下:

MyCat1.4开始支持MySQL主从复制状态绑定的读写分离机制,证读更加安全可靠,配置如下:

MyCat心跳检查语句配置为show slave status,dataHost上定义了两个新属性,switchType=”2”与slaveThreshold=”100”,此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制,

MyCat心跳机制通过检测

show slave status中”Seconds_Behind_Master”,”Slave_IO_Running”,’”Slave_SQL_Running”三个字段来确定当前主从同步的状态以及”Seconds_Behind_Master”主从复制时延,当Seconds_Behind_Master大于slaveThreshold时,读写分离筛选器会过滤掉此Slave机器,防止读到很久之前的旧数据,而当主节点宕机后,切换逻辑会检查Slae上的Seconds_Behid_Master是否为0,为0时表示主从同步,可以安全切换,否则不会切换。

3、配置server.xml

Server.xml主要用于设置系统变量、管理用户、设置用户权限等

[root@edu-mycat-01 conf]# vi server.xml

[root@edu-mycat-01 conf]# service iptables restart

3、修改log日志级别为debug,以便通过日志确认基于MyCat的MySQL数据库集群读写分离的数据操作状态(可以在正式上生产前改成info级别)

[mycat@edu-mycat-01 conf]$ vi /usr/local/mycat/conf/log4j.xml

3、启动MyCat

[mycat@edu-mycat-01 conf]$ cd /usr/local/mycat/bin/

(1)控制台启动,这种启动方式在控制台关闭后,MyCat服务也将关闭,适合调试使用:

[mycat@edu-mycat-01 bin]$ ./mycat console

(1)可以采用以下后台的方式启动:

[mycat@edu-mycat-01 bin]$ ./mycat start

(对应的,重启:/mycat restart,关闭:./mycat stop)

7、MyCat连接测试

(1)、如果本地Windows安装有MySQL,可以使用已有的mysql客户端远程操作MyCat

cd  C:\Program Files\MySQL\MySQL Server 5.6\bin

mysql -uuser2 -pyixq.2 -h192.168.1.203 -P8066

mysql> show databases;

mysql> use rc_schema2;

mysql> show tables;

(1)、如果为了方便,需要在MyCat主机上对MyCat进行操作(把MyCat当是本地MySQL来操作),可以在MyCat节点主机上安装MySQL客户端:

[mycat@edu-mycat-01 bin]$ su root

Password:

[root@edu-mycat-01 bin]# yum install mysql

使用安装好的mysql客户端登录MyCat

[root@edu-mycat-01 mycat]# mysql -u user2 -pyixq.2 -h192.168.1.203 -P 8066

如果使用MyCat主机上安装了MySQL客户端进行查询出理乱码,则需要设置客户端的编码在/etc/my.cnf中的[client]中设置客户端的默认编码为utf8

[root@edu-mycat-01 bin]# vi /etc/my.cnf

[client]

default-character-set=utf8

(1)使用第三方MySQL管理客户端连接MyCat测试(navicat支持,MySQS-Front兼容性不太好),以navicat为例:

8、读写分离测试

(1)监听MyCat日志

[mycat@edu-mycat-01 ~] cd /usr/local/mycat/logs

[mycat@edu-mycat-01 logs] tail -f myat.log

(1)读测试

[mycat@edu-mycat-01 ~]$ mysql -uuser2 -pyixq.2 -h192.168.1.203 -P8066

mysql> show databases;

mysql> use edu_schema2;

mysql> show tables;

mysql> select * from edu_user;

执行上面的查询语句,此时对应的MyCat日志信息如下:

多次执行select * from edu_user语句,MyCat打印出来的日志信息显示读操作请求都是路由到Slave节点(192.168.1.206)

(1)写测试

mysql> insert into edu_user(userName,pwd) values('yixiaoqun','2779626653@qq.com')

对应的日志

多次执行以上插入语句,发现新增数据都是从Master节点(192.168.1.205)插进入的,并且Slave节点通过Binlog同步了Master节点中的数据

 
 

分布式架构高可用架构篇_08_MyCat在MySQL主从复制基础上实现读写分离的更多相关文章

  1. 高可用架构篇--MyCat在MySQL主从复制基础上实现读写分离

    实战操作可参考:http://www.roncoo.com/course/view/3117ffd4c74b4a51a998f9276740dcfb 一.环境 操作系统:CentOS-6.6-x86_ ...

  2. Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived

    文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...

  3. 分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

  4. 分布式架构高可用架构篇_01_zookeeper集群的安装、配置、高可用测试

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

  5. 分布式架构高可用架构篇_04_Keepalived+Nginx实现高可用Web负载均衡

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

  6. 分布式架构高可用架构篇_03-redis3集群的安装高可用测试

    参考文档 Redis 官方集群指南:http://redis.io/topics/cluster-tutorial Redis 官方集群规范:http://redis.io/topics/cluste ...

  7. 分布式架构高可用架构篇_02_activemq高可用集群(zookeeper+leveldb)安装、配置、高可用测试

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

  8. 分布式架构高可用架构篇_activemq高可用集群(zookeeper+leveldb)安装、配置、高可用测试

    原文:http://www.iteye.com/topic/1145651 从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统的Master-Slave 方式,增加了基于Z ...

  9. 2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离

    技巧提示:mysql读写分离搭建好之后,配合nginx的负载均衡,可以高效的mysql的集群性能,同时免去麻烦的query分流.比如,sever1收到的请求就专门链接slave1从mysql读取数据, ...

随机推荐

  1. 一、HTML和CSS基础--网页布局--网页布局基础

    W3C标准: 由万维网联盟制定的一系列标准,包括: 结构化标准语言(HTML和XML) 表现标准语言(CSS) 行为标准语言(DOM和ECMAScript) 倡导结构.样式.行为分离. CSS 规定的 ...

  2. 如何解决adb devices 端口被占用的问题zz

    在win xp ,win 7 上使用adb时, 越来越多的人出现了 adb devices 命令长时间无响应.adb start-server 失败.eclipse adt初始化时卡在dbms-ini ...

  3. svn上想回滚代码怎么办?——svn merge 命令

    小博客断更了很久,最近想接着尝试建立写作的习惯,把自己工作生活遇到的有用知识沉淀下来.尽管微信公共账号比较火,但个人觉得这种不能用搜索引擎检索的东西完全就是历史的倒退,就像 RSS 这种提高信息传播效 ...

  4. 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(二)转载自码农网

    7. 安装 PHP PHP 是用于 web 基础服务的服务器端脚本语言.它也经常被用作通用编程语言.在最小化安装的 CentOS 中安装 PHP: # yum install php 安装完 php ...

  5. CDH中,执行HIVE脚本表联查权限问题。。

    文章来自http://www.cnblogs.com/hark0623/p/4174641.html 转发请注明 有时候执行表联查的时候总会出现没有权限写文件的情况. 这个时候使用sudo -H hi ...

  6. Hark的数据结构与算法练习之堆排序

    前言 堆排序我是看了好半天别人的博客才有了理解,然后又费了九牛二虎之力才把代码写出来,我发现我的基础真的很差劲啊……不过自己选的路一定要坚持走下去.我试着把我的理解描述出来,如有不妥之处希望大家可以指 ...

  7. CodeForces 304C

    E - E Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  8. Unicode编码

    Unicode为世界上所有的文字系统的每一个字符单位分配了一个唯一的整数,称为代码点,范围为:0~1114111: ASCII将每一索引映射为唯一的二进制表示,但Unicode允许多个不同二进制编码的 ...

  9. 水题 ZOJ 3875 Lunch Time

    题目传送门 /* 水题:找排序找中间的价格,若有两个,选价格大的: 写的是有点搓:) */ #include <cstdio> #include <iostream> #inc ...

  10. 自爽:DOTNET 笔试题

    2-3年经验估计,求轻拍~ 在多态中,经常用到virtual和abstract,请问区别是什么?并描述其适用场景. 请描述Action,Action<T>,Func<T>,Fu ...