zoukankan      html  css  js  c++  java
  • 分布式架构高可用架构篇_08_MyCat在MySQL主从复制基础上实现读写分离

    参考: 龙果学院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 FilesMySQLMySQL Server 5.6in

    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节点中的数据

     
     
  • 相关阅读:
    【python】opencv教程CV2模块——翻转图片并保存
    【python】opencv教程CV2模块——简单画图
    【python】opencv教程CV2模块——复制图片、灰度模式并保存
    【python】opencv教程CV2模块——窗口显示图片、按键盘指定s键保存
    【python】opencv教程CV2模块——打开读取图片、窗口显示、保存图片
    【前端】一行代码实现网站网页变黑白灰效果
    【python】彩色图秒变酷炫黑白图,灰度模式,比PS还好用的图像处理,cv2
    【python】批量调整图片亮度和饱和度,比PS还方便的图片处理,cv2
    【python】使用滑动条调整图片亮度和饱和度,比PS还方便的图片处理,cv2
    代码-JS之正则验证手机格式
  • 原文地址:https://www.cnblogs.com/hujihon/p/5709565.html
Copyright © 2011-2022 走看看