参考: 龙果学院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. HDU 1087 Super Jumping! Jumping! Jumping! 最大递增子序列

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  2. [Android Pro] 超能RecyclerView组件使用

    RecyclerView最强大的功能在于秒变功能,只需要改动很少的代码就可以实现ListView,GridView及水平ListViw的切换功能 public class MainActivity e ...

  3. July 19th, Week 30th Tuesday, 2016

    The good seaman is known in bad weather. 惊涛骇浪,方显英雄本色. You can't be afraid to fail. It's the only way ...

  4. July 17th, Week 30th Sunday, 2016

    You are beautiful, but that is not why I love you. 你如此美丽,但我并非因此而爱你. Although we have always been tol ...

  5. python基础——递归函数

    python基础——递归函数 递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用 ...

  6. linux常见问题集锦-1

    http://www.cnblogs.com/itech/archive/2011/02/12/1952857.html 感谢作者分享 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 . ...

  7. CI中写原生SQL(封装查询)

    封装查询 封装,通过让系统为你组装各个查询语句,能够简化你的查询语法.参加下面的范例: $sql = "SELECT * FROM some_table WHERE id = ? AND s ...

  8. laravel框架中widget模糊查询

    .配置模糊查询的路由 Route::);     .在widgets.php下注册widget <?php Widget::register() {      $model = Str::stu ...

  9. Web service project中导入的库JAX-RS(Java EE 6.0新产品)

    JAX-RS是JAVA EE6 引入的一个新技术. JAX-RS即Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,支持按照表述性状态转移(R ...

  10. Python实现的粒子群优化算法

    01.from numpy import array 02.from random import random 03.from math import sin, sqrt 04. 05.iter_ma ...