mycat1.6 +mysql5.7数据库读写分离+主从复制

登录mycat 命令:mysql -uroot -p123456 -h 192.168.57.98 -P8066

1. 主库只负责读,备库只负责写,一主一备

当备库挂掉时,无法读取数据

当主库挂掉时,无法写数据,但是还能读取数据

第一种情况:当配置为 balance=3;writetype=1;switch=0或者switch=1;

当备库挂掉时,无法读取数据

当主库挂掉时,无法写数据,但是还能读取数据

第二种情况:当配置为balance=3;writetype=1;switch=2时

主库挂掉既不能读也不能写

备库挂掉即能读也能写


配置的文件如下:


有两个参数需要注意,balance和 switchType。其中,balance指的负载均衡类型,目前的取值有4种:

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不负担读压力。

heartbeat 标签指明用于和后端数据库进行心跳检查的语句。

      可以使用两种方式检查:  select user() 或者show slave status

write type

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

writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5以后已经废弃了。

writeType="2",没实现。 -1 表示不自动切换 1 默认值,自动切换 2 基于MySQL 主从同步的状态决定是否切换

switchType指的是切换的模式,目前的取值也有4种:

switchType=’-1’ 表示不自动切换;

switchType=‘1’ 默认值,表示自动切换;

switchType=‘2’ 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status;

switchType='3’基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%’。

2. 一主一备,主备都能读写,主库down掉后 就以从库为准了,就算主库恢复了,还是以从库为准

配置:当配置为 balance=2;writetype=0;switch=1;

    当主库和备库都能读写,当主库和备库随机读,主库down了以从库为准进行读写,当主库恢复后,读还是随机的两台机器,但是写数据以从库为准,无法恢复到从主库进行写了

3. 双主、互为主备

互为主备:只要把slave节点也按照master节点进行配置,就可以实现双向的主从复制。

从库新增用户:grant replication slave,replication client on *.* to 'slave'@'192.168.57.98' identified by 'Zdkx#2021';

从库指定master地址:change master to master_host='192.168.56.46', master_user='slave', master_password='Zdkx#2021', master_port=3306, master_log_file='mysql-bin.000020', master_log_pos=941, master_connect_retry=30;

配置:当配置为 balance=1;writetype=0;switch=1;

schema 配置如下:

4.多主多备,请修改 readhost和writehost数量


你可能感兴趣的:(mycat1.6 +mysql5.7数据库读写分离+主从复制)