1.    MySQL主从配置

我们的方案设计基于Mysql的主从数据复制功能,以下是基于mysql5.5以上版本最新的主从配置。

开启mysql主从数据复制,主要在mysql的my.ini文件中设置:

windows系统一般在c:\ProgrameData\MySQL中:

Linux系统一般在 /etc/my.cnf中:

1、主数据库服务器配置:

server-id=1

log-bin=mysql-bin

binlog-do-db=Industry       //只同步Industry数据库

binlog-ignore-db=mysql    //避免同步mysql用户配置,以免不必要的麻烦

binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema

2创建一个允许从服务器来访问的用户(主服务器)

grant replication slave on *.* to 'root'@'192.168.0.58'
identified by 'root';

说明:

  • root:Slave使用的账号
  • IDENTIFIED BY 'root' :Slave使用的密码
  • 192.168.1.58:Slave数据库IP

master端,通过show master
status\G 显示信息。如图:

注意上图中的File,和Position。Slave 中会用到这些信息。

3、从数据库服务器配置:

server-id=11              //服务Id,注意要和master的server-id不一样

log-bin=mysql-bin

relay-log-index=slave-relay-bin.index

relay-log=slave-relay-bin

sync_master_info=1
sync_relay_log=1
sync_relay_log_info=1

4、关联上Master信息:

change master to

master_host='192.168.0.68',master_user='root',master_port=3306,master_password='root',master_log_file='mysql-bin.000001',master_log_pos=120;

命令说明:

  • master_host:master 数据库服务器ip
  • master_user: master  数据库通过GRANT授权的账号
  • master_port:master  数据库使用的端口号
  • master_password:master  数据库通过GRANT授权的密码
  • master_log_file:master数据库中通过show master status显示的File名称
  • master_log_pos:master数据库中通过show master status显示的Position数据

重启Slave 的MySql服务

在命令行中输入start slave.

在命令行中输入show slave status,显示如下:

注意:只有Slave_IO_Running与Slave_SQL_Running都为Yes才配置成功。

至此,配置全部完成。这样,Master服务器上Industry里的数据就能同步到slave的Industry数据库中。

 

2.    主从配置的MySQL创建表方式

由于Mysql已经配置好了主从复制,在创建表时,我们要注意,在Master库中创建表后,Mysql会自动在Slave库中创建一张表。这里我们需要做的是,将从库中自动创建的表删除,然后手动创建一张我们符合我们需求的表。具体操作步骤如下:

  1. 在主库中创建表A,引擎选择Innodb;
  2. 删除从库中自动创建的表A;
  3. 在从库中创建表A,引擎选择MyISAM;

建表带sql引擎语句样例:

CREATE
TABLE table1 (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id),
name TEXT
) TYPE= InnoDB

CREATE
TABLE table1 (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id),
name TEXT
) TYPE=MyISAM

 

3.    启用Mycat的读写分离机制

最后启用Mycat的读写分离机制即可。

4.    两种模式的执行时间比照图

再多的废话也不如实际的测试来的有效,接下来,让我们实际测试利用这种方案能给我们带来多大的执行效率。

首先,在开启mycat的读写分离机制后,如下图:

此时写入库的引擎为Innodb,读库的引擎为MyISAM,这时使用count语句,执行时间如下图:

使用like条件语句执行时间如下图:

使用等于条件语句执行时间如下图:

接下来,我们取消读写分离机制,见下图:

此时只有写入库,并且引擎为Innodb,这时使用count语句,执行时间如下图:

使用like条件语句执行时间如下图:

使用等于条件语句执行时间如下图:

总体的执行时间对比表,见下图:

Sql语句

启用读写分离机制(读库使用MyISAM)

取消读写分离机制(读使用的是Innodb)

count

0.468秒

6.786秒

like

6.022秒

25.818秒

=

0.094秒

0.515秒

mycat读写分离性能测试的更多相关文章

  1. Mycat读写分离、主从切换、分库分表的操作记录

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

  2. Mycat 读写分离

    简介 Mycat 是 MySQL中间件,Mycat的原理中最重要的一个动词就是'拦截',它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析.路由分析.读写分离分析.缓存分 ...

  3. web 项目 连接mycat 读写分离失效问题,

    问题描述:mycat 读写分离已配好,在sql工具上查询操作是可以的,但是在项目中,读数据就走write 数据库, 解决      :环境spring +mvc +ibaites,在java中自己写j ...

  4. LVS+MYCAT读写分离+MYSQL同步部署手册(第三版)

    1      配置MYSQL主备同步 1.1    测试环境 mysql版本:5.6.24: 操作系统内核版本:Linux-3.13-0-32 主数据库IP:192.168.10.3: 主数据库名:d ...

  5. LVS+MYCAT+读写分离+MYSQL主备同步部署手册

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

  6. 【转载】LVS+MYCAT+读写分离+MYSQL主备同步部署手册(邢锋)

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

  7. mysql主从同步+mycat读写分离+.NET程序连接mycat代理

    背景 最近新项目需要用到mysql数据库,并且由于数据量大的原因,故打算采用1主1从(主数据库负责增.删.改操作:从数据库负责查操作)的数据库架构,在实现主从之后还要实现读写分离的代理,在网上搜寻了很 ...

  8. MyCat读写分离-笔记(四)

    概述 Mycat能够实现数据库读写分离,不能实现主从同步,数据库的备份还是基于数据库层面的.Mycat只是数据库的中间件: Mycat读写分离配置 在MySQL中间件出现之前,对于MySQL主从集群, ...

  9. Mycat读写分离、主从切换学习(转)

    http://blog.csdn.net/zhanglei_16/article/details/50707487 Mycat读写分离.主从切换学习问题一:分表.分库的优缺点,以及分表无法成为主流分表 ...

随机推荐

  1. JS时间戳转时间

    function timestampToTime(timestamp) { S = timestamp, T = new Date(1E3 * S), Format = function(Q){ret ...

  2. 整合MVC实现文件上传

    1.整合MVC实现文件上传整合MVC实现文件上传在实际的开发中在实现文件上传的同时肯定还有其他信息需要保存到数据库,文件上传完毕之后需要将提交的基本信息插入数据库,那么我们来实现这个操作.整个MVC实 ...

  3. drf框架使用之 路飞学城(第一天)

    1. 路飞学城第一天: 知识点 使用的是序列化与反序列化的使用: 1.创建一个公共相应的Json方法: #创建一个公共响应的类: class LuffyResponse(): def __init__ ...

  4. Maven项目强制更新,解决Failed to read artifact descriptor for xxx.jar问题

    导入的maven项目pom.xml现红叉 分析原因:在maven本地仓库中找不到相应的jar包. 解决方案:让maven强制更新依赖. 项目右击菜单,Maven -> Update Projec ...

  5. Navicat Premium 12激活教程

    Navicat Premium 12激活教程 1.软件包的下载 百度云地址链接: 注册机:https://pan.baidu.com/s/1KzmCbVYcVoXt_t4osXk3Kw  提取码: q ...

  6. Linux网络编程学习(七) ----- 有名管道(第四章)

    1.什么是有名管道?为什么有了管道还需要有名管道? 有名管道是解决管道不能提供非父子进程间通信的缺陷.管道在Linux系统内部是以文件节点(inode)的形式存在,但由于其对外的不可见性(“无名”性) ...

  7. javascript中如何判断变量类型

    typeof 只能判断基本类型,如number.string.boolean.当遇上引用类型变量就没那么好用了,结果都是object.使用Object.prototype.toString.call( ...

  8. 网页html格式导出Excel.xls

    1.创建excel方法 /// <summary> /// 创建Excel表格 /// </summary> /// <param name="dt" ...

  9. material palette

    https://www.materialpalette.com/

  10. python--第二十天总结(Django的一些注意)

    关闭Django模板的自动转义 Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全.但是有的时候我们可能不希望这些HTML元素 被转义,比如我们做一个内容管 ...