小马分享(MyCat读写分离测试)

发布时间:2018-01-10 18:36:03编辑:丝画阁阅读(725)

1. MySQL主从配置

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

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

windows系统一般在c:ProgrameDataMySQL中:

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

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

server-id = 1

binlog-do-db=test #备份的数据库

binlog-do-db=test1

log-bin=mysql-bin

binlog-ignore-db=mysql

注意:修改完配置重启服务

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

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

说明:

· root:Slave使用的账号

· IDENTIFIED BY 'root' :Slave使用的密码

· %:Slave数据库IP

master端,通过show master statusG 显示信息。如图:

小马分享(MyCat读写分离测试)

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

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

log-bin=mysql-bin

# 从服务器ID

server-id=2

# 主服务器的IP地址或者域名

master-host=192.168.57.4

# 主数据库的端口号

master-port=3306

# 同步数据库的用户

master-user=root

# 同步数据库的密码

master-password=123456

# 如果从服务器发现主服务器断掉,重新连接的时间差

master-connect-retry=60

# 需要备份的库

replicate-do-db=test

replicate-do-db=test1

# 忽略的数据库

replicate-ignore-db=mysql

4、关联上Master信息:

slave stop;

CHANGE MASTER TO MASTER_HOST='192.168.57.4',MASTER_USER='root',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_CONNECT_RETRY=60;

slave start;

命令说明:

· 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 statusG,显示如下:

小马分享(MyCat读写分离测试)

注意:只有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的读写分离机制后,如下图:

小马分享(MyCat读写分离测试)

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

小马分享(MyCat读写分离测试)

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

小马分享(MyCat读写分离测试)

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

小马分享(MyCat读写分离测试)

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

小马分享(MyCat读写分离测试)

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

小马分享(MyCat读写分离测试)

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

小马分享(MyCat读写分离测试)

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

小马分享(MyCat读写分离测试)

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

关键字