MyCat的读写分离与主从切换。

1. 读写分离优缺点

优点:减轻主库的压力,缺点:主库宕机数据的一至性。

2. 准备两台主机(虚拟机就好了)

master:192.168.104.86

slave:192.168.104.96

mysql数据库安装就不说了,自己找。

mysql版本号:5.6.28

mycat版本号:mycat-1.5.1-RELEASE-20160405120037

3. 主从环境

master上建立复制账号

mysql>GRANT REPLICATION SLAVE ON *.* TO   IDENTIFIED BY ‘rep111‘;

slave上建立同步

mysql>change master to master_host=‘192.168.104.86‘,master_user=‘rep‘,master_password=‘rep111‘, master_log_file=‘mysql_bin.000060‘,master_log_pos=120;

查看状态

4.基于Mycat读写分离配置

schema.xml文件配置

balance为3:所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力switchType为1:默认值,自动切换。
heartbeat:主从切换的心跳语句必须为select user().

a.写测试

shell>mysql -h127.0.0.1 -utest -ptest -P8066

mysql>use TESTDB;

mysql> create table company (id int not null primary key,name varchar(100));
Query OK, 0 rows affected (0.08 sec)

tail -f /usr/local/mycat/logs/mycat.log

可以看到数据是创建在86上面。

那我们再插入一条数据看看是不是还是写入86库上面。

mysql> insert into company(id,name) values(1,‘alibaba‘);
Query OK, 1 row affected (0.06 sec)

同样查看日志还是写往86上面

那现在我们试试读看,是不是会向96拿数据

mysql> select * from company;
+----+---------+
| id | name    |
+----+---------+
|  1 | alibaba |
+----+---------+
1 row in set (0.01 sec)

通过下图可以知道,和我们预想的一样。

从96上查寻一下,数据也同步过来了。

[[email protected] mysql]# mysql -uroot -p222222 -e "select * from db1.company";
Warning: Using a password on the command line interface can be insecure.
+----+---------+
| id | name    |
+----+---------+
|  1 | alibaba |
+----+---------+

b.如果此时86宕机了,会发生什么事情。

[[email protected] src]# systemctl stop mysql

这时我们插入条数据试试。

mysql> insert into company(id,name) values(3,‘tencent‘);
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql> insert into company(id,name) values(3,‘tencent‘);
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    2
Current database: TESTDB
Query OK, 1 row affected (0.03 sec)

数据写往96上面去了。同样查寻也在96上面。

总结:

当写主机192.168.104.86宕机,(只要是没往192.168.104.96写数据,86立马好了,那么还是86写,96读,一但写了数据不管86是否恢复,96都承担读、写。

当读主机192.168.104.96宕机,192.168.104.86承担读、写, 当192.168.104.96恢复,数据写还是在192.168.104.86,读在96。

到此,读写分离,主从切换就完成了。

但好像有一个问题,86宕机,96承担写入,86恢复了,96宕机了,那86如何获得已经写入了96的数据。不像mha会从96上复制binlog来回补。不知道是不是那里没有设置好的原因,欢迎指教。。

时间: 2024-12-11 10:56:28

MyCat的读写分离与主从切换。的相关文章

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

http://blog.csdn.net/zhanglei_16/article/details/50707487 Mycat读写分离.主从切换学习问题一:分表.分库的优缺点,以及分表无法成为主流分表方式:是在将一个大表,在一个db库内,分成多个分表,优点是:分开之后的表,仍然在一个库内,便于查看.管理.缺点:db只能在一个服务器内,不能解决I/O问题,负载集中 分库方式:将一个大表,分布在多个DB中,每个DB只保留一部分数据,所有数据组合起来才是全库的数据.优点:优点是分担IO.负载均衡,可以

mycat读写分离与主从切换

1, 分库分表的优缺点.以及为什么分表方式无法成为主流? 分表:在台服务器上,优点是易维护,类似表分区,缺点是在一台db服务器上,无法分担IO.负载集中. 分库:在多台服务器上,优点是分担IO.负载均衡,缺点是较不易维护.数据统计以及jion操作有些难度. 数据库切分的目的是为了分担IO.负载均衡,分表无法达到最佳的要求,所以无法成为主流. 2, 准备主库 tar -xvf mysql-5.6.12.tar.gz cd mysql-5.6.12 time cmake . -DCMAKE_INST

使用Mycat实现MySQL的分库分表、读写分离、主从切换

Mycat及MySQL实例部署情况:Mycat:IP:10.20.8.57,Port:3310/3311MySQL :db1-M1,IP:10.20.8.126,Port:3306db1-M2,IP:10.20.8.126,Port:3307db2-M1,IP:10.25.80.7,Port:3307架构图如下: 配置Mycatserver.xml: <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server x

redis的主从复制,读写分离,主从切换

当数据量变得庞大的时候,读写分离还是很有必要的.同时避免一个redis服务宕机,导致应用宕机的情况,我们启用sentinel(哨兵)服务,实现主从切换的功能. redis提供了一个master,多个slave的服务. 准备三个redis服务,依次命名文件夹子master,slave1,slave2.这里为在测试机上,不干扰原来的redis服务,我们master使用6000端口. 配置文件(redis.conf) master配置修改端口: port 6000 requirepass 123456

Redis哨兵模式(sentinel)部署记录(主从复制、读写分离、主从切换)

部署环境: CentOS7.5  192.168.94.11 (master) 192.168.94.22 (slave0) 192.168.94.33 (slave1) 192.168.94.44 (slave2) 所有节点都需要安装redis+sentinel [[email protected] ~]# tar xf redis-4.0.11.tar.gz -C /usr/local/src/ [[email protected] ~]# cd /usr/local/src/redis-4

Redis(5)-----初识Redis-----主从复制.读写分离,主从切换(哨兵机制)

当数据量变得庞大的时候,读写分离还是很有必要的.同时避免一个redis服务宕机,导致应用宕机的情况,我们启用sentinel(哨兵)服务,实现主从切换的功能. https://www.cnblogs.com/jaycekon/p/6237562.html 一,主从分离(读写分离,主从复制) 首先我们默认已经安装了redis,然后复制master,slave1,slave2三个redis的文件.并把redis.conf拷贝到多个redis文件夹中来.不干扰原来的redis服务,我们master使用

[转]Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)

Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3)哨兵模式来进行主从替换以及故障恢复. 一.sentinel哨兵模式介绍Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本中.sentinel是redis高可用的解决方案,sentinel系统可以监视一个或者多个redis master服务,以及这些master服务的

Mycat实现读写分离

场景介绍: 第一组:MySQL 普通主从配置(1主1从)情况下,读写分离模式的测试验证MySQL 普通主从配置(1主1从)情况下,自动切换的模式的验证 mycat实现读写分离. 节点宕机切换.

MyCat实现读写分离+分库分表+全局表

前言 mycat功能强大,配置简单,作为数据库中间件,是一个非常优秀的开源产品,关于MyCat的部署安装,可以参考博文:MyCat部署安装. 本博文将展示mycat的如下功能: 读写分离: 分库分表: 全局表: 环境如下: 系统 IP 主机名 服务 Centos 7.5 192.168.20.2 mysql01 MySQL 5.7.24 Centos 7.5 192.168.20.3 mysql02 MySQL 5.7.24 Centos 7.5 192.168.20.3 mysql03 MyS