MysqL使用Mycat实现读写分离

读写分离实践

绝大多数的企业的应用场景对于数据库来说都是读多写少,比如微博,明星发一条微博,上千万人读。所以为了分担数据库压力,做负载均衡,首先考虑到的就是读写分离,读写分离基于上面实现的主从复制,使用主库作为写库,从库为读库,提高数据库性能,提高IO性能

读写分离的实现方式

为了实现读写分离,出现了很多解决方案,其中比较流行的是采用中间件做为Proxy,保持应用层代码不随数据库的变动而发生变化,这里包括Amoeba、Atlas、Cobar、Mycat、MySQL Proxy等,而Mycat是目前开源的数据库中间件中比较成熟的解决方案。

一、前提条件

     1、需要三台虚拟机(代理机、主机、从机)

     2、提前关闭三台主机的 firewalld 、selinux/config/下ELINUX=disabled 、getenforce=0

     3、将主机和从机搭建主存备份,并且确定一个共用数据库

     4、下载并安装Navicat(GUI界面)

     5、下载并安装Mycat(CLI界面)

     6、安装jdk1.8 (后续有详细步骤)

     7、查看三台主机的密码算法及使用权限要相同

 

二、开始搭建

1、下载安装Mycat

         • Mycat 官网: http://www.mycat.io/
             可以了解下 Mycat 的背景和应用情况,这样使用起来比较有信心。
         • Mycat 下载地址: http://dl.mycat.io/
            官网有个文档,属于详细的介绍,初次入门,看起来比较花时间。

  Mycat的安装其实只要解压下载的目录就可以了,非常简单

 安装完成后,目录如下:

目录

说明

bin

mycat命令,启动、重启、停止等

catlet

catletMycat的一个扩展功能

conf

Mycat 配置信息,重点关注

lib

Mycat引用的jar包,Mycatjava开发的

logs

日志文件,包括Mycat启动的日志和运行的日志。

配置

Mycat的配置文件都在conf目录里面,这里介绍几个常用的文件

文件

说明

server.xml

Mycat的配置文件,设置账号、参数等

schema.xml

Mycat对应的物理数据库和数据库表的配置

rule.xml

Mycat分片(分库分表)规则

MyCat的架构

Mycat的架构其实很好理解,Mycat是代理,Mycat后面就是物理数据库。和Web服务器的Nginx类似。对于使用者来说,访问的都是Mycat,不会接触到后端的数据库。

    Mycat作为主数据库中间件,肯定是与代码弱关联的,所以代码是不用修改的,使用Mycat后,     连接数据库是不变的,默认端口是8066。连接方式和普通数据库一样,如              jdbc:mysql://192.168.0.1:806

 2、安装jdk1.8

   --- 解压缩包   tar -xzvf jdk-8u161-linux-x64.tar.gz -C /usr/local/java

   --- 环境变量文件/etc/profile配置 (添加到/etc/profile中)

      export JAVA_HOME=/usr/local/java/jdk1.8.0_161

      export JRE_HOME=${JAVA_HOME}/jre

      export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH

      export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin

      export PATH=$PATH:${JAVA_PATH}

  --- 使用source命令使修改即时生效,无需重启服务器

       source /etc/profile

3、配置Mycat

--- mycat/conf/server.xml 的配置 这里 第一个name后的字段和Navicat登录的用户名一致,第二个name后的password和Navicat登录的密码一致,第三个name后的schemas字段跟配置文件mycat/conf/schema.xml中name字段一致

各配置参数含义 

这里配置了一个账号root,密码也是root,针对逻辑数据库nebula(自己定义别名,不是真实的物理数据库,读写权限都有,没有针对表做任何特殊的权限。

--- mycat/conf/schema.xml的配置

    schema.xml是最主要的配置项,首先看我的配置文件。 database=“nebula_cloud” 必须是主从  库都存在的数据库。

下面是关于每个节点的配置说明

4、创建读库的test用户

create user 'test'@'%' identified with mysql_native_password by 'Nebula@123';
GRANT select ON *.* TO 'test';

flush privileges;(刷新用户请求表)

5、启动Mycat

 --- Mycat的启动也非常简单,进入到mycat/bin目录下:

      ##启动 ./mycat start(后台启动)   ./mycat console(前台启动)

      ##停止 ./mycat stop

     ##重启 ./mycat restart

--- 如果在启动时发现异常,在logs目录中查看日志。

wrapper.log 为程序启动的日志,启动时的问题看这个
mycat.log 为脚本执行时的日志, SQL 脚本执行报错后的具体错误内容 , 查看这个文件。 mycat.log 是最新的错误日志,历史日志会根据时间生成目录保存。

--- 启动正常的结果如下

 出现successfully就说明启动成功

三、搭建完成,使用Navicat登录Mycat实现读写分离

1、 连接9066端口

右击mycat_manager 进入命令行界面输入 show @@help ;  查看帮助

 RS_CODE 状态:
         OK_STATUS = 1;正常状态
         ERROR_STATUS = -1; 连接出错
         TIMEOUT_STATUS = -2; 连接超时
         INIT_STATUS = 0; 初始化状态
如果是-1 使用window测试 2.查看防火墙 3.授权

2、连接8066端口

 --- 连接成功则会出现如下的绿色,否则请检查

--- 可以用简单的指令查看当前数据库

show databases;

use xxx; # 其中xxx为刚才看到的数据库中的一个

show tables;

select * from xxx; #为后续做验证准备,这个我们可以按照我们真实表来,此处因为我的数据库中有xxx表,所以以此来示例

!!! 注意 !!!

这里的数据库名可能不会使用自己设定的数据库的真名(为了隐藏详细)

四、测试 

1、 

2、

五、读写分离完成

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值