mycat读写分离性能测试

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秒

 

posted on 2019-04-22 22:44  百东  阅读(502)  评论(0编辑  收藏  举报

导航