您的位置:首页 > 其它

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

2016-05-06 14:18 591 查看
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上查寻一下,数据也同步过来了。
[root@web02 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宕机了,会发生什么事情。
[root@web01 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来回补。不知道是不是那里没有设置好的原因,欢迎指教。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  主从切换