mysql mycat one_(十五)mysql中间件MyCAT实现

1)拓扑如下和实现目标

4ebaaa0088f59fc4984d902c647693fb.png

写操作:都在master

读操作:在slave1上

当master1挂了,写操作自动切换到master2上

当master2挂了,写操作自动切换到master1上

2)Mycat环境安装jdk:省略

3)下载安装MyCAT

4)配置web服务器连接MyCAT的用户名,密码和数据名

#vim /usr/local/mycat/conf/server.xml 这是web服务器连接mycat的用户名和密码,以及schemas文件对应的名字

123456

testdb

注释以下内容

4)配置MyCAT连接后端数据库相关信息

schema name = testdb 是web服务器连接Mycat看见的数据库

database=“testdb”是真正数据库名

我这里环境是双主一从

:验证后端服务是否可用

writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

select user()

balance属性

balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost 上。

balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1 ->S1 , M2->S2,并且 M1 与 M2 互为主备),正常情况下, M2,S1,S2 都参与 select 语句的负载均衡。

balance="2",所有读操作都随机的在 writeHost、 readhost 上分发。

balance="3", 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有, 1.3 没有。

write type属性

writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .

writeType="1",所有写操作都随机的发送到配置的 writeHost。

writeType="2",没实现。

switch type属性

writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .

writeType="1",所有写操作都随机的发送到配置的 writeHost。

writeType="2",没实现。

5)在master1上给Mycat创建用户

mysql> grant all on testdb.* to mycat@'192.168.1.%' identified by 'Mycat@123';

mysql> flush privileges;

6)启动Mycat

测试mycat上使用能用master创建的账号登录到mysql

mysql -umycat -h192.168.1.31 -pMycat@123

启动mycat

/usr/local/mycat/bin/mycat start

验证

ps -ef | grep mycat

ss -anltup | grep 8066

83b26a50d33b9200e5cc83373893f26b.png

f6990834c69d6e1c3e46001e28ef8c2a.png

7)测试读写分离

slave开启查看日志

mysql>show variables like 'general_log%';

mysql>set global general_log = ON;

在web服务器上连接MyCAT

mysql -h192.168.1.30 -uroot -p123456 -P8066

执行查询语句

mysql> select * from testdb.t1;

在slave1上查看查询日志:/var/lib/mysql/localhost.log

ea768bb75744d35a17ca60e08f31053d.png

说明读在从上面执行

当slave1挂机,读会自动切换到主上面查询

当slave1恢复,读会自动切换到从上面查询

8)测试主主切换

master开启查询日志

mysql>show variables like 'general_log%';

mysql>set global general_log = ON;

在web服务器上执行insert语句

mysql> insert into testdb.t1 values(16,'16');

master1上面有看到插入语句

33d9c8424799266ffde40b57ce7c44e5.png

把master1停止mysql服务

systemctl stop mysqld

在web服务器执行insert语句

mysql> insert into testdb.t1 values(17,'17');

发现插入语句自动切换到master2上面执行

b20623cd4e5dfa4193c591c671e8da28.png

总结:master1由停止服务到正常提供服务又自动加入到mycat监控中

8743b407bca06270470565453655b65b.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值